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

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.  * Definition of Security Module Data Structure. There is a separate data
  34.  * structure for each loaded PKCS #11 module.
  35.  */
  36. #ifndef _SECMODT_H_
  37. #define _SECMODT_H_ 1
  38. /* PKCS11 needs to be included */
  39. typedef struct SECMODModuleStr SECMODModule;
  40. typedef struct SECMODModuleListStr SECMODModuleList;
  41. typedef struct SECMODListLockStr SECMODListLock; /* defined in secmodi.h */
  42. typedef struct PK11SlotInfoStr PK11SlotInfo; /* defined in secmodti.h */
  43. typedef struct PK11PreSlotInfoStr PK11PreSlotInfo; /* defined in secmodti.h */
  44. typedef struct PK11SymKeyStr PK11SymKey; /* defined in secmodti.h */
  45. typedef struct PK11ContextStr PK11Context; /* defined in secmodti.h */
  46. typedef struct PK11SlotListStr PK11SlotList;
  47. typedef struct PK11SlotListElementStr PK11SlotListElement;
  48. typedef struct PK11RSAGenParamsStr PK11RSAGenParams;
  49. typedef unsigned long SECMODModuleID;
  50. typedef struct PK11DefaultArrayEntryStr PK11DefaultArrayEntry;
  51. struct SECMODModuleStr {
  52.     PRArenaPool *arena;
  53.     PRBool internal; /* true of internally linked modules, false
  54.  * for the loaded modules */
  55.     PRBool loaded; /* Set to true if module has been loaded */
  56.     PRBool isFIPS; /* Set to true if module is finst internal */
  57.     char *dllName; /* name of the shared library which implements
  58.  * this module */
  59.     char *commonName; /* name of the module to display to the user */
  60.     void *library; /* pointer to the library. opaque. used only by
  61.  * pk11load.c */
  62.     void *functionList; /* The PKCS #11 function table */
  63.     void *refLock; /* only used pk11db.c */
  64.     int refCount; /* Module reference count */
  65.     PK11SlotInfo **slots; /* array of slot points attatched to this mod*/
  66.     int slotCount; /* count of slot in above array */
  67.     PK11PreSlotInfo *slotInfo; /* special info about slots default settings */
  68.     int slotInfoCount;  /* count */
  69.     SECMODModuleID moduleID; /* ID so we can find this module again */
  70.     PRBool isThreadSafe;
  71.     unsigned long ssl[2]; /* SSL cipher enable flags */
  72. };
  73. struct SECMODModuleListStr {
  74.     SECMODModuleList *next;
  75.     SECMODModule *module;
  76. };
  77. struct PK11SlotListStr {
  78.     PK11SlotListElement *head;
  79.     PK11SlotListElement *tail;
  80.     void *lock;
  81. };
  82. struct PK11SlotListElementStr {
  83.     PK11SlotListElement *next;
  84.     PK11SlotListElement *prev;
  85.     PK11SlotInfo *slot;
  86.     int refCount;
  87. };
  88. struct PK11RSAGenParamsStr {
  89.     int keySizeInBits;
  90.     unsigned long pe;
  91. };
  92. /*
  93.  * Entry into the Array which lists all the legal bits for the default flags
  94.  * in the slot, their definition, and the PKCS #11 mechanism the represent
  95.  * Always Statically allocated. 
  96.  */
  97. struct PK11DefaultArrayEntryStr {
  98.     char *name;
  99.     unsigned long flag;
  100.     unsigned long mechanism; /* this is a long so we don't include the 
  101.       * whole pkcs 11 world to use this header */
  102. };
  103. #define SECMOD_RSA_FLAG  0x00000001L
  104. #define SECMOD_DSA_FLAG  0x00000002L
  105. #define SECMOD_RC2_FLAG  0x00000004L
  106. #define SECMOD_RC4_FLAG  0x00000008L
  107. #define SECMOD_DES_FLAG  0x00000010L
  108. #define SECMOD_DH_FLAG   0x00000020L
  109. #define SECMOD_FORTEZZA_FLAG 0x00000040L
  110. #define SECMOD_RC5_FLAG 0x00000080L
  111. #define SECMOD_SHA1_FLAG 0x00000100L
  112. #define SECMOD_MD5_FLAG 0x00000200L
  113. #define SECMOD_MD2_FLAG 0x00000400L
  114. #define SECMOD_SSL_FLAG 0x00000800L
  115. #define SECMOD_TLS_FLAG 0x00001000L
  116. /* reserved bit for future, do not use */
  117. #define SECMOD_RESERVED_FLAG    0X08000000L
  118. #define SECMOD_FRIENDLY_FLAG 0x10000000L
  119. #define SECMOD_RANDOM_FLAG 0x80000000L
  120. /* need to make SECMOD and PK11 prefixes consistant. */
  121. #define PK11_OWN_PW_DEFAULTS 0x20000000L
  122. #define PK11_DISABLE_FLAG    0x40000000L
  123. /* FAKE PKCS #11 defines */
  124. #define CKM_FAKE_RANDOM       0x80000efeL
  125. #define CKM_INVALID_MECHANISM 0xffffffffL
  126. #define CKA_DIGEST            0x81000000L
  127. #define CK_INVALID_KEY 0
  128. #define CK_INVALID_SESSION 0
  129. /* Cryptographic module types */
  130. #define SECMOD_EXTERNAL 0 /* external module */
  131. #define SECMOD_INTERNAL 1 /* internal default module */
  132. #define SECMOD_FIPS 2 /* internal fips module */
  133. /*
  134.  * What is the origin of a given Key. Normally this doesn't matter, but
  135.  * the fortezza code needs to know if it needs to invoke the SSL3 fortezza
  136.  * hack.
  137.  */
  138. typedef enum {
  139. PK11_OriginNULL, /* There is not key, it's a null SymKey */
  140. PK11_OriginDerive, /* Key was derived from some other key */
  141. PK11_OriginGenerated, /* Key was generated (also PBE keys) */
  142. PK11_OriginFortezzaHack,/* Key was marked for fortezza hack */
  143. PK11_OriginUnwrap /* Key was unwrapped or decrypted */
  144. } PK11Origin;
  145. /* PKCS #11 disable reasons */
  146. typedef enum {
  147.     PK11_DIS_NONE = 0,
  148.     PK11_DIS_USER_SELECTED,
  149.     PK11_DIS_COULD_NOT_INIT_TOKEN,
  150.     PK11_DIS_TOKEN_VERIFY_FAILED,
  151.     PK11_DIS_TOKEN_NOT_PRESENT
  152. } PK11DisableReasons;
  153. /* function pointer type for password callback function.
  154.  * This type is passed in to PK11_SetPasswordFunc() 
  155.  */
  156. typedef char *(*PK11PasswordFunc)(PK11SlotInfo *slot, PRBool retry, void *arg);
  157. typedef PRBool (*PK11VerifyPasswordFunc)(PK11SlotInfo *slot, void *arg);
  158. typedef PRBool (*PK11IsLoggedInFunc)(PK11SlotInfo *slot, void *arg);
  159. #endif /*_SECMODT_H_ */