ssldlgs.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:8k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. #ifndef __SSM_SSLDLGS_H__
  34. #define __SSM_SSLDLGS_H__
  35. #include "textgen.h"
  36. #include "minihttp.h"
  37. #include "sslconn.h"
  38. #include "certt.h"
  39. /*
  40.  * Function: SSMStatus SSM_ServerCertKeywordHandler()
  41.  * Purpose: keyword handler for "_server_cert_info"
  42.  *          performs substitution for cert info data
  43.  *          syntax: {_server_cert_info cert_format,wrapper}
  44.  *                  cert_format: either simple_cert_format (0) or
  45.  *                               pretty_cert_format (1)
  46.  * Arguments and return values:
  47.  * - cx: SSMTextGenContext to be manipulated
  48.  * - returns: SSM_SUCCESS if successful; error code otherwise
  49.  *
  50.  */
  51. SSMStatus SSM_ServerCertKeywordHandler(SSMTextGenContext* cx);
  52. /*
  53.  * Function: SSMStatus SSM_FormatCert()
  54.  * Purpose: creates a UnicodeString that is used in expanding the keyword
  55.  *          "_server_cert_info" from the given cert
  56.  *          this function provides info on hostname, issuer name, and validity
  57.  *          period.  Any UI dialog that uses a subset of this info can use
  58.  *          this function.
  59.  * Arguments and return values
  60.  * - cert: server cert to be manipulated
  61.  * - fmt:  message format (shouldn't be NULL)
  62.  * - result: resulting expanded string (shouldn't be NULL)
  63.  *
  64.  * Note: note that this is very similar to a _Print method.  In fact,
  65.  *  this could be turned into SSMResourceCert_Print() method w/o too many
  66.  *  changes.
  67.  */
  68. SSMStatus SSM_FormatCert(CERTCertificate* cert, char* fmt, 
  69.  char** result);
  70. /*
  71.  * Function: SSMStatus SSM_HTTPBadClientAuthButtonHandler()
  72.  * Purpose: command handler for "BCAButton" (button handling
  73.  *          for bad client auth dialogs)
  74.  * Arguments and return values:
  75.  * - req: request object to be manipulated
  76.  * - returns: SSM_SUCCESS if successful; error code otherwise
  77.  *
  78.  * Note: we use this command handler instead of the default handler
  79.  *       to block the SSL threads while this dialog is up.
  80.  */
  81. SSMStatus SSM_HTTPBadClientAuthButtonHandler(HTTPRequest* req);
  82. /*
  83.  * Function: SSMStatus SSM_SSLMakeClientAuthDialog()
  84.  * Purpose: generates the client auth cert selection dialog and receives
  85.  *          a chosen cert nickname from the user
  86.  * Arguments and return values:
  87.  * - conn: SSL connection object to be manipulated; m_UIInfo.chosenNickname
  88.  *         will be populated as a result of the dialog
  89.  * - returns: SSM_SUCCESS if successful; otherwise error code
  90.  *
  91.  * Note: (design issue) how do we handle "cancel" event?  Do we display the
  92.  *       "no cert" dialog and exit, or we just exit?  Probably we just exit.
  93.  */
  94. SSMStatus SSM_SSLMakeClientAuthDialog(SSMSSLDataConnection* conn);
  95. /*
  96.  * Function: SSMStatus SSM_ClientAuthCertListKeywordHandler()
  97.  * Purpose: formats the client cert list according to the given format
  98.  *          for the cert selection dialog
  99.  *          syntax: {_client_auth_certList prefix,wrapper,suffix}
  100.  *                  where wrapper is for the individual cert
  101.  * Arguments and return values:
  102.  * - cx: text context to be manipulated
  103.  * - returns: SSM_SUCCESS if successful; error code otherwise
  104.  *
  105.  * Note:
  106.  */
  107. SSMStatus SSM_ClientAuthCertListKeywordHandler(SSMTextGenContext* cx);
  108. /*
  109.  * Function: SSMStatus SSM_HTTPClientAuthButtonHandler()
  110.  * Purpose: handles the user input for buttons in cert selection dialog
  111.  * URL: "CAButton?baseRef=windowclose_doclose_js&target={0}&chosen=0&do_ok={text_ok}" or "CAButton?...&target={0}&do_cancel={text_cancel}", etc.
  112.  */
  113. SSMStatus SSM_HTTPClientAuthButtonHandler(HTTPRequest* req);
  114. SECStatus SSM_SSLMakeCertExpiredDialog(CERTCertificate* cert,
  115.        SSMSSLDataConnection* conn);
  116. SECStatus SSM_SSLMakeCertBadDomainDialog(CERTCertificate* cert,
  117.  SSMSSLDataConnection* conn);
  118. SSMStatus SSM_ClientAuthCertSelectionButtonHandler(HTTPRequest* req);
  119. SSMStatus SSM_ServerAuthFailureButtonHandler(HTTPRequest* req);
  120. SSMStatus SSM_ServerAuthUnknownIssuerButtonHandler(HTTPRequest* req);
  121. SSMStatus SSM_CurrentTimeKeywordHandler(SSMTextGenContext* cx);
  122. /*
  123.  * Function: SSMStatus SSM_ServerAuthDomainKeywordHandler()
  124.  * Purpose: formats the domain name mismatch warning string for server auth
  125.  *          syntax: {_server_cert_domain_info bad_domain_wrapper}
  126.  * Arguments and return values
  127.  * - cx: text context to be manipulated
  128.  * - returns: SSM_SUCCESS if successful; error code otherwise
  129.  *
  130.  * Note: I wrote a separate keyword handler although there is a generic
  131.  *       server cert info keyword handler; this is the only place where
  132.  *       one needs the URL hostname and it turns out to be simpler and more
  133.  *       efficient to write a separate handler for this purpose
  134.  */
  135. SSMStatus SSM_ServerAuthDomainNameKeywordHandler(SSMTextGenContext* cx);
  136. /*
  137.  * Function: SSMStatus SSM_VerifyServerCertKeywordHandler()
  138.  * Purpose: handles the nickname substitution for keyword 
  139.  *          "_verify_server_cert"
  140.  * Arguments and return values:
  141.  * - cx: text context to be manipulated
  142.  * - returns: SSM_SUCCESS if successful; error code otherwise
  143.  *
  144.  * Note: since this only comes from the server auth failure dialog, we know
  145.  *       beforehand that the cert is bad (thus no need really to verify the
  146.  *       cert).  This might change if we want to print out the nature of the
  147.  *       error.  Also, if we want to consolidate this view cert window
  148.  *       handling (it's not clear how we can do that because we have different
  149.  *       certs and different targets for different cases), this function
  150.  *       may have to be modified.
  151.  */
  152. SSMStatus SSM_VerifyServerCertKeywordHandler(SSMTextGenContext* cx);
  153. /*
  154.  * Function: SSMStatus SSM_PrettyFormatCert()
  155.  * Purpose: formats the cert info for "View Security Certificate" dialogs
  156.  *          this function provides info on issuer name, serial number, 
  157.  *          validity period, finger print, and comment.  Any dialog that 
  158.  *          needs a subset of the parameters can use this function to format
  159.  *          the cert
  160.  * Arguments and return values:
  161.  * - cert: cert to be presented
  162.  * - fmt: MessageFormat object
  163.  * - result: UnicodeString to be returned as a result of the operation
  164.  * - returns: SSM_SUCCESS if successful; error code otherwise
  165.  *
  166.  * Note: this provides no information on whether the cert is valid or not
  167.  *       lot of the code is borrowed from CERT_HTMLInfo() from NSS
  168.  *       we also access lots of internal cert fields but can't help it...
  169.  */
  170. SSMStatus SSM_PrettyFormatCert(CERTCertificate* cert, char* fmt,
  171.        char** result, PRBool addIssuerLink);
  172. SECStatus SSM_SSLMakeUnknownIssuerDialog(CERTCertificate* cert,
  173.  SSMSSLDataConnection* conn);
  174. SSMStatus SSM_HTTPUnknownIssuerStep1ButtonHandler(HTTPRequest* req);
  175. #endif /* __SSM_SSLDLGS_H__ */