security/nss/lib/libpkix/include/pkixt.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rwxr-xr-x

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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  */
    10 #ifndef _PKIXT_H
    11 #define _PKIXT_H
    13 #ifdef __cplusplus
    14 extern "C" {
    15 #endif
    17 #include "secerr.h"
    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  */
    43 /* Version
    44  *
    45  * These macros specify the major and minor version of the libpkix API defined
    46  * by this header file.
    47  */
    49 #define PKIX_MAJOR_VERSION              ((PKIX_UInt32) 0)
    50 #define PKIX_MINOR_VERSION              ((PKIX_UInt32) 3)
    52 /* Maximum minor version
    53  *
    54  * This macro is used to specify that the caller wants the largest minor
    55  * version available.
    56  */
    58 #define PKIX_MAX_MINOR_VERSION          ((PKIX_UInt32) 4000000000)
    60 /* Define Cert Store type for database access */
    61 #define PKIX_STORE_TYPE_NONE            0
    62 #define PKIX_STORE_TYPE_PK11            1
    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  */
    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;
    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  */
    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;
   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  */
   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  */
   154 /* currently, int is 32 bits on all our supported platforms */
   156 typedef unsigned int PKIX_UInt32;
   157 typedef int PKIX_Int32;
   159 typedef int PKIX_Boolean;
   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)
   228 #define TYPEMACRO(type) PKIX_ ## type ## _TYPE
   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;
   236 #ifdef PKIX_USER_OBJECT_TYPE
   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
   244 #endif /* PKIX_USER_OBJECT_TYPE */
   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)
   328 #define ERRMACRO(type) PKIX_ ## type ## _ERROR
   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;
   335 /* Now define error strings (for internationalization) */
   337 #define PKIX_ERRORENTRY(name,desc,plerr) PKIX_ ## name
   339 /* Define all the error numbers */
   340 typedef enum    {
   341 #include "pkix_errorstrings.h"
   342 , PKIX_NUMERRORCODES
   343 } PKIX_ERRORCODE;
   345 extern const char * const PKIX_ErrorText[];
   347 /* String Formats
   348  *
   349  * These formats specify supported encoding formats for Strings.
   350  */
   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
   358 /* Name Types
   359  *
   360  * These types specify supported formats for GeneralNames.
   361  */
   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
   373 /* Key Usages
   374  *
   375  * These types specify supported Key Usages
   376  */
   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
   388 /* Reason Flags
   389  *
   390  * These macros specify supported Reason Flags
   391  */
   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
   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  */
   410 #define PKIX_TRUE                       ((PKIX_Boolean) 1)
   411 #define PKIX_FALSE                      ((PKIX_Boolean) 0)
   413 /*
   414  * Define constants for basic constraints selector
   415  *      (see comments in pkix_certsel.h)
   416  */
   418 #define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2)
   419 #define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1)
   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  */
   430 PKIX_Error* PKIX_ALLOC_ERROR(void);
   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)
   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
   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;
   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;
   481 #ifdef __cplusplus
   482 }
   483 #endif
   485 #endif /* _PKIXT_H */

mercurial