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

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 __SSMDEFS_H__
  35. #define __SSMDEFS_H__
  36. /* Basic type definitions for both client and server. */
  37. typedef long CMInt32;
  38. typedef unsigned long CMUint32;
  39. typedef long SSMResourceID;
  40. typedef int SSMStatus;
  41. #define PSM_PORT                        11111
  42. #define PSM_DATA_PORT                   11113 /* needs to be removed */
  43.  
  44. typedef enum _CMTStatus {
  45.   CMTFailure = -1,
  46.   CMTSuccess = 0
  47. } CMTStatus;
  48. typedef enum {
  49.    CM_FALSE = 0,
  50.    CM_TRUE = 1
  51. } CMBool;
  52.  
  53. typedef struct CMTItemStr {
  54.   CMUint32 type;
  55.   unsigned char *data;
  56.   unsigned int len;
  57. } CMTItem;
  58. /* A length-encoded string. */
  59. struct _SSMString {
  60.   CMUint32 m_length;
  61.   char m_data;
  62. };
  63. typedef struct _SSMString SSMString;
  64. #define SSM_PROTOCOL_VERSION 0x00000051
  65. #define SSM_INVALID_RESOURCE 0x00000000
  66. #define SSM_GLOBAL_RESOURCE  0x00000001
  67. #define SSM_SESSION_RESOURCE 0x00000002
  68. /* Message category flags */
  69. #define SSM_REQUEST_MESSAGE     0x10000000
  70. #define SSM_REPLY_OK_MESSAGE    0x20000000
  71. #define SSM_REPLY_ERR_MESSAGE   0x30000000
  72. #define SSM_EVENT_MESSAGE       0x40000000
  73. /* Message types */
  74. #define SSM_DATA_CONNECTION   0x00001000
  75. #define SSM_OBJECT_SIGNING    0x00002000
  76. #define SSM_RESOURCE_ACTION   0x00003000
  77. #define SSM_CERT_ACTION       0x00004000
  78. #define SSM_PKCS11_ACTION     0x00005000
  79. #define SSM_CRMF_ACTION       0x00006000
  80. #define SSM_FORMSIGN_ACTION   0x00007000
  81. #define SSM_LOCALIZED_TEXT    0x00008000
  82. #define SSM_HELLO_MESSAGE     0x00009000
  83. #define SSM_SECURITY_ADVISOR  0x0000a000
  84. #define SSM_SEC_CFG_ACTION    0x0000b000
  85. #define SSM_KEYGEN_TAG        0x0000c000
  86. #define SSM_PREF_ACTION       0x0000d000
  87. #define SSM_MISC_ACTION       0x0000f000
  88. /* Data connection messages subtypes */ 
  89. #define SSM_SSL_CONNECTION      0x00000100
  90. #define SSM_PKCS7DECODE_STREAM  0x00000200
  91. #define SSM_PKCS7ENCODE_STREAM  0x00000300
  92. #define SSM_HASH_STREAM         0x00000400
  93. #define SSM_TLS_CONNECTION      0x00000500
  94. #define SSM_PROXY_CONNECTION    0x00000600
  95. /* Object signing message subtypes */
  96. #define SSM_VERIFY_RAW_SIG      0x00000100
  97. #define SSM_VERIFY_DETACHED_SIG 0x00000200
  98. #define SSM_CREATE_SIGNED       0x00000300
  99. #define SSM_CREATE_ENCRYPTED    0x00000400
  100. /* Resource access messages subtypes  */
  101. #define SSM_CREATE_RESOURCE           0x00000100
  102. #define SSM_DESTROY_RESOURCE          0x00000200
  103. #define SSM_GET_ATTRIBUTE             0x00000300
  104. #define SSM_CONSERVE_RESOURCE         0x00000400
  105. #define SSM_DUPLICATE_RESOURCE        0x00000500
  106. #define SSM_SET_ATTRIBUTE             0x00000600
  107. #define SSM_TLS_STEPUP                0x00000700
  108. #define SSM_PROXY_STEPUP              0x00000800
  109. /* Further specification for resource access messages */
  110. #define SSM_SSLSocket_Status    0x00000010
  111. #define SSM_NO_ATTRIBUTE        0x00000000
  112. #define SSM_NUMERIC_ATTRIBUTE   0x00000010
  113. #define SSM_STRING_ATTRIBUTE    0x00000020
  114. #define SSM_RID_ATTRIBUTE       0x00000030
  115. #define SSM_PICKLE_RESOURCE             0x00000010
  116. #define SSM_UNPICKLE_RESOURCE           0x00000020
  117. #define SSM_PICKLE_SECURITY_STATUS      0x00000030
  118. /* Certificate access message subtypes */
  119. #define SSM_IMPORT_CERT         0x00000100
  120. #define SSM_VERIFY_CERT         0x00000200
  121. #define SSM_FIND_BY_NICKNAME    0x00000300
  122. #define SSM_FIND_BY_KEY         0x00000400
  123. #define SSM_FIND_BY_EMAILADDR   0x00000500
  124. #define SSM_ADD_TO_DB           0x00000600
  125. #define SSM_DECODE_CERT         0x00000700
  126. #define SSM_MATCH_USER_CERT     0x00000800
  127. #define SSM_DESTROY_CERT        0x00000900
  128. #define SSM_DECODE_TEMP_CERT    0x00000a00
  129. #define SSM_REDIRECT_COMPARE    0x00000b00
  130. #define SSM_DECODE_CRL          0x00000c00
  131. #define SSM_EXTENSION_VALUE     0x00000d00
  132. #define SSM_HTML_INFO           0x00000e00
  133. /* message subtypes used for KEYGEN form tag */
  134. #define SSM_GET_KEY_CHOICE       0x00000100
  135. #define SSM_KEYGEN_START         0x00000200
  136. #define SSM_KEYGEN_TOKEN         0x00000300
  137. #define SSM_KEYGEN_PASSWORD      0x00000400
  138. #define SSM_KEYGEN_DONE          0x00000500
  139. #define SSM_CREATE_KEY_PAIR    0x00000100
  140. #define SSM_FINISH_KEY_GEN     0x00000200
  141. #define SSM_ADD_NEW_MODULE     0x00000300
  142. #define SSM_DEL_MODULE         0x00000400
  143. #define SSM_LOGOUT_ALL         0x00000500
  144. #define SSM_ENABLED_CIPHERS    0x00000600
  145. #define SSM_CREATE_CRMF_REQ    0x00000100
  146. #define SSM_DER_ENCODE_REQ     0x00000200
  147. #define SSM_PROCESS_CMMF_RESP  0x00000300
  148. #define SSM_CHALLENGE          0x00000400
  149. #define SSM_SIGN_TEXT  0x00000100
  150. /* Security Config subtypes */
  151. #define SSM_ADD_CERT_TO_TEMP_DB     0x00000100
  152. #define SSM_ADD_TEMP_CERT_TO_DB     0x00000200
  153. #define SSM_DELETE_PERM_CERTS       0x00000300
  154. #define SSM_FIND_CERT_KEY           0x00000400
  155. #define SSM_GET_CERT_PROP_BY_KEY    0x00000500
  156. #define SSM_CERT_INDEX_ENUM         0x00000600
  157. /* subcategories for SSM_FIND_CERT_KEY and SSM_CERT_INDEX_ENUM */
  158. #define SSM_FIND_KEY_BY_NICKNAME    0x00000010
  159. #define SSM_FIND_KEY_BY_EMAIL_ADDR  0x00000020
  160. #define SSM_FIND_KEY_BY_DN          0x00000030
  161. /* subcategories for SSM_GET_CERT_PROP_BY_KEY */
  162. #define SSM_SECCFG_GET_NICKNAME      0x00000010
  163. #define SSM_SECCFG_GET_EMAIL_ADDR    0x00000020
  164. #define SSM_SECCFG_GET_DN            0x00000030
  165. #define SSM_SECCFG_GET_TRUST         0x00000040
  166. #define SSM_SECCFG_CERT_IS_PERM      0x00000050
  167. #define SSM_SECCFG_GET_NOT_BEFORE    0x00000060
  168. #define SSM_SECCFG_GET_NOT_AFTER     0x00000070
  169. #define SSM_SECCFG_GET_SERIAL_NO     0x00000080
  170. #define SSM_SECCFG_GET_ISSUER        0x00000090
  171. #define SSM_SECCFG_GET_ISSUER_KEY    0x000000a0
  172. #define SSM_SECCFG_GET_SUBJECT_NEXT  0x000000b0
  173. #define SSM_SECCFG_GET_SUBJECT_PREV  0x000000c0
  174. /* Misc requests */
  175. #define SSM_MISC_GET_RNG_DATA      0x00000100
  176. #define SSM_MISC_PUT_RNG_DATA      0x00000200
  177. #define SSM_MISC_SDR_ENCRYPT       0x00000300
  178. #define SSM_MISC_SDR_DECRYPT       0x00000400
  179. #define SSM_MISC_UI                0x00000500
  180. /* specific UI requests */
  181. #define SSM_UI_CHANGE_PASSWORD     0x00000010
  182. #define SSM_SDR_ENCRYPT_REQUEST 
  183.   (SSM_REQUEST_MESSAGE|SSM_MISC_ACTION|SSM_MISC_SDR_ENCRYPT)
  184. #define SSM_SDR_ENCRYPT_REPLY 
  185.   (SSM_REPLY_OK_MESSAGE|SSM_MISC_ACTION|SSM_MISC_SDR_ENCRYPT)
  186. #define SSM_SDR_DECRYPT_REQUEST 
  187.   (SSM_REQUEST_MESSAGE|SSM_MISC_ACTION|SSM_MISC_SDR_DECRYPT)
  188. #define SSM_SDR_DECRYPT_REPLY 
  189.   (SSM_REPLY_OK_MESSAGE|SSM_MISC_ACTION|SSM_MISC_SDR_DECRYPT)
  190. /* Type masks for message types */
  191. #define SSM_CATEGORY_MASK   0xF0000000
  192. #define SSM_TYPE_MASK       0x0000F000
  193. #define SSM_SUBTYPE_MASK    0x00000F00
  194. #define SSM_SPECIFIC_MASK   0x000000F0
  195. typedef struct SSMAttributeValue {
  196.   CMUint32 type;
  197.   union {
  198.     SSMResourceID rid;
  199.     CMTItem string;
  200.     CMInt32 numeric;
  201.   } u;
  202. } SSMAttributeValue;
  203. typedef enum {
  204.   rsaEnc, rsaDualUse, rsaSign, rsaNonrepudiation, rsaSignNonrepudiation,
  205.   dhEx, dsaSignNonrepudiation, dsaSign, dsaNonrepudiation, invalidKeyGen
  206. } SSMKeyGenType;
  207. typedef enum {
  208.   ssmUnknownPolicy= -1,ssmDomestic=0, ssmExport=1, ssmFrance=2
  209. } SSMPolicyType;
  210. /* These are the localized strings that PSM can feed back to 
  211.  * the plug-in.  These will initially be used by the plug-in for 
  212.  * JavaScript purposes to pop up alert/confirm dialogs that would 
  213.  * cause nightmares to do if we sent UI events.
  214.  */
  215. typedef enum {
  216.   SSM_STRING_BAD_PK11_LIB_PARAM,
  217.   SSM_STRING_BAD_PK11_LIB_PATH,
  218.   SSM_STRING_ADD_MOD_SUCCESS,
  219.   SSM_STRING_DUP_MOD_FAILURE,
  220.   SSM_STRING_ADD_MOD_FAILURE,
  221.   SSM_STRING_BAD_MOD_NAME,
  222.   SSM_STRING_EXT_MOD_DEL,
  223.   SSM_STRING_INT_MOD_DEL,
  224.   SSM_STRING_MOD_DEL_FAIL,
  225.   SSM_STRING_ADD_MOD_WARN,
  226.   SSM_STRING_MOD_PROMPT,
  227.   SSM_STRING_DLL_PROMPT,
  228.   SSM_STRING_DEL_MOD_WARN,
  229.   SSM_STRING_INVALID_CRL,
  230.   SSM_STRING_INVALID_CKL,
  231.   SSM_STRING_ROOT_CKL_CERT_NOT_FOUND,
  232.   SSM_STRING_BAD_CRL_SIGNATURE,
  233.   SSM_STRING_BAD_CKL_SIGNATURE,
  234.   SSM_STRING_ERR_ADD_CRL,
  235.   SSM_STRING_ERR_ADD_CKL,
  236.   SSM_STRING_JAVASCRIPT_DISABLED
  237. } SSMLocalizedString;
  238. /* Event types */
  239. #define SSM_UI_EVENT                    0x00001000
  240. #define SSM_TASK_COMPLETED_EVENT        0x00002000
  241. #define SSM_FILE_PATH_EVENT             0x00003000
  242. #define SSM_PROMPT_EVENT                0x00004000
  243. #define SSM_AUTH_EVENT                  0x00007000
  244. #define SSM_SAVE_PREF_EVENT             0x00008000
  245. #define SSM_MISC_EVENT                  0x0000f000
  246. /* Flags used in Create SSL Data request */
  247. #define SSM_REQUEST_SSL_DATA_SSL         0x00000001
  248. #define SSM_REQUEST_SSL_DATA_PROXY       0x00000002
  249. #define SSM_REQUEST_SSL_CONNECTION_MASK  0x00000003
  250. /* Create typedefs for the various #defines */
  251. typedef CMUint32 SSMMessageCategory;
  252. typedef CMUint32 SSMMessageType;
  253. typedef CMUint32 SSMDataConnectionSType;
  254. typedef CMUint32 SSMObjSignSType;
  255. typedef CMUint32 SSMResourceAccessSType;
  256. typedef CMUint32 SSMCreateResource;
  257. typedef CMUint32 SSMResourceAttrType;
  258. typedef CMUint32 SSMResourceConsv;
  259. typedef CMUint32 SSMCertAccessSType;
  260. typedef CMUint32 SSMKeyGenTagProcessType;
  261. typedef CMUint32 SSMPKCS11Actions;
  262. typedef CMUint32 SSMCRMFAction;
  263. typedef CMUint32 SSMFormSignAction;
  264. typedef CMUint32 SSMSecCfgAction;
  265. typedef CMUint32 SSMSecCfgFindByType;
  266. typedef CMUint32 SSMSecCfgGetCertPropType;
  267. typedef CMUint32 SSMMiscRequestType;
  268. typedef CMUint32 SSMMessageMaskType;
  269. typedef CMUint32 SSMEventType;
  270. typedef CMUint32 SSMSSLConnectionRequestType;
  271. /*
  272.  * This string is version that can be used to assemble any
  273.  * version information by the apllication using the protocol 
  274.  * library.
  275.  */
  276. extern char SSMVersionString[];
  277. #ifdef __cplusplus
  278. extern "C" {
  279. char * SSM_GetVersionString(void);
  280. #endif
  281. #ifdef __cplusplus
  282. }
  283. #endif
  284. /* What type of client */
  285. typedef enum
  286. {
  287.     SSM_NOINFO,
  288.     SSM_COMPOSE,
  289.     SSM_MAIL_MESSAGE,
  290.     SSM_NEWS_MESSAGE,
  291.     SSM_SNEWS_MESSAGE,
  292.     SSM_BROWSER
  293. } SSMClientType;
  294. #endif /* __SSMDEFS_H__ */