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

CA认证

开发平台:

WINDOWS

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /*
  3.  * The contents of this file are subject to the Mozilla Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/MPL/
  7.  * 
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  * 
  13.  * The Original Code is the Netscape security libraries.
  14.  * 
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation.  Portions created by Netscape are 
  17.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  18.  * Rights Reserved.
  19.  * 
  20.  * Contributor(s):
  21.  * 
  22.  * Alternatively, the contents of this file may be used under the
  23.  * terms of the GNU General Public License Version 2 or later (the
  24.  * "GPL"), in which case the provisions of the GPL are applicable 
  25.  * instead of those above.  If you wish to allow use of your 
  26.  * version of this file only under the terms of the GPL and not to
  27.  * allow others to use your version of this file under the MPL,
  28.  * indicate your decision by deleting the provisions above and
  29.  * replace them with the notice and other provisions required by
  30.  * the GPL.  If you do not delete the provisions above, a recipient
  31.  * may use your version of this file under either the MPL or the
  32.  * GPL.
  33.  */
  34. #ifndef __SSM_CONNECT_H__
  35. #define __SSM_CONNECT_H__
  36. #include "ssmdefs.h"
  37. #include "collectn.h"
  38. #include "hashtbl.h"
  39. #include "resource.h"
  40. #include "pkcs11t.h"
  41. #include "plarena.h"
  42. #include "mcom_db.h"
  43. #include "seccomon.h"
  44. #include "secmodt.h"
  45. #include "prinrval.h"
  46. /* Cartman password policy */
  47. #define SSM_MIN_PWD_LEN   0
  48. #define SSM_MAX_PWD_LEN   64
  49. typedef struct SSMConnection SSMConnection;
  50. typedef SSMStatus (*SSMConnectionAuthenticateFunc)(SSMConnection *conn,
  51.    char *nonce);
  52. struct SSMConnection
  53. {
  54.     SSMResource super;
  55.     /*
  56.       ---------------------------------------------
  57.       Generic fields, applicable to all connections
  58.       ---------------------------------------------
  59.     */
  60.    
  61.     /* ### mwelch - children/parent should perhaps be put in subclasses,
  62.        but we may use these in multiple ways in the future */
  63.     /* Parent connection object. If this is a data object, m_parent points
  64.        to the control connection which spawned it. */
  65.     SSMConnection * m_parent;
  66.     /* Child connection objects. If this is a control object, the collection
  67.        is filled with data connection objects. */
  68.     SSMCollection *m_children;
  69. /* The function to call when we want to validate an incoming connection */
  70. SSMConnectionAuthenticateFunc m_auth_func;
  71. };
  72. /* 
  73.  * Information for authenticated tokens. 
  74.  */
  75. #define SSM_MINUTES_WAIT_PASSWORD 10
  76. #define SSM_PASSWORD_WAIT_TIME  (SSM_MINUTES_WAIT_PASSWORD*PR_TicksPerSecond()*60)
  77. #define SSM_NO_PASSWORD         0x99999999
  78. #define SSM_CANCEL_PASSWORD     0x99999998
  79. struct _SSM_TokenInfoStr {
  80.     PK11SlotInfo * slot;   
  81.     PRInt32 tokenID;
  82.     char * encrypted;
  83.     PRInt32 encryptedLen;
  84.     PK11SymKey * symKey;
  85. };
  86. typedef struct _SSM_TokenInfoStr SSM_TokenInfo;
  87. /* Password callback */
  88. char * SSM_GetPasswdCallback(PK11SlotInfo *slot, PRBool retry,  void *arg);
  89. PRBool SSM_VerifyPasswdCallback(PK11SlotInfo * slot, void * arg);
  90. #ifdef ALLOW_STANDALONE
  91. /* For standalone mode only */
  92. char * SSM_StandaloneGetPasswdCallback(PK11SlotInfo *slot, PRBool retry,  
  93.                                        void *arg);
  94. PRBool SSM_StandaloneVerifyPasswdCallback(PK11SlotInfo * slot, void * arg);
  95. #endif
  96. char * SSM_GetAuthentication(PK11SlotInfo * slot, PRBool retry, PRBool init, 
  97. SSMResource * conn);
  98. SSMStatus SSM_SetUserPassword(PK11SlotInfo * slot, SSMResource * ct);
  99. SSMStatus SSMConnection_Create(void *arg, SSMControlConnection * conn, 
  100.                               SSMResource **res);
  101. SSMStatus SSMConnection_Init(SSMControlConnection *ctrl, 
  102.     SSMConnection *conn, SSMResourceType type);
  103. SSMStatus SSMConnection_Shutdown(SSMResource *conn, SSMStatus status);
  104. SSMStatus SSMConnection_Destroy(SSMResource *conn, PRBool doFree);
  105. void SSMConnection_Invariant(SSMConnection *conn);
  106. SSMStatus SSMConnection_AttachChild(SSMConnection *parent, SSMConnection *child);
  107. SSMStatus SSMConnection_DetachChild(SSMConnection *parent, SSMConnection *child);
  108. SSMStatus SSMConnection_GetAttrIDs(SSMResource *res,
  109.                                   SSMAttributeID **ids,
  110.                                   PRIntn *count);
  111. SSMStatus SSMConnection_SetAttr(SSMResource *res,
  112.                                SSMAttributeID attrID,
  113.                                SSMAttributeValue *value);
  114. SSMStatus SSMConnection_GetAttr(SSMResource *res,
  115.                                 SSMAttributeID attrID,
  116.                                 SSMResourceAttrType attrType,
  117.                                 SSMAttributeValue *value);
  118. /* Given a RID and a proposed nonce, see if the connection exists
  119.    and if the nonce matches. */
  120. SSMStatus SSMConnection_Authenticate(SSMConnection *conn, char *nonce);
  121. /* Function to encrypt password to storing it in Cartman */
  122. SSMStatus SSM_EncryptPasswd(PK11SlotInfo * slot, char * passwd, 
  123.                             SSM_TokenInfo ** info);
  124. SSMStatus SSMControlConnection_WaitPassword(SSMConnection * conn, 
  125.                                            PRInt32 key, char ** str);
  126. SSMStatus SSM_AskUserPassword(SSMResource * conn, 
  127.                              PK11SlotInfo * slot, PRInt32 retry, PRBool init);
  128. /* Function returning user prompt */
  129. char * SSM_GetPrompt(PK11SlotInfo *slot, PRBool retry, PRBool init);
  130. #define XP_SEC_ERROR_PWD "Successive login failures may disable this card or database. Password is invalid. Retry?n %sn"
  131. #define XP_SEC_ENTER_PWD "Please enter the password or the pin forn%s."
  132. #define XP_SEC_SET_PWD "Please enter the password or the pin forn%s. Remember this password, you will need nit to access your certificates."
  133. #endif