michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: /* michael@0: * This file defines the types in the libpkix API. michael@0: * XXX Maybe we should specify the API version number in all API header files michael@0: * michael@0: */ michael@0: michael@0: #ifndef _PKIXT_H michael@0: #define _PKIXT_H michael@0: michael@0: #ifdef __cplusplus michael@0: extern "C" { michael@0: #endif michael@0: michael@0: #include "secerr.h" michael@0: michael@0: /* Types michael@0: * michael@0: * This header file provides typedefs for the abstract types used by libpkix. michael@0: * It also provides several useful macros. michael@0: * michael@0: * Note that all these abstract types are typedef'd as opaque structures. This michael@0: * is intended to discourage the caller from looking at the contents directly, michael@0: * since the format of the contents may change from one version of the library michael@0: * to the next. Instead, callers should only access these types using the michael@0: * functions defined in the public header files. michael@0: * michael@0: * An instance of an abstract type defined in this file is called an "object" michael@0: * here, although C does not have real support for objects. michael@0: * michael@0: * Because C does not typically have automatic garbage collection, the caller michael@0: * is expected to release the reference to any object that they create or that michael@0: * is returned to them by a libpkix function. The caller should do this by michael@0: * using the PKIX_PL_Object_DecRef function. Note that the caller should not michael@0: * release the reference to an object if the object has been passed to a michael@0: * libpkix function and that function has not returned. michael@0: * michael@0: * Please refer to libpkix Programmer's Guide for more details. michael@0: */ michael@0: michael@0: /* Version michael@0: * michael@0: * These macros specify the major and minor version of the libpkix API defined michael@0: * by this header file. michael@0: */ michael@0: michael@0: #define PKIX_MAJOR_VERSION ((PKIX_UInt32) 0) michael@0: #define PKIX_MINOR_VERSION ((PKIX_UInt32) 3) michael@0: michael@0: /* Maximum minor version michael@0: * michael@0: * This macro is used to specify that the caller wants the largest minor michael@0: * version available. michael@0: */ michael@0: michael@0: #define PKIX_MAX_MINOR_VERSION ((PKIX_UInt32) 4000000000) michael@0: michael@0: /* Define Cert Store type for database access */ michael@0: #define PKIX_STORE_TYPE_NONE 0 michael@0: #define PKIX_STORE_TYPE_PK11 1 michael@0: michael@0: /* Portable Code (PC) data types michael@0: * michael@0: * These types are used to perform the primary operations of this library: michael@0: * building and validating chains of X.509 certificates. michael@0: */ michael@0: michael@0: typedef struct PKIX_ErrorStruct PKIX_Error; michael@0: typedef struct PKIX_ProcessingParamsStruct PKIX_ProcessingParams; michael@0: typedef struct PKIX_ValidateParamsStruct PKIX_ValidateParams; michael@0: typedef struct PKIX_ValidateResultStruct PKIX_ValidateResult; michael@0: typedef struct PKIX_ResourceLimitsStruct PKIX_ResourceLimits; michael@0: typedef struct PKIX_BuildResultStruct PKIX_BuildResult; michael@0: typedef struct PKIX_CertStoreStruct PKIX_CertStore; michael@0: typedef struct PKIX_CertChainCheckerStruct PKIX_CertChainChecker; michael@0: typedef struct PKIX_RevocationCheckerStruct PKIX_RevocationChecker; michael@0: typedef struct PKIX_CertSelectorStruct PKIX_CertSelector; michael@0: typedef struct PKIX_CRLSelectorStruct PKIX_CRLSelector; michael@0: typedef struct PKIX_ComCertSelParamsStruct PKIX_ComCertSelParams; michael@0: typedef struct PKIX_ComCRLSelParamsStruct PKIX_ComCRLSelParams; michael@0: typedef struct PKIX_TrustAnchorStruct PKIX_TrustAnchor; michael@0: typedef struct PKIX_PolicyNodeStruct PKIX_PolicyNode; michael@0: typedef struct PKIX_LoggerStruct PKIX_Logger; michael@0: typedef struct PKIX_ListStruct PKIX_List; michael@0: typedef struct PKIX_ForwardBuilderStateStruct PKIX_ForwardBuilderState; michael@0: typedef struct PKIX_DefaultRevocationCheckerStruct michael@0: PKIX_DefaultRevocationChecker; michael@0: typedef struct PKIX_VerifyNodeStruct PKIX_VerifyNode; michael@0: michael@0: /* Portability Layer (PL) data types michael@0: * michael@0: * These types are used are used as portable data types that are defined michael@0: * consistently across platforms michael@0: */ michael@0: michael@0: typedef struct PKIX_PL_NssContextStruct PKIX_PL_NssContext; michael@0: typedef struct PKIX_PL_ObjectStruct PKIX_PL_Object; michael@0: typedef struct PKIX_PL_ByteArrayStruct PKIX_PL_ByteArray; michael@0: typedef struct PKIX_PL_HashTableStruct PKIX_PL_HashTable; michael@0: typedef struct PKIX_PL_MutexStruct PKIX_PL_Mutex; michael@0: typedef struct PKIX_PL_RWLockStruct PKIX_PL_RWLock; michael@0: typedef struct PKIX_PL_MonitorLockStruct PKIX_PL_MonitorLock; michael@0: typedef struct PKIX_PL_BigIntStruct PKIX_PL_BigInt; michael@0: typedef struct PKIX_PL_StringStruct PKIX_PL_String; michael@0: typedef struct PKIX_PL_OIDStruct PKIX_PL_OID; michael@0: typedef struct PKIX_PL_CertStruct PKIX_PL_Cert; michael@0: typedef struct PKIX_PL_GeneralNameStruct PKIX_PL_GeneralName; michael@0: typedef struct PKIX_PL_X500NameStruct PKIX_PL_X500Name; michael@0: typedef struct PKIX_PL_PublicKeyStruct PKIX_PL_PublicKey; michael@0: typedef struct PKIX_PL_DateStruct PKIX_PL_Date; michael@0: typedef struct PKIX_PL_CertNameConstraintsStruct PKIX_PL_CertNameConstraints; michael@0: typedef struct PKIX_PL_CertBasicConstraintsStruct PKIX_PL_CertBasicConstraints; michael@0: typedef struct PKIX_PL_CertPoliciesStruct PKIX_PL_CertPolicies; michael@0: typedef struct PKIX_PL_CertPolicyInfoStruct PKIX_PL_CertPolicyInfo; michael@0: typedef struct PKIX_PL_CertPolicyQualifierStruct PKIX_PL_CertPolicyQualifier; michael@0: typedef struct PKIX_PL_CertPolicyMapStruct PKIX_PL_CertPolicyMap; michael@0: typedef struct PKIX_PL_CRLStruct PKIX_PL_CRL; michael@0: typedef struct PKIX_PL_CRLEntryStruct PKIX_PL_CRLEntry; michael@0: typedef struct PKIX_PL_CollectionCertStoreStruct PKIX_PL_CollectionCertStore; michael@0: typedef struct PKIX_PL_CollectionCertStoreContext michael@0: PKIX_PL_CollectionCertStoreContext; michael@0: typedef struct PKIX_PL_LdapCertStoreContext PKIX_PL_LdapCertStoreContext; michael@0: typedef struct PKIX_PL_LdapRequestStruct PKIX_PL_LdapRequest; michael@0: typedef struct PKIX_PL_LdapResponseStruct PKIX_PL_LdapResponse; michael@0: typedef struct PKIX_PL_LdapDefaultClientStruct PKIX_PL_LdapDefaultClient; michael@0: typedef struct PKIX_PL_SocketStruct PKIX_PL_Socket; michael@0: typedef struct PKIX_PL_InfoAccessStruct PKIX_PL_InfoAccess; michael@0: typedef struct PKIX_PL_AIAMgrStruct PKIX_PL_AIAMgr; michael@0: typedef struct PKIX_PL_OcspCertIDStruct PKIX_PL_OcspCertID; michael@0: typedef struct PKIX_PL_OcspRequestStruct PKIX_PL_OcspRequest; michael@0: typedef struct PKIX_PL_OcspResponseStruct PKIX_PL_OcspResponse; michael@0: typedef struct PKIX_PL_HttpClientStruct PKIX_PL_HttpClient; michael@0: typedef struct PKIX_PL_HttpDefaultClientStruct PKIX_PL_HttpDefaultClient; michael@0: typedef struct PKIX_PL_HttpCertStoreContextStruct PKIX_PL_HttpCertStoreContext; michael@0: michael@0: /* Primitive types michael@0: * michael@0: * In order to guarantee desired behavior as well as platform-independence, we michael@0: * typedef these types depending on the platform. XXX This needs more work! michael@0: */ michael@0: michael@0: /* XXX Try compiling these files (and maybe the whole libpkix-nss) on Win32. michael@0: * We don't know what type is at least 32 bits long. ISO C probably requires michael@0: * at least 32 bits for long. we could default to that and only list platforms michael@0: * where that's not true. michael@0: * michael@0: * #elif michael@0: * #error michael@0: * #endif michael@0: */ michael@0: michael@0: /* currently, int is 32 bits on all our supported platforms */ michael@0: michael@0: typedef unsigned int PKIX_UInt32; michael@0: typedef int PKIX_Int32; michael@0: michael@0: typedef int PKIX_Boolean; michael@0: michael@0: /* Object Types michael@0: * michael@0: * Every reference-counted PKIX_PL_Object is associated with an integer type. michael@0: */ michael@0: #define PKIX_TYPES \ michael@0: TYPEMACRO(AIAMGR), \ michael@0: TYPEMACRO(BASICCONSTRAINTSCHECKERSTATE), \ michael@0: TYPEMACRO(BIGINT), \ michael@0: TYPEMACRO(BUILDRESULT), \ michael@0: TYPEMACRO(BYTEARRAY), \ michael@0: TYPEMACRO(CERT), \ michael@0: TYPEMACRO(CERTBASICCONSTRAINTS), \ michael@0: TYPEMACRO(CERTCHAINCHECKER), \ michael@0: TYPEMACRO(CERTNAMECONSTRAINTS), \ michael@0: TYPEMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ michael@0: TYPEMACRO(CERTPOLICYCHECKERSTATE), \ michael@0: TYPEMACRO(CERTPOLICYINFO), \ michael@0: TYPEMACRO(CERTPOLICYMAP), \ michael@0: TYPEMACRO(CERTPOLICYNODE), \ michael@0: TYPEMACRO(CERTPOLICYQUALIFIER), \ michael@0: TYPEMACRO(CERTSELECTOR), \ michael@0: TYPEMACRO(CERTSTORE), \ michael@0: TYPEMACRO(COLLECTIONCERTSTORECONTEXT), \ michael@0: TYPEMACRO(COMCERTSELPARAMS), \ michael@0: TYPEMACRO(COMCRLSELPARAMS), \ michael@0: TYPEMACRO(CRL), \ michael@0: TYPEMACRO(CRLDP), \ michael@0: TYPEMACRO(CRLENTRY), \ michael@0: TYPEMACRO(CRLSELECTOR), \ michael@0: TYPEMACRO(DATE), \ michael@0: TYPEMACRO(CRLCHECKER), \ michael@0: TYPEMACRO(EKUCHECKER), \ michael@0: TYPEMACRO(ERROR), \ michael@0: TYPEMACRO(FORWARDBUILDERSTATE), \ michael@0: TYPEMACRO(GENERALNAME), \ michael@0: TYPEMACRO(HASHTABLE), \ michael@0: TYPEMACRO(HTTPCERTSTORECONTEXT), \ michael@0: TYPEMACRO(HTTPDEFAULTCLIENT), \ michael@0: TYPEMACRO(INFOACCESS), \ michael@0: TYPEMACRO(LDAPDEFAULTCLIENT), \ michael@0: TYPEMACRO(LDAPREQUEST), \ michael@0: TYPEMACRO(LDAPRESPONSE), \ michael@0: TYPEMACRO(LIST), \ michael@0: TYPEMACRO(LOGGER), \ michael@0: TYPEMACRO(MONITORLOCK), \ michael@0: TYPEMACRO(MUTEX), \ michael@0: TYPEMACRO(OBJECT), \ michael@0: TYPEMACRO(OCSPCERTID), \ michael@0: TYPEMACRO(OCSPCHECKER), \ michael@0: TYPEMACRO(OCSPREQUEST), \ michael@0: TYPEMACRO(OCSPRESPONSE), \ michael@0: TYPEMACRO(OID), \ michael@0: TYPEMACRO(REVOCATIONCHECKER), \ michael@0: TYPEMACRO(PROCESSINGPARAMS), \ michael@0: TYPEMACRO(PUBLICKEY), \ michael@0: TYPEMACRO(RESOURCELIMITS), \ michael@0: TYPEMACRO(RWLOCK), \ michael@0: TYPEMACRO(SIGNATURECHECKERSTATE), \ michael@0: TYPEMACRO(SOCKET), \ michael@0: TYPEMACRO(STRING), \ michael@0: TYPEMACRO(TARGETCERTCHECKERSTATE), \ michael@0: TYPEMACRO(TRUSTANCHOR), \ michael@0: TYPEMACRO(VALIDATEPARAMS), \ michael@0: TYPEMACRO(VALIDATERESULT), \ michael@0: TYPEMACRO(VERIFYNODE), \ michael@0: TYPEMACRO(X500NAME) michael@0: michael@0: #define TYPEMACRO(type) PKIX_ ## type ## _TYPE michael@0: michael@0: typedef enum { /* Now invoke all those TYPEMACROs to assign the numbers */ michael@0: PKIX_TYPES, michael@0: PKIX_NUMTYPES /* This gets PKIX_NUMTYPES defined as the total number */ michael@0: } PKIX_TYPENUM; michael@0: michael@0: michael@0: #ifdef PKIX_USER_OBJECT_TYPE michael@0: michael@0: /* User Define Object Types michael@0: * michael@0: * User may define their own object types offset from PKIX_USER_OBJECT_TYPE michael@0: */ michael@0: #define PKIX_USER_OBJECT_TYPEBASE 1000 michael@0: michael@0: #endif /* PKIX_USER_OBJECT_TYPE */ michael@0: michael@0: /* Error Codes michael@0: * michael@0: * This list is used to define a set of PKIX_Error exception class numbers. michael@0: * ERRMACRO is redefined to produce a corresponding set of michael@0: * strings in the table "const char *PKIX_ERRORCLASSNAMES[PKIX_NUMERRORCLASSES]" in michael@0: * pkix_error.c. For example, since the fifth ERRMACRO entry is MUTEX, then michael@0: * PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and PKIX_ERRORCLASSNAMES[4] is michael@0: * initialized in pkix_error.c with the value "MUTEX". michael@0: */ michael@0: #define PKIX_ERRORCLASSES \ michael@0: ERRMACRO(AIAMGR), \ michael@0: ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), \ michael@0: ERRMACRO(BIGINT), \ michael@0: ERRMACRO(BUILD), \ michael@0: ERRMACRO(BUILDRESULT), \ michael@0: ERRMACRO(BYTEARRAY), \ michael@0: ERRMACRO(CERT), \ michael@0: ERRMACRO(CERTBASICCONSTRAINTS), \ michael@0: ERRMACRO(CERTCHAINCHECKER), \ michael@0: ERRMACRO(CERTNAMECONSTRAINTS), \ michael@0: ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ michael@0: ERRMACRO(CERTPOLICYCHECKERSTATE), \ michael@0: ERRMACRO(CERTPOLICYINFO), \ michael@0: ERRMACRO(CERTPOLICYMAP), \ michael@0: ERRMACRO(CERTPOLICYNODE), \ michael@0: ERRMACRO(CERTPOLICYQUALIFIER), \ michael@0: ERRMACRO(CERTSELECTOR), \ michael@0: ERRMACRO(CERTSTORE), \ michael@0: ERRMACRO(CERTVFYPKIX), \ michael@0: ERRMACRO(COLLECTIONCERTSTORECONTEXT), \ michael@0: ERRMACRO(COMCERTSELPARAMS), \ michael@0: ERRMACRO(COMCRLSELPARAMS), \ michael@0: ERRMACRO(CONTEXT), \ michael@0: ERRMACRO(CRL), \ michael@0: ERRMACRO(CRLDP), \ michael@0: ERRMACRO(CRLENTRY), \ michael@0: ERRMACRO(CRLSELECTOR), \ michael@0: ERRMACRO(CRLCHECKER), \ michael@0: ERRMACRO(DATE), \ michael@0: ERRMACRO(EKUCHECKER), \ michael@0: ERRMACRO(ERROR), \ michael@0: ERRMACRO(FATAL), \ michael@0: ERRMACRO(FORWARDBUILDERSTATE), \ michael@0: ERRMACRO(GENERALNAME), \ michael@0: ERRMACRO(HASHTABLE), \ michael@0: ERRMACRO(HTTPCERTSTORECONTEXT), \ michael@0: ERRMACRO(HTTPDEFAULTCLIENT), \ michael@0: ERRMACRO(INFOACCESS), \ michael@0: ERRMACRO(LDAPCLIENT), \ michael@0: ERRMACRO(LDAPDEFAULTCLIENT), \ michael@0: ERRMACRO(LDAPREQUEST), \ michael@0: ERRMACRO(LDAPRESPONSE), \ michael@0: ERRMACRO(LIFECYCLE), \ michael@0: ERRMACRO(LIST), \ michael@0: ERRMACRO(LOGGER), \ michael@0: ERRMACRO(MEM), \ michael@0: ERRMACRO(MONITORLOCK), \ michael@0: ERRMACRO(MUTEX), \ michael@0: ERRMACRO(OBJECT), \ michael@0: ERRMACRO(OCSPCERTID), \ michael@0: ERRMACRO(OCSPCHECKER), \ michael@0: ERRMACRO(OCSPREQUEST), \ michael@0: ERRMACRO(OCSPRESPONSE), \ michael@0: ERRMACRO(OID), \ michael@0: ERRMACRO(PROCESSINGPARAMS), \ michael@0: ERRMACRO(PUBLICKEY), \ michael@0: ERRMACRO(RESOURCELIMITS), \ michael@0: ERRMACRO(REVOCATIONMETHOD), \ michael@0: ERRMACRO(REVOCATIONCHECKER), \ michael@0: ERRMACRO(RWLOCK), \ michael@0: ERRMACRO(SIGNATURECHECKERSTATE), \ michael@0: ERRMACRO(SOCKET), \ michael@0: ERRMACRO(STRING), \ michael@0: ERRMACRO(TARGETCERTCHECKERSTATE), \ michael@0: ERRMACRO(TRUSTANCHOR), \ michael@0: ERRMACRO(USERDEFINEDMODULES), \ michael@0: ERRMACRO(VALIDATE), \ michael@0: ERRMACRO(VALIDATEPARAMS), \ michael@0: ERRMACRO(VALIDATERESULT), \ michael@0: ERRMACRO(VERIFYNODE), \ michael@0: ERRMACRO(X500NAME) michael@0: michael@0: #define ERRMACRO(type) PKIX_ ## type ## _ERROR michael@0: michael@0: typedef enum { /* Now invoke all those ERRMACROs to assign the numbers */ michael@0: PKIX_ERRORCLASSES, michael@0: PKIX_NUMERRORCLASSES /* This gets PKIX_NUMERRORCLASSES defined as the total number */ michael@0: } PKIX_ERRORCLASS; michael@0: michael@0: /* Now define error strings (for internationalization) */ michael@0: michael@0: #define PKIX_ERRORENTRY(name,desc,plerr) PKIX_ ## name michael@0: michael@0: /* Define all the error numbers */ michael@0: typedef enum { michael@0: #include "pkix_errorstrings.h" michael@0: , PKIX_NUMERRORCODES michael@0: } PKIX_ERRORCODE; michael@0: michael@0: extern const char * const PKIX_ErrorText[]; michael@0: michael@0: /* String Formats michael@0: * michael@0: * These formats specify supported encoding formats for Strings. michael@0: */ michael@0: michael@0: #define PKIX_ESCASCII 0 michael@0: #define PKIX_UTF8 1 michael@0: #define PKIX_UTF16 2 michael@0: #define PKIX_UTF8_NULL_TERM 3 michael@0: #define PKIX_ESCASCII_DEBUG 4 michael@0: michael@0: /* Name Types michael@0: * michael@0: * These types specify supported formats for GeneralNames. michael@0: */ michael@0: michael@0: #define PKIX_OTHER_NAME 1 michael@0: #define PKIX_RFC822_NAME 2 michael@0: #define PKIX_DNS_NAME 3 michael@0: #define PKIX_X400_ADDRESS 4 michael@0: #define PKIX_DIRECTORY_NAME 5 michael@0: #define PKIX_EDIPARTY_NAME 6 michael@0: #define PKIX_URI_NAME 7 michael@0: #define PKIX_IP_NAME 8 michael@0: #define PKIX_OID_NAME 9 michael@0: michael@0: /* Key Usages michael@0: * michael@0: * These types specify supported Key Usages michael@0: */ michael@0: michael@0: #define PKIX_DIGITAL_SIGNATURE 0x001 michael@0: #define PKIX_NON_REPUDIATION 0x002 michael@0: #define PKIX_KEY_ENCIPHERMENT 0x004 michael@0: #define PKIX_DATA_ENCIPHERMENT 0x008 michael@0: #define PKIX_KEY_AGREEMENT 0x010 michael@0: #define PKIX_KEY_CERT_SIGN 0x020 michael@0: #define PKIX_CRL_SIGN 0x040 michael@0: #define PKIX_ENCIPHER_ONLY 0x080 michael@0: #define PKIX_DECIPHER_ONLY 0x100 michael@0: michael@0: /* Reason Flags michael@0: * michael@0: * These macros specify supported Reason Flags michael@0: */ michael@0: michael@0: #define PKIX_UNUSED 0x001 michael@0: #define PKIX_KEY_COMPROMISE 0x002 michael@0: #define PKIX_CA_COMPROMISE 0x004 michael@0: #define PKIX_AFFILIATION_CHANGED 0x008 michael@0: #define PKIX_SUPERSEDED 0x010 michael@0: #define PKIX_CESSATION_OF_OPERATION 0x020 michael@0: #define PKIX_CERTIFICATE_HOLD 0x040 michael@0: #define PKIX_PRIVILEGE_WITHDRAWN 0x080 michael@0: #define PKIX_AA_COMPROMISE 0x100 michael@0: michael@0: /* Boolean values michael@0: * michael@0: * These macros specify the Boolean values of TRUE and FALSE michael@0: * XXX Is it the case that any non-zero value is actually considered TRUE michael@0: * and this is just a convenient mnemonic macro? michael@0: */ michael@0: michael@0: #define PKIX_TRUE ((PKIX_Boolean) 1) michael@0: #define PKIX_FALSE ((PKIX_Boolean) 0) michael@0: michael@0: /* michael@0: * Define constants for basic constraints selector michael@0: * (see comments in pkix_certsel.h) michael@0: */ michael@0: michael@0: #define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2) michael@0: #define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1) michael@0: michael@0: /* michael@0: * PKIX_ALLOC_ERROR is a special error object hard-coded into the pkix_error.o michael@0: * object file. It is thrown if system memory cannot be allocated or may be michael@0: * thrown for other unrecoverable errors. PKIX_ALLOC_ERROR is immutable. michael@0: * IncRef, DecRef and all Settor functions cannot be called. michael@0: * XXX Does anyone actually need to know about this? michael@0: * XXX Why no DecRef? Would be good to handle it the same. michael@0: */ michael@0: michael@0: PKIX_Error* PKIX_ALLOC_ERROR(void); michael@0: michael@0: /* michael@0: * In a CertBasicConstraints extension, if the CA flag is set, michael@0: * indicating the certificate refers to a Certification michael@0: * Authority, then the pathLen field indicates how many intermediate michael@0: * certificates (not counting self-signed ones) can exist in a valid michael@0: * chain following this certificate. If the pathLen has the value michael@0: * of this constant, then the length of the chain is unlimited michael@0: */ michael@0: #define PKIX_UNLIMITED_PATH_CONSTRAINT ((PKIX_Int32) -1) michael@0: michael@0: /* michael@0: * Define Certificate Extension hard-coded OID's michael@0: */ michael@0: #define PKIX_UNKNOWN_OID SEC_OID_UNKNOWN michael@0: #define PKIX_CERTKEYUSAGE_OID SEC_OID_X509_KEY_USAGE michael@0: #define PKIX_CERTSUBJALTNAME_OID SEC_OID_X509_SUBJECT_ALT_NAME michael@0: #define PKIX_BASICCONSTRAINTS_OID SEC_OID_X509_BASIC_CONSTRAINTS michael@0: #define PKIX_CRLREASONCODE_OID SEC_OID_X509_REASON_CODE michael@0: #define PKIX_NAMECONSTRAINTS_OID SEC_OID_X509_NAME_CONSTRAINTS michael@0: #define PKIX_CERTIFICATEPOLICIES_OID SEC_OID_X509_CERTIFICATE_POLICIES michael@0: #define PKIX_CERTIFICATEPOLICIES_ANYPOLICY_OID SEC_OID_X509_ANY_POLICY michael@0: #define PKIX_POLICYMAPPINGS_OID SEC_OID_X509_POLICY_MAPPINGS michael@0: #define PKIX_POLICYCONSTRAINTS_OID SEC_OID_X509_POLICY_CONSTRAINTS michael@0: #define PKIX_EXTENDEDKEYUSAGE_OID SEC_OID_X509_EXT_KEY_USAGE michael@0: #define PKIX_INHIBITANYPOLICY_OID SEC_OID_X509_INHIBIT_ANY_POLICY michael@0: #define PKIX_NSCERTTYPE_OID SEC_OID_NS_CERT_EXT_CERT_TYPE michael@0: #define PKIX_KEY_USAGE_SERVER_AUTH_OID SEC_OID_EXT_KEY_USAGE_SERVER_AUTH michael@0: #define PKIX_KEY_USAGE_CLIENT_AUTH_OID SEC_OID_EXT_KEY_USAGE_CLIENT_AUTH michael@0: #define PKIX_KEY_USAGE_CODE_SIGN_OID SEC_OID_EXT_KEY_USAGE_CODE_SIGN michael@0: #define PKIX_KEY_USAGE_EMAIL_PROTECT_OID SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT michael@0: #define PKIX_KEY_USAGE_TIME_STAMP_OID SEC_OID_EXT_KEY_USAGE_TIME_STAMP michael@0: #define PKIX_KEY_USAGE_OCSP_RESPONDER_OID SEC_OID_OCSP_RESPONDER michael@0: michael@0: michael@0: /* Available revocation method types. */ michael@0: typedef enum PKIX_RevocationMethodTypeEnum { michael@0: PKIX_RevocationMethod_CRL = 0, michael@0: PKIX_RevocationMethod_OCSP, michael@0: PKIX_RevocationMethod_MAX michael@0: } PKIX_RevocationMethodType; michael@0: michael@0: /* A set of statuses revocation checker operates on */ michael@0: typedef enum PKIX_RevocationStatusEnum { michael@0: PKIX_RevStatus_NoInfo = 0, michael@0: PKIX_RevStatus_Revoked, michael@0: PKIX_RevStatus_Success michael@0: } PKIX_RevocationStatus; michael@0: michael@0: michael@0: #ifdef __cplusplus michael@0: } michael@0: #endif michael@0: michael@0: #endif /* _PKIXT_H */