OLD | NEW |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 /* | 4 /* |
5 * This file defines the types in the libpkix API. | 5 * This file defines the types in the libpkix API. |
6 * XXX Maybe we should specify the API version number in all API header files | 6 * XXX Maybe we should specify the API version number in all API header files |
7 * | 7 * |
8 */ | 8 */ |
9 | 9 |
10 #ifndef _PKIXT_H | 10 #ifndef _PKIXT_H |
(...skipping 28 matching lines...) Expand all Loading... |
39 * | 39 * |
40 * Please refer to libpkix Programmer's Guide for more details. | 40 * Please refer to libpkix Programmer's Guide for more details. |
41 */ | 41 */ |
42 | 42 |
43 /* Version | 43 /* Version |
44 * | 44 * |
45 * These macros specify the major and minor version of the libpkix API defined | 45 * These macros specify the major and minor version of the libpkix API defined |
46 * by this header file. | 46 * by this header file. |
47 */ | 47 */ |
48 | 48 |
49 #define PKIX_MAJOR_VERSION ((PKIX_UInt32) 0) | 49 #define PKIX_MAJOR_VERSION ((PKIX_UInt32)0) |
50 #define PKIX_MINOR_VERSION ((PKIX_UInt32) 3) | 50 #define PKIX_MINOR_VERSION ((PKIX_UInt32)3) |
51 | 51 |
52 /* Maximum minor version | 52 /* Maximum minor version |
53 * | 53 * |
54 * This macro is used to specify that the caller wants the largest minor | 54 * This macro is used to specify that the caller wants the largest minor |
55 * version available. | 55 * version available. |
56 */ | 56 */ |
57 | 57 |
58 #define PKIX_MAX_MINOR_VERSION ((PKIX_UInt32) 4000000000) | 58 #define PKIX_MAX_MINOR_VERSION ((PKIX_UInt32)4000000000) |
59 | 59 |
60 /* Define Cert Store type for database access */ | 60 /* Define Cert Store type for database access */ |
61 #define PKIX_STORE_TYPE_NONE 0 | 61 #define PKIX_STORE_TYPE_NONE 0 |
62 #define PKIX_STORE_TYPE_PK11 1 | 62 #define PKIX_STORE_TYPE_PK11 1 |
63 | 63 |
64 /* Portable Code (PC) data types | 64 /* Portable Code (PC) data types |
65 * | 65 * |
66 * These types are used to perform the primary operations of this library: | 66 * These types are used to perform the primary operations of this library: |
67 * building and validating chains of X.509 certificates. | 67 * building and validating chains of X.509 certificates. |
68 */ | 68 */ |
69 | 69 |
70 typedef struct PKIX_ErrorStruct PKIX_Error; | 70 typedef struct PKIX_ErrorStruct PKIX_Error; |
71 typedef struct PKIX_ProcessingParamsStruct PKIX_ProcessingParams; | 71 typedef struct PKIX_ProcessingParamsStruct PKIX_ProcessingParams; |
72 typedef struct PKIX_ValidateParamsStruct PKIX_ValidateParams; | 72 typedef struct PKIX_ValidateParamsStruct PKIX_ValidateParams; |
73 typedef struct PKIX_ValidateResultStruct PKIX_ValidateResult; | 73 typedef struct PKIX_ValidateResultStruct PKIX_ValidateResult; |
74 typedef struct PKIX_ResourceLimitsStruct PKIX_ResourceLimits; | 74 typedef struct PKIX_ResourceLimitsStruct PKIX_ResourceLimits; |
75 typedef struct PKIX_BuildResultStruct PKIX_BuildResult; | 75 typedef struct PKIX_BuildResultStruct PKIX_BuildResult; |
76 typedef struct PKIX_CertStoreStruct PKIX_CertStore; | 76 typedef struct PKIX_CertStoreStruct PKIX_CertStore; |
77 typedef struct PKIX_CertChainCheckerStruct PKIX_CertChainChecker; | 77 typedef struct PKIX_CertChainCheckerStruct PKIX_CertChainChecker; |
78 typedef struct PKIX_RevocationCheckerStruct PKIX_RevocationChecker; | 78 typedef struct PKIX_RevocationCheckerStruct PKIX_RevocationChecker; |
79 typedef struct PKIX_CertSelectorStruct PKIX_CertSelector; | 79 typedef struct PKIX_CertSelectorStruct PKIX_CertSelector; |
80 typedef struct PKIX_CRLSelectorStruct PKIX_CRLSelector; | 80 typedef struct PKIX_CRLSelectorStruct PKIX_CRLSelector; |
81 typedef struct PKIX_ComCertSelParamsStruct PKIX_ComCertSelParams; | 81 typedef struct PKIX_ComCertSelParamsStruct PKIX_ComCertSelParams; |
82 typedef struct PKIX_ComCRLSelParamsStruct PKIX_ComCRLSelParams; | 82 typedef struct PKIX_ComCRLSelParamsStruct PKIX_ComCRLSelParams; |
83 typedef struct PKIX_TrustAnchorStruct PKIX_TrustAnchor; | 83 typedef struct PKIX_TrustAnchorStruct PKIX_TrustAnchor; |
84 typedef struct PKIX_PolicyNodeStruct PKIX_PolicyNode; | 84 typedef struct PKIX_PolicyNodeStruct PKIX_PolicyNode; |
85 typedef struct PKIX_LoggerStruct PKIX_Logger; | 85 typedef struct PKIX_LoggerStruct PKIX_Logger; |
86 typedef struct PKIX_ListStruct PKIX_List; | 86 typedef struct PKIX_ListStruct PKIX_List; |
87 typedef struct PKIX_ForwardBuilderStateStruct PKIX_ForwardBuilderState; | 87 typedef struct PKIX_ForwardBuilderStateStruct PKIX_ForwardBuilderState; |
88 typedef struct PKIX_DefaultRevocationCheckerStruct | 88 typedef struct PKIX_DefaultRevocationCheckerStruct |
89 PKIX_DefaultRevocationChecker; | 89 PKIX_DefaultRevocationChecker; |
90 typedef struct PKIX_VerifyNodeStruct PKIX_VerifyNode; | 90 typedef struct PKIX_VerifyNodeStruct PKIX_VerifyNode; |
91 | 91 |
92 /* Portability Layer (PL) data types | 92 /* Portability Layer (PL) data types |
93 * | 93 * |
94 * These types are used are used as portable data types that are defined | 94 * These types are used are used as portable data types that are defined |
95 * consistently across platforms | 95 * consistently across platforms |
96 */ | 96 */ |
97 | 97 |
98 typedef struct PKIX_PL_NssContextStruct PKIX_PL_NssContext; | 98 typedef struct PKIX_PL_NssContextStruct PKIX_PL_NssContext; |
99 typedef struct PKIX_PL_ObjectStruct PKIX_PL_Object; | 99 typedef struct PKIX_PL_ObjectStruct PKIX_PL_Object; |
(...skipping 13 matching lines...) Expand all Loading... |
113 typedef struct PKIX_PL_CertNameConstraintsStruct PKIX_PL_CertNameConstraints; | 113 typedef struct PKIX_PL_CertNameConstraintsStruct PKIX_PL_CertNameConstraints; |
114 typedef struct PKIX_PL_CertBasicConstraintsStruct PKIX_PL_CertBasicConstraints; | 114 typedef struct PKIX_PL_CertBasicConstraintsStruct PKIX_PL_CertBasicConstraints; |
115 typedef struct PKIX_PL_CertPoliciesStruct PKIX_PL_CertPolicies; | 115 typedef struct PKIX_PL_CertPoliciesStruct PKIX_PL_CertPolicies; |
116 typedef struct PKIX_PL_CertPolicyInfoStruct PKIX_PL_CertPolicyInfo; | 116 typedef struct PKIX_PL_CertPolicyInfoStruct PKIX_PL_CertPolicyInfo; |
117 typedef struct PKIX_PL_CertPolicyQualifierStruct PKIX_PL_CertPolicyQualifier; | 117 typedef struct PKIX_PL_CertPolicyQualifierStruct PKIX_PL_CertPolicyQualifier; |
118 typedef struct PKIX_PL_CertPolicyMapStruct PKIX_PL_CertPolicyMap; | 118 typedef struct PKIX_PL_CertPolicyMapStruct PKIX_PL_CertPolicyMap; |
119 typedef struct PKIX_PL_CRLStruct PKIX_PL_CRL; | 119 typedef struct PKIX_PL_CRLStruct PKIX_PL_CRL; |
120 typedef struct PKIX_PL_CRLEntryStruct PKIX_PL_CRLEntry; | 120 typedef struct PKIX_PL_CRLEntryStruct PKIX_PL_CRLEntry; |
121 typedef struct PKIX_PL_CollectionCertStoreStruct PKIX_PL_CollectionCertStore; | 121 typedef struct PKIX_PL_CollectionCertStoreStruct PKIX_PL_CollectionCertStore; |
122 typedef struct PKIX_PL_CollectionCertStoreContext | 122 typedef struct PKIX_PL_CollectionCertStoreContext |
123 PKIX_PL_CollectionCertStoreContext; | 123 PKIX_PL_CollectionCertStoreContext; |
124 typedef struct PKIX_PL_LdapCertStoreContext PKIX_PL_LdapCertStoreContext; | 124 typedef struct PKIX_PL_LdapCertStoreContext PKIX_PL_LdapCertStoreContext; |
125 typedef struct PKIX_PL_LdapRequestStruct PKIX_PL_LdapRequest; | 125 typedef struct PKIX_PL_LdapRequestStruct PKIX_PL_LdapRequest; |
126 typedef struct PKIX_PL_LdapResponseStruct PKIX_PL_LdapResponse; | 126 typedef struct PKIX_PL_LdapResponseStruct PKIX_PL_LdapResponse; |
127 typedef struct PKIX_PL_LdapDefaultClientStruct PKIX_PL_LdapDefaultClient; | 127 typedef struct PKIX_PL_LdapDefaultClientStruct PKIX_PL_LdapDefaultClient; |
128 typedef struct PKIX_PL_SocketStruct PKIX_PL_Socket; | 128 typedef struct PKIX_PL_SocketStruct PKIX_PL_Socket; |
129 typedef struct PKIX_PL_InfoAccessStruct PKIX_PL_InfoAccess; | 129 typedef struct PKIX_PL_InfoAccessStruct PKIX_PL_InfoAccess; |
130 typedef struct PKIX_PL_AIAMgrStruct PKIX_PL_AIAMgr; | 130 typedef struct PKIX_PL_AIAMgrStruct PKIX_PL_AIAMgr; |
131 typedef struct PKIX_PL_OcspCertIDStruct PKIX_PL_OcspCertID; | 131 typedef struct PKIX_PL_OcspCertIDStruct PKIX_PL_OcspCertID; |
132 typedef struct PKIX_PL_OcspRequestStruct PKIX_PL_OcspRequest; | 132 typedef struct PKIX_PL_OcspRequestStruct PKIX_PL_OcspRequest; |
133 typedef struct PKIX_PL_OcspResponseStruct PKIX_PL_OcspResponse; | 133 typedef struct PKIX_PL_OcspResponseStruct PKIX_PL_OcspResponse; |
(...skipping 21 matching lines...) Expand all Loading... |
155 | 155 |
156 typedef unsigned int PKIX_UInt32; | 156 typedef unsigned int PKIX_UInt32; |
157 typedef int PKIX_Int32; | 157 typedef int PKIX_Int32; |
158 | 158 |
159 typedef int PKIX_Boolean; | 159 typedef int PKIX_Boolean; |
160 | 160 |
161 /* Object Types | 161 /* Object Types |
162 * | 162 * |
163 * Every reference-counted PKIX_PL_Object is associated with an integer type. | 163 * Every reference-counted PKIX_PL_Object is associated with an integer type. |
164 */ | 164 */ |
165 #define PKIX_TYPES \ | 165 #define PKIX_TYPES \ |
166 TYPEMACRO(AIAMGR), \ | 166 TYPEMACRO(AIAMGR), TYPEMACRO(BASICCONSTRAINTSCHECKERSTATE), \ |
167 TYPEMACRO(BASICCONSTRAINTSCHECKERSTATE), \ | 167 TYPEMACRO(BIGINT), TYPEMACRO(BUILDRESULT), TYPEMACRO(BYTEARRAY), \ |
168 TYPEMACRO(BIGINT), \ | 168 TYPEMACRO(CERT), TYPEMACRO(CERTBASICCONSTRAINTS), \ |
169 TYPEMACRO(BUILDRESULT), \ | 169 TYPEMACRO(CERTCHAINCHECKER), TYPEMACRO(CERTNAMECONSTRAINTS), \ |
170 TYPEMACRO(BYTEARRAY), \ | 170 TYPEMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ |
171 TYPEMACRO(CERT), \ | 171 TYPEMACRO(CERTPOLICYCHECKERSTATE), TYPEMACRO(CERTPOLICYINFO), \ |
172 TYPEMACRO(CERTBASICCONSTRAINTS), \ | 172 TYPEMACRO(CERTPOLICYMAP), TYPEMACRO(CERTPOLICYNODE), \ |
173 TYPEMACRO(CERTCHAINCHECKER), \ | 173 TYPEMACRO(CERTPOLICYQUALIFIER), TYPEMACRO(CERTSELECTOR), \ |
174 TYPEMACRO(CERTNAMECONSTRAINTS), \ | 174 TYPEMACRO(CERTSTORE), TYPEMACRO(COLLECTIONCERTSTORECONTEXT), \ |
175 TYPEMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ | 175 TYPEMACRO(COMCERTSELPARAMS), TYPEMACRO(COMCRLSELPARAMS), TYPEMACRO(CRL), \ |
176 TYPEMACRO(CERTPOLICYCHECKERSTATE), \ | 176 TYPEMACRO(CRLDP), TYPEMACRO(CRLENTRY), TYPEMACRO(CRLSELECTOR), \ |
177 TYPEMACRO(CERTPOLICYINFO), \ | 177 TYPEMACRO(DATE), TYPEMACRO(CRLCHECKER), TYPEMACRO(EKUCHECKER), \ |
178 TYPEMACRO(CERTPOLICYMAP), \ | 178 TYPEMACRO(ERROR), TYPEMACRO(FORWARDBUILDERSTATE), \ |
179 TYPEMACRO(CERTPOLICYNODE), \ | 179 TYPEMACRO(GENERALNAME), TYPEMACRO(HASHTABLE), \ |
180 TYPEMACRO(CERTPOLICYQUALIFIER), \ | 180 TYPEMACRO(HTTPCERTSTORECONTEXT), TYPEMACRO(HTTPDEFAULTCLIENT), \ |
181 TYPEMACRO(CERTSELECTOR), \ | 181 TYPEMACRO(INFOACCESS), TYPEMACRO(LDAPDEFAULTCLIENT), \ |
182 TYPEMACRO(CERTSTORE), \ | 182 TYPEMACRO(LDAPREQUEST), TYPEMACRO(LDAPRESPONSE), TYPEMACRO(LIST), \ |
183 TYPEMACRO(COLLECTIONCERTSTORECONTEXT), \ | 183 TYPEMACRO(LOGGER), TYPEMACRO(MONITORLOCK), TYPEMACRO(MUTEX), \ |
184 TYPEMACRO(COMCERTSELPARAMS), \ | 184 TYPEMACRO(OBJECT), TYPEMACRO(OCSPCERTID), TYPEMACRO(OCSPCHECKER), \ |
185 TYPEMACRO(COMCRLSELPARAMS), \ | 185 TYPEMACRO(OCSPREQUEST), TYPEMACRO(OCSPRESPONSE), TYPEMACRO(OID), \ |
186 TYPEMACRO(CRL), \ | 186 TYPEMACRO(REVOCATIONCHECKER), TYPEMACRO(PROCESSINGPARAMS), \ |
187 TYPEMACRO(CRLDP), \ | 187 TYPEMACRO(PUBLICKEY), TYPEMACRO(RESOURCELIMITS), TYPEMACRO(RWLOCK), \ |
188 TYPEMACRO(CRLENTRY), \ | 188 TYPEMACRO(SIGNATURECHECKERSTATE), TYPEMACRO(SOCKET), TYPEMACRO(STRING), \ |
189 TYPEMACRO(CRLSELECTOR), \ | 189 TYPEMACRO(TARGETCERTCHECKERSTATE), TYPEMACRO(TRUSTANCHOR), \ |
190 TYPEMACRO(DATE), \ | 190 TYPEMACRO(VALIDATEPARAMS), TYPEMACRO(VALIDATERESULT), \ |
191 TYPEMACRO(CRLCHECKER), \ | 191 TYPEMACRO(VERIFYNODE), TYPEMACRO(X500NAME) |
192 TYPEMACRO(EKUCHECKER), \ | |
193 TYPEMACRO(ERROR), \ | |
194 TYPEMACRO(FORWARDBUILDERSTATE), \ | |
195 TYPEMACRO(GENERALNAME), \ | |
196 TYPEMACRO(HASHTABLE), \ | |
197 TYPEMACRO(HTTPCERTSTORECONTEXT), \ | |
198 TYPEMACRO(HTTPDEFAULTCLIENT), \ | |
199 TYPEMACRO(INFOACCESS), \ | |
200 TYPEMACRO(LDAPDEFAULTCLIENT), \ | |
201 TYPEMACRO(LDAPREQUEST), \ | |
202 TYPEMACRO(LDAPRESPONSE), \ | |
203 TYPEMACRO(LIST), \ | |
204 TYPEMACRO(LOGGER), \ | |
205 TYPEMACRO(MONITORLOCK), \ | |
206 TYPEMACRO(MUTEX), \ | |
207 TYPEMACRO(OBJECT), \ | |
208 TYPEMACRO(OCSPCERTID), \ | |
209 TYPEMACRO(OCSPCHECKER), \ | |
210 TYPEMACRO(OCSPREQUEST), \ | |
211 TYPEMACRO(OCSPRESPONSE), \ | |
212 TYPEMACRO(OID), \ | |
213 TYPEMACRO(REVOCATIONCHECKER), \ | |
214 TYPEMACRO(PROCESSINGPARAMS), \ | |
215 TYPEMACRO(PUBLICKEY), \ | |
216 TYPEMACRO(RESOURCELIMITS), \ | |
217 TYPEMACRO(RWLOCK), \ | |
218 TYPEMACRO(SIGNATURECHECKERSTATE), \ | |
219 TYPEMACRO(SOCKET), \ | |
220 TYPEMACRO(STRING), \ | |
221 TYPEMACRO(TARGETCERTCHECKERSTATE), \ | |
222 TYPEMACRO(TRUSTANCHOR), \ | |
223 TYPEMACRO(VALIDATEPARAMS), \ | |
224 TYPEMACRO(VALIDATERESULT), \ | |
225 TYPEMACRO(VERIFYNODE), \ | |
226 TYPEMACRO(X500NAME) | |
227 | 192 |
228 #define TYPEMACRO(type) PKIX_ ## type ## _TYPE | 193 #define TYPEMACRO(type) PKIX_##type##_TYPE |
229 | 194 |
230 typedef enum { /* Now invoke all those TYPEMACROs to assign the numbers */ | 195 typedef enum {/* Now invoke all those TYPEMACROs to assign the numbers */ |
231 PKIX_TYPES, | 196 PKIX_TYPES, |
232 PKIX_NUMTYPES /* This gets PKIX_NUMTYPES defined as the total number */ | 197 PKIX_NUMTYPES /* This gets PKIX_NUMTYPES defined as the total |
| 198 number */ |
233 } PKIX_TYPENUM; | 199 } PKIX_TYPENUM; |
234 | 200 |
235 | |
236 #ifdef PKIX_USER_OBJECT_TYPE | 201 #ifdef PKIX_USER_OBJECT_TYPE |
237 | 202 |
238 /* User Define Object Types | 203 /* User Define Object Types |
239 * | 204 * |
240 * User may define their own object types offset from PKIX_USER_OBJECT_TYPE | 205 * User may define their own object types offset from PKIX_USER_OBJECT_TYPE |
241 */ | 206 */ |
242 #define PKIX_USER_OBJECT_TYPEBASE 1000 | 207 #define PKIX_USER_OBJECT_TYPEBASE 1000 |
243 | 208 |
244 #endif /* PKIX_USER_OBJECT_TYPE */ | 209 #endif /* PKIX_USER_OBJECT_TYPE */ |
245 | 210 |
246 /* Error Codes | 211 /* Error Codes |
247 * | 212 * |
248 * This list is used to define a set of PKIX_Error exception class numbers. | 213 * This list is used to define a set of PKIX_Error exception class numbers. |
249 * ERRMACRO is redefined to produce a corresponding set of | 214 * ERRMACRO is redefined to produce a corresponding set of |
250 * strings in the table "const char *PKIX_ERRORCLASSNAMES[PKIX_NUMERRORCLASSES]"
in | 215 * strings in the table "const char *PKIX_ERRORCLASSNAMES[PKIX_NUMERRORCLASSES]" |
| 216 *in |
251 * pkix_error.c. For example, since the fifth ERRMACRO entry is MUTEX, then | 217 * pkix_error.c. For example, since the fifth ERRMACRO entry is MUTEX, then |
252 * PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and PKIX_ERRORCLASSNAMES[4] is | 218 * PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and PKIX_ERRORCLASSNAMES[4] is |
253 * initialized in pkix_error.c with the value "MUTEX". | 219 * initialized in pkix_error.c with the value "MUTEX". |
254 */ | 220 */ |
255 #define PKIX_ERRORCLASSES \ | 221 #define PKIX_ERRORCLASSES \ |
256 ERRMACRO(AIAMGR), \ | 222 ERRMACRO(AIAMGR), ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), ERRMACRO(BIGINT), \ |
257 ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), \ | 223 ERRMACRO(BUILD), ERRMACRO(BUILDRESULT), ERRMACRO(BYTEARRAY), \ |
258 ERRMACRO(BIGINT), \ | 224 ERRMACRO(CERT), ERRMACRO(CERTBASICCONSTRAINTS), \ |
259 ERRMACRO(BUILD), \ | 225 ERRMACRO(CERTCHAINCHECKER), ERRMACRO(CERTNAMECONSTRAINTS), \ |
260 ERRMACRO(BUILDRESULT), \ | 226 ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ |
261 ERRMACRO(BYTEARRAY), \ | 227 ERRMACRO(CERTPOLICYCHECKERSTATE), ERRMACRO(CERTPOLICYINFO), \ |
262 ERRMACRO(CERT), \ | 228 ERRMACRO(CERTPOLICYMAP), ERRMACRO(CERTPOLICYNODE), \ |
263 ERRMACRO(CERTBASICCONSTRAINTS), \ | 229 ERRMACRO(CERTPOLICYQUALIFIER), ERRMACRO(CERTSELECTOR), \ |
264 ERRMACRO(CERTCHAINCHECKER), \ | 230 ERRMACRO(CERTSTORE), ERRMACRO(CERTVFYPKIX), \ |
265 ERRMACRO(CERTNAMECONSTRAINTS), \ | 231 ERRMACRO(COLLECTIONCERTSTORECONTEXT), ERRMACRO(COMCERTSELPARAMS), \ |
266 ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ | 232 ERRMACRO(COMCRLSELPARAMS), ERRMACRO(CONTEXT), ERRMACRO(CRL), \ |
267 ERRMACRO(CERTPOLICYCHECKERSTATE), \ | 233 ERRMACRO(CRLDP), ERRMACRO(CRLENTRY), ERRMACRO(CRLSELECTOR), \ |
268 ERRMACRO(CERTPOLICYINFO), \ | 234 ERRMACRO(CRLCHECKER), ERRMACRO(DATE), ERRMACRO(EKUCHECKER), \ |
269 ERRMACRO(CERTPOLICYMAP), \ | 235 ERRMACRO(ERROR), ERRMACRO(FATAL), ERRMACRO(FORWARDBUILDERSTATE), \ |
270 ERRMACRO(CERTPOLICYNODE), \ | 236 ERRMACRO(GENERALNAME), ERRMACRO(HASHTABLE), \ |
271 ERRMACRO(CERTPOLICYQUALIFIER), \ | 237 ERRMACRO(HTTPCERTSTORECONTEXT), ERRMACRO(HTTPDEFAULTCLIENT), \ |
272 ERRMACRO(CERTSELECTOR), \ | 238 ERRMACRO(INFOACCESS), ERRMACRO(LDAPCLIENT), ERRMACRO(LDAPDEFAULTCLIENT), \ |
273 ERRMACRO(CERTSTORE), \ | 239 ERRMACRO(LDAPREQUEST), ERRMACRO(LDAPRESPONSE), ERRMACRO(LIFECYCLE), \ |
274 ERRMACRO(CERTVFYPKIX), \ | 240 ERRMACRO(LIST), ERRMACRO(LOGGER), ERRMACRO(MEM), ERRMACRO(MONITORLOCK), \ |
275 ERRMACRO(COLLECTIONCERTSTORECONTEXT), \ | 241 ERRMACRO(MUTEX), ERRMACRO(OBJECT), ERRMACRO(OCSPCERTID), \ |
276 ERRMACRO(COMCERTSELPARAMS), \ | 242 ERRMACRO(OCSPCHECKER), ERRMACRO(OCSPREQUEST), ERRMACRO(OCSPRESPONSE), \ |
277 ERRMACRO(COMCRLSELPARAMS), \ | 243 ERRMACRO(OID), ERRMACRO(PROCESSINGPARAMS), ERRMACRO(PUBLICKEY), \ |
278 ERRMACRO(CONTEXT), \ | 244 ERRMACRO(RESOURCELIMITS), ERRMACRO(REVOCATIONMETHOD), \ |
279 ERRMACRO(CRL), \ | 245 ERRMACRO(REVOCATIONCHECKER), ERRMACRO(RWLOCK), \ |
280 ERRMACRO(CRLDP), \ | 246 ERRMACRO(SIGNATURECHECKERSTATE), ERRMACRO(SOCKET), ERRMACRO(STRING), \ |
281 ERRMACRO(CRLENTRY), \ | 247 ERRMACRO(TARGETCERTCHECKERSTATE), ERRMACRO(TRUSTANCHOR), \ |
282 ERRMACRO(CRLSELECTOR), \ | 248 ERRMACRO(USERDEFINEDMODULES), ERRMACRO(VALIDATE), \ |
283 ERRMACRO(CRLCHECKER), \ | 249 ERRMACRO(VALIDATEPARAMS), ERRMACRO(VALIDATERESULT), \ |
284 ERRMACRO(DATE), \ | 250 ERRMACRO(VERIFYNODE), ERRMACRO(X500NAME) |
285 ERRMACRO(EKUCHECKER), \ | |
286 ERRMACRO(ERROR), \ | |
287 ERRMACRO(FATAL), \ | |
288 ERRMACRO(FORWARDBUILDERSTATE), \ | |
289 ERRMACRO(GENERALNAME), \ | |
290 ERRMACRO(HASHTABLE), \ | |
291 ERRMACRO(HTTPCERTSTORECONTEXT), \ | |
292 ERRMACRO(HTTPDEFAULTCLIENT), \ | |
293 ERRMACRO(INFOACCESS), \ | |
294 ERRMACRO(LDAPCLIENT), \ | |
295 ERRMACRO(LDAPDEFAULTCLIENT), \ | |
296 ERRMACRO(LDAPREQUEST), \ | |
297 ERRMACRO(LDAPRESPONSE), \ | |
298 ERRMACRO(LIFECYCLE), \ | |
299 ERRMACRO(LIST), \ | |
300 ERRMACRO(LOGGER), \ | |
301 ERRMACRO(MEM), \ | |
302 ERRMACRO(MONITORLOCK), \ | |
303 ERRMACRO(MUTEX), \ | |
304 ERRMACRO(OBJECT), \ | |
305 ERRMACRO(OCSPCERTID), \ | |
306 ERRMACRO(OCSPCHECKER), \ | |
307 ERRMACRO(OCSPREQUEST), \ | |
308 ERRMACRO(OCSPRESPONSE), \ | |
309 ERRMACRO(OID), \ | |
310 ERRMACRO(PROCESSINGPARAMS), \ | |
311 ERRMACRO(PUBLICKEY), \ | |
312 ERRMACRO(RESOURCELIMITS), \ | |
313 ERRMACRO(REVOCATIONMETHOD), \ | |
314 ERRMACRO(REVOCATIONCHECKER), \ | |
315 ERRMACRO(RWLOCK), \ | |
316 ERRMACRO(SIGNATURECHECKERSTATE), \ | |
317 ERRMACRO(SOCKET), \ | |
318 ERRMACRO(STRING), \ | |
319 ERRMACRO(TARGETCERTCHECKERSTATE), \ | |
320 ERRMACRO(TRUSTANCHOR), \ | |
321 ERRMACRO(USERDEFINEDMODULES), \ | |
322 ERRMACRO(VALIDATE), \ | |
323 ERRMACRO(VALIDATEPARAMS), \ | |
324 ERRMACRO(VALIDATERESULT), \ | |
325 ERRMACRO(VERIFYNODE), \ | |
326 ERRMACRO(X500NAME) | |
327 | 251 |
328 #define ERRMACRO(type) PKIX_ ## type ## _ERROR | 252 #define ERRMACRO(type) PKIX_##type##_ERROR |
329 | 253 |
330 typedef enum { /* Now invoke all those ERRMACROs to assign the numbers */ | 254 typedef enum {/* Now invoke all those ERRMACROs to assign the numbers */ |
331 PKIX_ERRORCLASSES, | 255 PKIX_ERRORCLASSES, |
332 PKIX_NUMERRORCLASSES /* This gets PKIX_NUMERRORCLASSES defined as the total
number */ | 256 PKIX_NUMERRORCLASSES /* This gets PKIX_NUMERRORCLASSES defined as |
| 257 the total number */ |
333 } PKIX_ERRORCLASS; | 258 } PKIX_ERRORCLASS; |
334 | 259 |
335 /* Now define error strings (for internationalization) */ | 260 /* Now define error strings (for internationalization) */ |
336 | 261 |
337 #define PKIX_ERRORENTRY(name,desc,plerr) PKIX_ ## name | 262 #define PKIX_ERRORENTRY(name, desc, plerr) PKIX_##name |
338 | 263 |
339 /* Define all the error numbers */ | 264 /* Define all the error numbers */ |
340 typedef enum { | 265 typedef enum { |
341 #include "pkix_errorstrings.h" | 266 #include "pkix_errorstrings.h" |
342 , PKIX_NUMERRORCODES | 267 , |
| 268 PKIX_NUMERRORCODES |
343 } PKIX_ERRORCODE; | 269 } PKIX_ERRORCODE; |
344 | 270 |
345 extern const char * const PKIX_ErrorText[]; | 271 extern const char* const PKIX_ErrorText[]; |
346 | 272 |
347 /* String Formats | 273 /* String Formats |
348 * | 274 * |
349 * These formats specify supported encoding formats for Strings. | 275 * These formats specify supported encoding formats for Strings. |
350 */ | 276 */ |
351 | 277 |
352 #define PKIX_ESCASCII 0 | 278 #define PKIX_ESCASCII 0 |
353 #define PKIX_UTF8 1 | 279 #define PKIX_UTF8 1 |
354 #define PKIX_UTF16 2 | 280 #define PKIX_UTF16 2 |
355 #define PKIX_UTF8_NULL_TERM 3 | 281 #define PKIX_UTF8_NULL_TERM 3 |
356 #define PKIX_ESCASCII_DEBUG 4 | 282 #define PKIX_ESCASCII_DEBUG 4 |
357 | 283 |
358 /* Name Types | 284 /* Name Types |
359 * | 285 * |
360 * These types specify supported formats for GeneralNames. | 286 * These types specify supported formats for GeneralNames. |
361 */ | 287 */ |
362 | 288 |
363 #define PKIX_OTHER_NAME 1 | 289 #define PKIX_OTHER_NAME 1 |
364 #define PKIX_RFC822_NAME 2 | 290 #define PKIX_RFC822_NAME 2 |
365 #define PKIX_DNS_NAME 3 | 291 #define PKIX_DNS_NAME 3 |
366 #define PKIX_X400_ADDRESS 4 | 292 #define PKIX_X400_ADDRESS 4 |
367 #define PKIX_DIRECTORY_NAME 5 | 293 #define PKIX_DIRECTORY_NAME 5 |
368 #define PKIX_EDIPARTY_NAME 6 | 294 #define PKIX_EDIPARTY_NAME 6 |
369 #define PKIX_URI_NAME 7 | 295 #define PKIX_URI_NAME 7 |
370 #define PKIX_IP_NAME 8 | 296 #define PKIX_IP_NAME 8 |
371 #define PKIX_OID_NAME 9 | 297 #define PKIX_OID_NAME 9 |
372 | 298 |
373 /* Key Usages | 299 /* Key Usages |
374 * | 300 * |
375 * These types specify supported Key Usages | 301 * These types specify supported Key Usages |
376 */ | 302 */ |
377 | 303 |
378 #define PKIX_DIGITAL_SIGNATURE 0x001 | 304 #define PKIX_DIGITAL_SIGNATURE 0x001 |
379 #define PKIX_NON_REPUDIATION 0x002 | 305 #define PKIX_NON_REPUDIATION 0x002 |
380 #define PKIX_KEY_ENCIPHERMENT 0x004 | 306 #define PKIX_KEY_ENCIPHERMENT 0x004 |
381 #define PKIX_DATA_ENCIPHERMENT 0x008 | 307 #define PKIX_DATA_ENCIPHERMENT 0x008 |
382 #define PKIX_KEY_AGREEMENT 0x010 | 308 #define PKIX_KEY_AGREEMENT 0x010 |
383 #define PKIX_KEY_CERT_SIGN 0x020 | 309 #define PKIX_KEY_CERT_SIGN 0x020 |
384 #define PKIX_CRL_SIGN 0x040 | 310 #define PKIX_CRL_SIGN 0x040 |
385 #define PKIX_ENCIPHER_ONLY 0x080 | 311 #define PKIX_ENCIPHER_ONLY 0x080 |
386 #define PKIX_DECIPHER_ONLY 0x100 | 312 #define PKIX_DECIPHER_ONLY 0x100 |
387 | 313 |
388 /* Reason Flags | 314 /* Reason Flags |
389 * | 315 * |
390 * These macros specify supported Reason Flags | 316 * These macros specify supported Reason Flags |
391 */ | 317 */ |
392 | 318 |
393 #define PKIX_UNUSED 0x001 | 319 #define PKIX_UNUSED 0x001 |
394 #define PKIX_KEY_COMPROMISE 0x002 | 320 #define PKIX_KEY_COMPROMISE 0x002 |
395 #define PKIX_CA_COMPROMISE 0x004 | 321 #define PKIX_CA_COMPROMISE 0x004 |
396 #define PKIX_AFFILIATION_CHANGED 0x008 | 322 #define PKIX_AFFILIATION_CHANGED 0x008 |
397 #define PKIX_SUPERSEDED 0x010 | 323 #define PKIX_SUPERSEDED 0x010 |
398 #define PKIX_CESSATION_OF_OPERATION 0x020 | 324 #define PKIX_CESSATION_OF_OPERATION 0x020 |
399 #define PKIX_CERTIFICATE_HOLD 0x040 | 325 #define PKIX_CERTIFICATE_HOLD 0x040 |
400 #define PKIX_PRIVILEGE_WITHDRAWN 0x080 | 326 #define PKIX_PRIVILEGE_WITHDRAWN 0x080 |
401 #define PKIX_AA_COMPROMISE 0x100 | 327 #define PKIX_AA_COMPROMISE 0x100 |
402 | 328 |
403 /* Boolean values | 329 /* Boolean values |
404 * | 330 * |
405 * These macros specify the Boolean values of TRUE and FALSE | 331 * These macros specify the Boolean values of TRUE and FALSE |
406 * XXX Is it the case that any non-zero value is actually considered TRUE | 332 * XXX Is it the case that any non-zero value is actually considered TRUE |
407 * and this is just a convenient mnemonic macro? | 333 * and this is just a convenient mnemonic macro? |
408 */ | 334 */ |
409 | 335 |
410 #define PKIX_TRUE ((PKIX_Boolean) 1) | 336 #define PKIX_TRUE ((PKIX_Boolean)1) |
411 #define PKIX_FALSE ((PKIX_Boolean) 0) | 337 #define PKIX_FALSE ((PKIX_Boolean)0) |
412 | 338 |
413 /* | 339 /* |
414 * Define constants for basic constraints selector | 340 * Define constants for basic constraints selector |
415 * (see comments in pkix_certsel.h) | 341 * (see comments in pkix_certsel.h) |
416 */ | 342 */ |
417 | 343 |
418 #define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2) | 344 #define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2) |
419 #define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1) | 345 #define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1) |
420 | 346 |
421 /* | 347 /* |
422 * PKIX_ALLOC_ERROR is a special error object hard-coded into the pkix_error.o | 348 * PKIX_ALLOC_ERROR is a special error object hard-coded into the pkix_error.o |
423 * object file. It is thrown if system memory cannot be allocated or may be | 349 * object file. It is thrown if system memory cannot be allocated or may be |
424 * thrown for other unrecoverable errors. PKIX_ALLOC_ERROR is immutable. | 350 * thrown for other unrecoverable errors. PKIX_ALLOC_ERROR is immutable. |
425 * IncRef, DecRef and all Settor functions cannot be called. | 351 * IncRef, DecRef and all Settor functions cannot be called. |
426 * XXX Does anyone actually need to know about this? | 352 * XXX Does anyone actually need to know about this? |
427 * XXX Why no DecRef? Would be good to handle it the same. | 353 * XXX Why no DecRef? Would be good to handle it the same. |
428 */ | 354 */ |
429 | 355 |
430 PKIX_Error* PKIX_ALLOC_ERROR(void); | 356 PKIX_Error* PKIX_ALLOC_ERROR(void); |
431 | 357 |
432 /* | 358 /* |
433 * In a CertBasicConstraints extension, if the CA flag is set, | 359 * In a CertBasicConstraints extension, if the CA flag is set, |
434 * indicating the certificate refers to a Certification | 360 * indicating the certificate refers to a Certification |
435 * Authority, then the pathLen field indicates how many intermediate | 361 * Authority, then the pathLen field indicates how many intermediate |
436 * certificates (not counting self-signed ones) can exist in a valid | 362 * certificates (not counting self-signed ones) can exist in a valid |
437 * chain following this certificate. If the pathLen has the value | 363 * chain following this certificate. If the pathLen has the value |
438 * of this constant, then the length of the chain is unlimited | 364 * of this constant, then the length of the chain is unlimited |
439 */ | 365 */ |
440 #define PKIX_UNLIMITED_PATH_CONSTRAINT ((PKIX_Int32) -1) | 366 #define PKIX_UNLIMITED_PATH_CONSTRAINT ((PKIX_Int32) - 1) |
441 | 367 |
442 /* | 368 /* |
443 * Define Certificate Extension hard-coded OID's | 369 * Define Certificate Extension hard-coded OID's |
444 */ | 370 */ |
445 #define PKIX_UNKNOWN_OID SEC_OID_UNKNOWN | 371 #define PKIX_UNKNOWN_OID SEC_OID_UNKNOWN |
446 #define PKIX_CERTKEYUSAGE_OID SEC_OID_X509_KEY_USAGE | 372 #define PKIX_CERTKEYUSAGE_OID SEC_OID_X509_KEY_USAGE |
447 #define PKIX_CERTSUBJALTNAME_OID SEC_OID_X509_SUBJECT_ALT_NAME | 373 #define PKIX_CERTSUBJALTNAME_OID SEC_OID_X509_SUBJECT_ALT_NAME |
448 #define PKIX_BASICCONSTRAINTS_OID SEC_OID_X509_BASIC_CONSTRAINTS | 374 #define PKIX_BASICCONSTRAINTS_OID SEC_OID_X509_BASIC_CONSTRAINTS |
449 #define PKIX_CRLREASONCODE_OID SEC_OID_X509_REASON_CODE | 375 #define PKIX_CRLREASONCODE_OID SEC_OID_X509_REASON_CODE |
450 #define PKIX_NAMECONSTRAINTS_OID SEC_OID_X509_NAME_CONSTRAINTS | 376 #define PKIX_NAMECONSTRAINTS_OID SEC_OID_X509_NAME_CONSTRAINTS |
451 #define PKIX_CERTIFICATEPOLICIES_OID SEC_OID_X509_CERTIFICATE_POLICIES | 377 #define PKIX_CERTIFICATEPOLICIES_OID SEC_OID_X509_CERTIFICATE_POLICIES |
452 #define PKIX_CERTIFICATEPOLICIES_ANYPOLICY_OID SEC_OID_X509_ANY_POLICY | 378 #define PKIX_CERTIFICATEPOLICIES_ANYPOLICY_OID SEC_OID_X509_ANY_POLICY |
453 #define PKIX_POLICYMAPPINGS_OID SEC_OID_X509_POLICY_MAPPINGS | 379 #define PKIX_POLICYMAPPINGS_OID SEC_OID_X509_POLICY_MAPPINGS |
454 #define PKIX_POLICYCONSTRAINTS_OID SEC_OID_X509_POLICY_CONSTRAINTS | 380 #define PKIX_POLICYCONSTRAINTS_OID SEC_OID_X509_POLICY_CONSTRAINTS |
455 #define PKIX_EXTENDEDKEYUSAGE_OID SEC_OID_X509_EXT_KEY_USAGE | 381 #define PKIX_EXTENDEDKEYUSAGE_OID SEC_OID_X509_EXT_KEY_USAGE |
456 #define PKIX_INHIBITANYPOLICY_OID SEC_OID_X509_INHIBIT_ANY_POLICY | 382 #define PKIX_INHIBITANYPOLICY_OID SEC_OID_X509_INHIBIT_ANY_POLICY |
457 #define PKIX_NSCERTTYPE_OID SEC_OID_NS_CERT_EXT_CERT_TYPE | 383 #define PKIX_NSCERTTYPE_OID SEC_OID_NS_CERT_EXT_CERT_TYPE |
458 #define PKIX_KEY_USAGE_SERVER_AUTH_OID SEC_OID_EXT_KEY_USAGE_SERVER_AUTH | 384 #define PKIX_KEY_USAGE_SERVER_AUTH_OID SEC_OID_EXT_KEY_USAGE_SERVER_AUTH |
459 #define PKIX_KEY_USAGE_CLIENT_AUTH_OID SEC_OID_EXT_KEY_USAGE_CLIENT_AUTH | 385 #define PKIX_KEY_USAGE_CLIENT_AUTH_OID SEC_OID_EXT_KEY_USAGE_CLIENT_AUTH |
460 #define PKIX_KEY_USAGE_CODE_SIGN_OID SEC_OID_EXT_KEY_USAGE_CODE_SIGN | 386 #define PKIX_KEY_USAGE_CODE_SIGN_OID SEC_OID_EXT_KEY_USAGE_CODE_SIGN |
461 #define PKIX_KEY_USAGE_EMAIL_PROTECT_OID SEC_OID_EXT_KEY_USAGE_EMAIL_PROTE
CT | 387 #define PKIX_KEY_USAGE_EMAIL_PROTECT_OID SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT |
462 #define PKIX_KEY_USAGE_TIME_STAMP_OID SEC_OID_EXT_KEY_USAGE_TIME_STAMP | 388 #define PKIX_KEY_USAGE_TIME_STAMP_OID SEC_OID_EXT_KEY_USAGE_TIME_STAMP |
463 #define PKIX_KEY_USAGE_OCSP_RESPONDER_OID SEC_OID_OCSP_RESPONDER | 389 #define PKIX_KEY_USAGE_OCSP_RESPONDER_OID SEC_OID_OCSP_RESPONDER |
464 | |
465 | 390 |
466 /* Available revocation method types. */ | 391 /* Available revocation method types. */ |
467 typedef enum PKIX_RevocationMethodTypeEnum { | 392 typedef enum PKIX_RevocationMethodTypeEnum { |
468 PKIX_RevocationMethod_CRL = 0, | 393 PKIX_RevocationMethod_CRL = 0, |
469 PKIX_RevocationMethod_OCSP, | 394 PKIX_RevocationMethod_OCSP, |
470 PKIX_RevocationMethod_MAX | 395 PKIX_RevocationMethod_MAX |
471 } PKIX_RevocationMethodType; | 396 } PKIX_RevocationMethodType; |
472 | 397 |
473 /* A set of statuses revocation checker operates on */ | 398 /* A set of statuses revocation checker operates on */ |
474 typedef enum PKIX_RevocationStatusEnum { | 399 typedef enum PKIX_RevocationStatusEnum { |
475 PKIX_RevStatus_NoInfo = 0, | 400 PKIX_RevStatus_NoInfo = 0, |
476 PKIX_RevStatus_Revoked, | 401 PKIX_RevStatus_Revoked, |
477 PKIX_RevStatus_Success | 402 PKIX_RevStatus_Success |
478 } PKIX_RevocationStatus; | 403 } PKIX_RevocationStatus; |
479 | 404 |
480 | |
481 #ifdef __cplusplus | 405 #ifdef __cplusplus |
482 } | 406 } |
483 #endif | 407 #endif |
484 | 408 |
485 #endif /* _PKIXT_H */ | 409 #endif /* _PKIXT_H */ |
OLD | NEW |