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 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* 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 7 * 8 */ 9 10 #ifndef _PKIXT_H 11 #define _PKIXT_H 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #include "secerr.h" 18 19 /* Types 20 * 21 * This header file provides typedefs for the abstract types used by libpkix. 22 * It also provides several useful macros. 23 * 24 * Note that all these abstract types are typedef'd as opaque structures. This 25 * is intended to discourage the caller from looking at the contents directly, 26 * since the format of the contents may change from one version of the library 27 * to the next. Instead, callers should only access these types using the 28 * functions defined in the public header files. 29 * 30 * An instance of an abstract type defined in this file is called an "object" 31 * here, although C does not have real support for objects. 32 * 33 * Because C does not typically have automatic garbage collection, the caller 34 * is expected to release the reference to any object that they create or that 35 * is returned to them by a libpkix function. The caller should do this by 36 * using the PKIX_PL_Object_DecRef function. Note that the caller should not 37 * release the reference to an object if the object has been passed to a 38 * libpkix function and that function has not returned. 39 * 40 * Please refer to libpkix Programmer's Guide for more details. 41 */ 42 43 /* Version 44 * 45 * These macros specify the major and minor version of the libpkix API defined 46 * by this header file. 47 */ 48 49 #define PKIX_MAJOR_VERSION ((PKIX_UInt32) 0) 50 #define PKIX_MINOR_VERSION ((PKIX_UInt32) 3) 51 52 /* Maximum minor version 53 * 54 * This macro is used to specify that the caller wants the largest minor 55 * version available. 56 */ 57 58 #define PKIX_MAX_MINOR_VERSION ((PKIX_UInt32) 4000000000) 59 60 /* Define Cert Store type for database access */ 61 #define PKIX_STORE_TYPE_NONE 0 62 #define PKIX_STORE_TYPE_PK11 1 63 64 /* Portable Code (PC) data types 65 * 66 * These types are used to perform the primary operations of this library: 67 * building and validating chains of X.509 certificates. 68 */ 69 70 typedef struct PKIX_ErrorStruct PKIX_Error; 71 typedef struct PKIX_ProcessingParamsStruct PKIX_ProcessingParams; 72 typedef struct PKIX_ValidateParamsStruct PKIX_ValidateParams; 73 typedef struct PKIX_ValidateResultStruct PKIX_ValidateResult; 74 typedef struct PKIX_ResourceLimitsStruct PKIX_ResourceLimits; 75 typedef struct PKIX_BuildResultStruct PKIX_BuildResult; 76 typedef struct PKIX_CertStoreStruct PKIX_CertStore; 77 typedef struct PKIX_CertChainCheckerStruct PKIX_CertChainChecker; 78 typedef struct PKIX_RevocationCheckerStruct PKIX_RevocationChecker; 79 typedef struct PKIX_CertSelectorStruct PKIX_CertSelector; 80 typedef struct PKIX_CRLSelectorStruct PKIX_CRLSelector; 81 typedef struct PKIX_ComCertSelParamsStruct PKIX_ComCertSelParams; 82 typedef struct PKIX_ComCRLSelParamsStruct PKIX_ComCRLSelParams; 83 typedef struct PKIX_TrustAnchorStruct PKIX_TrustAnchor; 84 typedef struct PKIX_PolicyNodeStruct PKIX_PolicyNode; 85 typedef struct PKIX_LoggerStruct PKIX_Logger; 86 typedef struct PKIX_ListStruct PKIX_List; 87 typedef struct PKIX_ForwardBuilderStateStruct PKIX_ForwardBuilderState; 88 typedef struct PKIX_DefaultRevocationCheckerStruct 89 PKIX_DefaultRevocationChecker; 90 typedef struct PKIX_VerifyNodeStruct PKIX_VerifyNode; 91 92 /* Portability Layer (PL) data types 93 * 94 * These types are used are used as portable data types that are defined 95 * consistently across platforms 96 */ 97 98 typedef struct PKIX_PL_NssContextStruct PKIX_PL_NssContext; 99 typedef struct PKIX_PL_ObjectStruct PKIX_PL_Object; 100 typedef struct PKIX_PL_ByteArrayStruct PKIX_PL_ByteArray; 101 typedef struct PKIX_PL_HashTableStruct PKIX_PL_HashTable; 102 typedef struct PKIX_PL_MutexStruct PKIX_PL_Mutex; 103 typedef struct PKIX_PL_RWLockStruct PKIX_PL_RWLock; 104 typedef struct PKIX_PL_MonitorLockStruct PKIX_PL_MonitorLock; 105 typedef struct PKIX_PL_BigIntStruct PKIX_PL_BigInt; 106 typedef struct PKIX_PL_StringStruct PKIX_PL_String; 107 typedef struct PKIX_PL_OIDStruct PKIX_PL_OID; 108 typedef struct PKIX_PL_CertStruct PKIX_PL_Cert; 109 typedef struct PKIX_PL_GeneralNameStruct PKIX_PL_GeneralName; 110 typedef struct PKIX_PL_X500NameStruct PKIX_PL_X500Name; 111 typedef struct PKIX_PL_PublicKeyStruct PKIX_PL_PublicKey; 112 typedef struct PKIX_PL_DateStruct PKIX_PL_Date; 113 typedef struct PKIX_PL_CertNameConstraintsStruct PKIX_PL_CertNameConstraints; 114 typedef struct PKIX_PL_CertBasicConstraintsStruct PKIX_PL_CertBasicConstraints; 115 typedef struct PKIX_PL_CertPoliciesStruct PKIX_PL_CertPolicies; 116 typedef struct PKIX_PL_CertPolicyInfoStruct PKIX_PL_CertPolicyInfo; 117 typedef struct PKIX_PL_CertPolicyQualifierStruct PKIX_PL_CertPolicyQualifier; 118 typedef struct PKIX_PL_CertPolicyMapStruct PKIX_PL_CertPolicyMap; 119 typedef struct PKIX_PL_CRLStruct PKIX_PL_CRL; 120 typedef struct PKIX_PL_CRLEntryStruct PKIX_PL_CRLEntry; 121 typedef struct PKIX_PL_CollectionCertStoreStruct PKIX_PL_CollectionCertStore; 122 typedef struct PKIX_PL_CollectionCertStoreContext 123 PKIX_PL_CollectionCertStoreContext; 124 typedef struct PKIX_PL_LdapCertStoreContext PKIX_PL_LdapCertStoreContext; 125 typedef struct PKIX_PL_LdapRequestStruct PKIX_PL_LdapRequest; 126 typedef struct PKIX_PL_LdapResponseStruct PKIX_PL_LdapResponse; 127 typedef struct PKIX_PL_LdapDefaultClientStruct PKIX_PL_LdapDefaultClient; 128 typedef struct PKIX_PL_SocketStruct PKIX_PL_Socket; 129 typedef struct PKIX_PL_InfoAccessStruct PKIX_PL_InfoAccess; 130 typedef struct PKIX_PL_AIAMgrStruct PKIX_PL_AIAMgr; 131 typedef struct PKIX_PL_OcspCertIDStruct PKIX_PL_OcspCertID; 132 typedef struct PKIX_PL_OcspRequestStruct PKIX_PL_OcspRequest; 133 typedef struct PKIX_PL_OcspResponseStruct PKIX_PL_OcspResponse; 134 typedef struct PKIX_PL_HttpClientStruct PKIX_PL_HttpClient; 135 typedef struct PKIX_PL_HttpDefaultClientStruct PKIX_PL_HttpDefaultClient; 136 typedef struct PKIX_PL_HttpCertStoreContextStruct PKIX_PL_HttpCertStoreContext; 137 138 /* Primitive types 139 * 140 * In order to guarantee desired behavior as well as platform-independence, we 141 * typedef these types depending on the platform. XXX This needs more work! 142 */ 143 144 /* XXX Try compiling these files (and maybe the whole libpkix-nss) on Win32. 145 * We don't know what type is at least 32 bits long. ISO C probably requires 146 * at least 32 bits for long. we could default to that and only list platforms 147 * where that's not true. 148 * 149 * #elif 150 * #error 151 * #endif 152 */ 153 154 /* currently, int is 32 bits on all our supported platforms */ 155 156 typedef unsigned int PKIX_UInt32; 157 typedef int PKIX_Int32; 158 159 typedef int PKIX_Boolean; 160 161 /* Object Types 162 * 163 * Every reference-counted PKIX_PL_Object is associated with an integer type. 164 */ 165 #define PKIX_TYPES \ 166 TYPEMACRO(AIAMGR), \ 167 TYPEMACRO(BASICCONSTRAINTSCHECKERSTATE), \ 168 TYPEMACRO(BIGINT), \ 169 TYPEMACRO(BUILDRESULT), \ 170 TYPEMACRO(BYTEARRAY), \ 171 TYPEMACRO(CERT), \ 172 TYPEMACRO(CERTBASICCONSTRAINTS), \ 173 TYPEMACRO(CERTCHAINCHECKER), \ 174 TYPEMACRO(CERTNAMECONSTRAINTS), \ 175 TYPEMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ 176 TYPEMACRO(CERTPOLICYCHECKERSTATE), \ 177 TYPEMACRO(CERTPOLICYINFO), \ 178 TYPEMACRO(CERTPOLICYMAP), \ 179 TYPEMACRO(CERTPOLICYNODE), \ 180 TYPEMACRO(CERTPOLICYQUALIFIER), \ 181 TYPEMACRO(CERTSELECTOR), \ 182 TYPEMACRO(CERTSTORE), \ 183 TYPEMACRO(COLLECTIONCERTSTORECONTEXT), \ 184 TYPEMACRO(COMCERTSELPARAMS), \ 185 TYPEMACRO(COMCRLSELPARAMS), \ 186 TYPEMACRO(CRL), \ 187 TYPEMACRO(CRLDP), \ 188 TYPEMACRO(CRLENTRY), \ 189 TYPEMACRO(CRLSELECTOR), \ 190 TYPEMACRO(DATE), \ 191 TYPEMACRO(CRLCHECKER), \ 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 228 #define TYPEMACRO(type) PKIX_ ## type ## _TYPE 229 230 typedef enum { /* Now invoke all those TYPEMACROs to assign the numbers */ 231 PKIX_TYPES, 232 PKIX_NUMTYPES /* This gets PKIX_NUMTYPES defined as the total number */ 233 } PKIX_TYPENUM; 234 235 236 #ifdef PKIX_USER_OBJECT_TYPE 237 238 /* User Define Object Types 239 * 240 * User may define their own object types offset from PKIX_USER_OBJECT_TYPE 241 */ 242 #define PKIX_USER_OBJECT_TYPEBASE 1000 243 244 #endif /* PKIX_USER_OBJECT_TYPE */ 245 246 /* Error Codes 247 * 248 * This list is used to define a set of PKIX_Error exception class numbers. 249 * ERRMACRO is redefined to produce a corresponding set of 250 * strings in the table "const char *PKIX_ERRORCLASSNAMES[PKIX_NUMERRORCLASSES]" in 251 * 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 253 * initialized in pkix_error.c with the value "MUTEX". 254 */ 255 #define PKIX_ERRORCLASSES \ 256 ERRMACRO(AIAMGR), \ 257 ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), \ 258 ERRMACRO(BIGINT), \ 259 ERRMACRO(BUILD), \ 260 ERRMACRO(BUILDRESULT), \ 261 ERRMACRO(BYTEARRAY), \ 262 ERRMACRO(CERT), \ 263 ERRMACRO(CERTBASICCONSTRAINTS), \ 264 ERRMACRO(CERTCHAINCHECKER), \ 265 ERRMACRO(CERTNAMECONSTRAINTS), \ 266 ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ 267 ERRMACRO(CERTPOLICYCHECKERSTATE), \ 268 ERRMACRO(CERTPOLICYINFO), \ 269 ERRMACRO(CERTPOLICYMAP), \ 270 ERRMACRO(CERTPOLICYNODE), \ 271 ERRMACRO(CERTPOLICYQUALIFIER), \ 272 ERRMACRO(CERTSELECTOR), \ 273 ERRMACRO(CERTSTORE), \ 274 ERRMACRO(CERTVFYPKIX), \ 275 ERRMACRO(COLLECTIONCERTSTORECONTEXT), \ 276 ERRMACRO(COMCERTSELPARAMS), \ 277 ERRMACRO(COMCRLSELPARAMS), \ 278 ERRMACRO(CONTEXT), \ 279 ERRMACRO(CRL), \ 280 ERRMACRO(CRLDP), \ 281 ERRMACRO(CRLENTRY), \ 282 ERRMACRO(CRLSELECTOR), \ 283 ERRMACRO(CRLCHECKER), \ 284 ERRMACRO(DATE), \ 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 328 #define ERRMACRO(type) PKIX_ ## type ## _ERROR 329 330 typedef enum { /* Now invoke all those ERRMACROs to assign the numbers */ 331 PKIX_ERRORCLASSES, 332 PKIX_NUMERRORCLASSES /* This gets PKIX_NUMERRORCLASSES defined as the total number */ 333 } PKIX_ERRORCLASS; 334 335 /* Now define error strings (for internationalization) */ 336 337 #define PKIX_ERRORENTRY(name,desc,plerr) PKIX_ ## name 338 339 /* Define all the error numbers */ 340 typedef enum { 341 #include "pkix_errorstrings.h" 342 , PKIX_NUMERRORCODES 343 } PKIX_ERRORCODE; 344 345 extern const char * const PKIX_ErrorText[]; 346 347 /* String Formats 348 * 349 * These formats specify supported encoding formats for Strings. 350 */ 351 352 #define PKIX_ESCASCII 0 353 #define PKIX_UTF8 1 354 #define PKIX_UTF16 2 355 #define PKIX_UTF8_NULL_TERM 3 356 #define PKIX_ESCASCII_DEBUG 4 357 358 /* Name Types 359 * 360 * These types specify supported formats for GeneralNames. 361 */ 362 363 #define PKIX_OTHER_NAME 1 364 #define PKIX_RFC822_NAME 2 365 #define PKIX_DNS_NAME 3 366 #define PKIX_X400_ADDRESS 4 367 #define PKIX_DIRECTORY_NAME 5 368 #define PKIX_EDIPARTY_NAME 6 369 #define PKIX_URI_NAME 7 370 #define PKIX_IP_NAME 8 371 #define PKIX_OID_NAME 9 372 373 /* Key Usages 374 * 375 * These types specify supported Key Usages 376 */ 377 378 #define PKIX_DIGITAL_SIGNATURE 0x001 379 #define PKIX_NON_REPUDIATION 0x002 380 #define PKIX_KEY_ENCIPHERMENT 0x004 381 #define PKIX_DATA_ENCIPHERMENT 0x008 382 #define PKIX_KEY_AGREEMENT 0x010 383 #define PKIX_KEY_CERT_SIGN 0x020 384 #define PKIX_CRL_SIGN 0x040 385 #define PKIX_ENCIPHER_ONLY 0x080 386 #define PKIX_DECIPHER_ONLY 0x100 387 388 /* Reason Flags 389 * 390 * These macros specify supported Reason Flags 391 */ 392 393 #define PKIX_UNUSED 0x001 394 #define PKIX_KEY_COMPROMISE 0x002 395 #define PKIX_CA_COMPROMISE 0x004 396 #define PKIX_AFFILIATION_CHANGED 0x008 397 #define PKIX_SUPERSEDED 0x010 398 #define PKIX_CESSATION_OF_OPERATION 0x020 399 #define PKIX_CERTIFICATE_HOLD 0x040 400 #define PKIX_PRIVILEGE_WITHDRAWN 0x080 401 #define PKIX_AA_COMPROMISE 0x100 402 403 /* Boolean values 404 * 405 * 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 407 * and this is just a convenient mnemonic macro? 408 */ 409 410 #define PKIX_TRUE ((PKIX_Boolean) 1) 411 #define PKIX_FALSE ((PKIX_Boolean) 0) 412 413 /* 414 * Define constants for basic constraints selector 415 * (see comments in pkix_certsel.h) 416 */ 417 418 #define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2) 419 #define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1) 420 421 /* 422 * 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 424 * thrown for other unrecoverable errors. PKIX_ALLOC_ERROR is immutable. 425 * IncRef, DecRef and all Settor functions cannot be called. 426 * XXX Does anyone actually need to know about this? 427 * XXX Why no DecRef? Would be good to handle it the same. 428 */ 429 430 PKIX_Error* PKIX_ALLOC_ERROR(void); 431 432 /* 433 * In a CertBasicConstraints extension, if the CA flag is set, 434 * indicating the certificate refers to a Certification 435 * Authority, then the pathLen field indicates how many intermediate 436 * certificates (not counting self-signed ones) can exist in a valid 437 * chain following this certificate. If the pathLen has the value 438 * of this constant, then the length of the chain is unlimited 439 */ 440 #define PKIX_UNLIMITED_PATH_CONSTRAINT ((PKIX_Int32) -1) 441 442 /* 443 * Define Certificate Extension hard-coded OID's 444 */ 445 #define PKIX_UNKNOWN_OID SEC_OID_UNKNOWN 446 #define PKIX_CERTKEYUSAGE_OID SEC_OID_X509_KEY_USAGE 447 #define PKIX_CERTSUBJALTNAME_OID SEC_OID_X509_SUBJECT_ALT_NAME 448 #define PKIX_BASICCONSTRAINTS_OID SEC_OID_X509_BASIC_CONSTRAINTS 449 #define PKIX_CRLREASONCODE_OID SEC_OID_X509_REASON_CODE 450 #define PKIX_NAMECONSTRAINTS_OID SEC_OID_X509_NAME_CONSTRAINTS 451 #define PKIX_CERTIFICATEPOLICIES_OID SEC_OID_X509_CERTIFICATE_POLICIES 452 #define PKIX_CERTIFICATEPOLICIES_ANYPOLICY_OID SEC_OID_X509_ANY_POLICY 453 #define PKIX_POLICYMAPPINGS_OID SEC_OID_X509_POLICY_MAPPINGS 454 #define PKIX_POLICYCONSTRAINTS_OID SEC_OID_X509_POLICY_CONSTRAINTS 455 #define PKIX_EXTENDEDKEYUSAGE_OID SEC_OID_X509_EXT_KEY_USAGE 456 #define PKIX_INHIBITANYPOLICY_OID SEC_OID_X509_INHIBIT_ANY_POLICY 457 #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 459 #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 461 #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 463 #define PKIX_KEY_USAGE_OCSP_RESPONDER_OID SEC_OID_OCSP_RESPONDER 464 465 466 /* Available revocation method types. */ 467 typedef enum PKIX_RevocationMethodTypeEnum { 468 PKIX_RevocationMethod_CRL = 0, 469 PKIX_RevocationMethod_OCSP, 470 PKIX_RevocationMethod_MAX 471 } PKIX_RevocationMethodType; 472 473 /* A set of statuses revocation checker operates on */ 474 typedef enum PKIX_RevocationStatusEnum { 475 PKIX_RevStatus_NoInfo = 0, 476 PKIX_RevStatus_Revoked, 477 PKIX_RevStatus_Success 478 } PKIX_RevocationStatus; 479 480 481 #ifdef __cplusplus 482 } 483 #endif 484 485 #endif /* _PKIXT_H */ 486