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

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/nss/lib/libpkix/include/pkixt.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,485 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +/*
     1.8 + * This file defines the types in the libpkix API.
     1.9 + * XXX Maybe we should specify the API version number in all API header files
    1.10 + *
    1.11 + */
    1.12 +
    1.13 +#ifndef _PKIXT_H
    1.14 +#define _PKIXT_H
    1.15 +
    1.16 +#ifdef __cplusplus
    1.17 +extern "C" {
    1.18 +#endif
    1.19 +
    1.20 +#include "secerr.h"
    1.21 +
    1.22 +/* Types
    1.23 + *
    1.24 + * This header file provides typedefs for the abstract types used by libpkix.
    1.25 + * It also provides several useful macros.
    1.26 + *
    1.27 + * Note that all these abstract types are typedef'd as opaque structures. This
    1.28 + * is intended to discourage the caller from looking at the contents directly,
    1.29 + * since the format of the contents may change from one version of the library
    1.30 + * to the next. Instead, callers should only access these types using the
    1.31 + * functions defined in the public header files.
    1.32 + *
    1.33 + * An instance of an abstract type defined in this file is called an "object"
    1.34 + * here, although C does not have real support for objects.
    1.35 + *
    1.36 + * Because C does not typically have automatic garbage collection, the caller
    1.37 + * is expected to release the reference to any object that they create or that
    1.38 + * is returned to them by a libpkix function. The caller should do this by
    1.39 + * using the PKIX_PL_Object_DecRef function. Note that the caller should not
    1.40 + * release the reference to an object if the object has been passed to a
    1.41 + * libpkix function and that function has not returned.
    1.42 + *
    1.43 + * Please refer to libpkix Programmer's Guide for more details.
    1.44 + */
    1.45 +
    1.46 +/* Version
    1.47 + *
    1.48 + * These macros specify the major and minor version of the libpkix API defined
    1.49 + * by this header file.
    1.50 + */
    1.51 +
    1.52 +#define PKIX_MAJOR_VERSION              ((PKIX_UInt32) 0)
    1.53 +#define PKIX_MINOR_VERSION              ((PKIX_UInt32) 3)
    1.54 +
    1.55 +/* Maximum minor version
    1.56 + *
    1.57 + * This macro is used to specify that the caller wants the largest minor
    1.58 + * version available.
    1.59 + */
    1.60 +
    1.61 +#define PKIX_MAX_MINOR_VERSION          ((PKIX_UInt32) 4000000000)
    1.62 +
    1.63 +/* Define Cert Store type for database access */
    1.64 +#define PKIX_STORE_TYPE_NONE            0
    1.65 +#define PKIX_STORE_TYPE_PK11            1
    1.66 +
    1.67 +/* Portable Code (PC) data types
    1.68 + *
    1.69 + * These types are used to perform the primary operations of this library:
    1.70 + * building and validating chains of X.509 certificates.
    1.71 + */
    1.72 +
    1.73 +typedef struct PKIX_ErrorStruct PKIX_Error;
    1.74 +typedef struct PKIX_ProcessingParamsStruct PKIX_ProcessingParams;
    1.75 +typedef struct PKIX_ValidateParamsStruct PKIX_ValidateParams;
    1.76 +typedef struct PKIX_ValidateResultStruct PKIX_ValidateResult;
    1.77 +typedef struct PKIX_ResourceLimitsStruct PKIX_ResourceLimits;
    1.78 +typedef struct PKIX_BuildResultStruct PKIX_BuildResult;
    1.79 +typedef struct PKIX_CertStoreStruct PKIX_CertStore;
    1.80 +typedef struct PKIX_CertChainCheckerStruct PKIX_CertChainChecker;
    1.81 +typedef struct PKIX_RevocationCheckerStruct PKIX_RevocationChecker;
    1.82 +typedef struct PKIX_CertSelectorStruct PKIX_CertSelector;
    1.83 +typedef struct PKIX_CRLSelectorStruct PKIX_CRLSelector;
    1.84 +typedef struct PKIX_ComCertSelParamsStruct PKIX_ComCertSelParams;
    1.85 +typedef struct PKIX_ComCRLSelParamsStruct PKIX_ComCRLSelParams;
    1.86 +typedef struct PKIX_TrustAnchorStruct PKIX_TrustAnchor;
    1.87 +typedef struct PKIX_PolicyNodeStruct PKIX_PolicyNode;
    1.88 +typedef struct PKIX_LoggerStruct PKIX_Logger;
    1.89 +typedef struct PKIX_ListStruct PKIX_List;
    1.90 +typedef struct PKIX_ForwardBuilderStateStruct PKIX_ForwardBuilderState;
    1.91 +typedef struct PKIX_DefaultRevocationCheckerStruct
    1.92 +                        PKIX_DefaultRevocationChecker;
    1.93 +typedef struct PKIX_VerifyNodeStruct PKIX_VerifyNode;
    1.94 +
    1.95 +/* Portability Layer (PL) data types
    1.96 + *
    1.97 + * These types are used are used as portable data types that are defined
    1.98 + * consistently across platforms
    1.99 + */
   1.100 +
   1.101 +typedef struct PKIX_PL_NssContextStruct PKIX_PL_NssContext;
   1.102 +typedef struct PKIX_PL_ObjectStruct PKIX_PL_Object;
   1.103 +typedef struct PKIX_PL_ByteArrayStruct PKIX_PL_ByteArray;
   1.104 +typedef struct PKIX_PL_HashTableStruct PKIX_PL_HashTable;
   1.105 +typedef struct PKIX_PL_MutexStruct PKIX_PL_Mutex;
   1.106 +typedef struct PKIX_PL_RWLockStruct PKIX_PL_RWLock;
   1.107 +typedef struct PKIX_PL_MonitorLockStruct PKIX_PL_MonitorLock;
   1.108 +typedef struct PKIX_PL_BigIntStruct PKIX_PL_BigInt;
   1.109 +typedef struct PKIX_PL_StringStruct PKIX_PL_String;
   1.110 +typedef struct PKIX_PL_OIDStruct PKIX_PL_OID;
   1.111 +typedef struct PKIX_PL_CertStruct PKIX_PL_Cert;
   1.112 +typedef struct PKIX_PL_GeneralNameStruct PKIX_PL_GeneralName;
   1.113 +typedef struct PKIX_PL_X500NameStruct PKIX_PL_X500Name;
   1.114 +typedef struct PKIX_PL_PublicKeyStruct PKIX_PL_PublicKey;
   1.115 +typedef struct PKIX_PL_DateStruct PKIX_PL_Date;
   1.116 +typedef struct PKIX_PL_CertNameConstraintsStruct PKIX_PL_CertNameConstraints;
   1.117 +typedef struct PKIX_PL_CertBasicConstraintsStruct PKIX_PL_CertBasicConstraints;
   1.118 +typedef struct PKIX_PL_CertPoliciesStruct PKIX_PL_CertPolicies;
   1.119 +typedef struct PKIX_PL_CertPolicyInfoStruct PKIX_PL_CertPolicyInfo;
   1.120 +typedef struct PKIX_PL_CertPolicyQualifierStruct PKIX_PL_CertPolicyQualifier;
   1.121 +typedef struct PKIX_PL_CertPolicyMapStruct PKIX_PL_CertPolicyMap;
   1.122 +typedef struct PKIX_PL_CRLStruct PKIX_PL_CRL;
   1.123 +typedef struct PKIX_PL_CRLEntryStruct PKIX_PL_CRLEntry;
   1.124 +typedef struct PKIX_PL_CollectionCertStoreStruct PKIX_PL_CollectionCertStore;
   1.125 +typedef struct PKIX_PL_CollectionCertStoreContext
   1.126 +                        PKIX_PL_CollectionCertStoreContext;
   1.127 +typedef struct PKIX_PL_LdapCertStoreContext PKIX_PL_LdapCertStoreContext;
   1.128 +typedef struct PKIX_PL_LdapRequestStruct PKIX_PL_LdapRequest;
   1.129 +typedef struct PKIX_PL_LdapResponseStruct PKIX_PL_LdapResponse;
   1.130 +typedef struct PKIX_PL_LdapDefaultClientStruct PKIX_PL_LdapDefaultClient;
   1.131 +typedef struct PKIX_PL_SocketStruct PKIX_PL_Socket;
   1.132 +typedef struct PKIX_PL_InfoAccessStruct PKIX_PL_InfoAccess;
   1.133 +typedef struct PKIX_PL_AIAMgrStruct PKIX_PL_AIAMgr;
   1.134 +typedef struct PKIX_PL_OcspCertIDStruct PKIX_PL_OcspCertID;
   1.135 +typedef struct PKIX_PL_OcspRequestStruct PKIX_PL_OcspRequest;
   1.136 +typedef struct PKIX_PL_OcspResponseStruct PKIX_PL_OcspResponse;
   1.137 +typedef struct PKIX_PL_HttpClientStruct PKIX_PL_HttpClient;
   1.138 +typedef struct PKIX_PL_HttpDefaultClientStruct PKIX_PL_HttpDefaultClient;
   1.139 +typedef struct PKIX_PL_HttpCertStoreContextStruct PKIX_PL_HttpCertStoreContext;
   1.140 +
   1.141 +/* Primitive types
   1.142 + *
   1.143 + * In order to guarantee desired behavior as well as platform-independence, we
   1.144 + * typedef these types depending on the platform. XXX This needs more work!
   1.145 + */
   1.146 +
   1.147 +/* XXX Try compiling these files (and maybe the whole libpkix-nss) on Win32.
   1.148 + * We don't know what type is at least 32 bits long. ISO C probably requires
   1.149 + * at least 32 bits for long. we could default to that and only list platforms
   1.150 + * where that's not true.
   1.151 + *
   1.152 + * #elif
   1.153 + * #error
   1.154 + * #endif
   1.155 + */
   1.156 +
   1.157 +/* currently, int is 32 bits on all our supported platforms */
   1.158 +
   1.159 +typedef unsigned int PKIX_UInt32;
   1.160 +typedef int PKIX_Int32;
   1.161 +
   1.162 +typedef int PKIX_Boolean;
   1.163 +
   1.164 +/* Object Types
   1.165 + *
   1.166 + * Every reference-counted PKIX_PL_Object is associated with an integer type.
   1.167 + */
   1.168 +#define PKIX_TYPES \
   1.169 +    TYPEMACRO(AIAMGR), \
   1.170 +    TYPEMACRO(BASICCONSTRAINTSCHECKERSTATE), \
   1.171 +    TYPEMACRO(BIGINT), \
   1.172 +    TYPEMACRO(BUILDRESULT), \
   1.173 +    TYPEMACRO(BYTEARRAY), \
   1.174 +    TYPEMACRO(CERT), \
   1.175 +    TYPEMACRO(CERTBASICCONSTRAINTS), \
   1.176 +    TYPEMACRO(CERTCHAINCHECKER), \
   1.177 +    TYPEMACRO(CERTNAMECONSTRAINTS), \
   1.178 +    TYPEMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \
   1.179 +    TYPEMACRO(CERTPOLICYCHECKERSTATE), \
   1.180 +    TYPEMACRO(CERTPOLICYINFO), \
   1.181 +    TYPEMACRO(CERTPOLICYMAP), \
   1.182 +    TYPEMACRO(CERTPOLICYNODE), \
   1.183 +    TYPEMACRO(CERTPOLICYQUALIFIER), \
   1.184 +    TYPEMACRO(CERTSELECTOR), \
   1.185 +    TYPEMACRO(CERTSTORE), \
   1.186 +    TYPEMACRO(COLLECTIONCERTSTORECONTEXT), \
   1.187 +    TYPEMACRO(COMCERTSELPARAMS), \
   1.188 +    TYPEMACRO(COMCRLSELPARAMS), \
   1.189 +    TYPEMACRO(CRL), \
   1.190 +    TYPEMACRO(CRLDP), \
   1.191 +    TYPEMACRO(CRLENTRY), \
   1.192 +    TYPEMACRO(CRLSELECTOR), \
   1.193 +    TYPEMACRO(DATE), \
   1.194 +    TYPEMACRO(CRLCHECKER), \
   1.195 +    TYPEMACRO(EKUCHECKER), \
   1.196 +    TYPEMACRO(ERROR), \
   1.197 +    TYPEMACRO(FORWARDBUILDERSTATE), \
   1.198 +    TYPEMACRO(GENERALNAME), \
   1.199 +    TYPEMACRO(HASHTABLE), \
   1.200 +    TYPEMACRO(HTTPCERTSTORECONTEXT), \
   1.201 +    TYPEMACRO(HTTPDEFAULTCLIENT), \
   1.202 +    TYPEMACRO(INFOACCESS), \
   1.203 +    TYPEMACRO(LDAPDEFAULTCLIENT), \
   1.204 +    TYPEMACRO(LDAPREQUEST), \
   1.205 +    TYPEMACRO(LDAPRESPONSE), \
   1.206 +    TYPEMACRO(LIST), \
   1.207 +    TYPEMACRO(LOGGER), \
   1.208 +    TYPEMACRO(MONITORLOCK), \
   1.209 +    TYPEMACRO(MUTEX), \
   1.210 +    TYPEMACRO(OBJECT), \
   1.211 +    TYPEMACRO(OCSPCERTID), \
   1.212 +    TYPEMACRO(OCSPCHECKER), \
   1.213 +    TYPEMACRO(OCSPREQUEST), \
   1.214 +    TYPEMACRO(OCSPRESPONSE), \
   1.215 +    TYPEMACRO(OID), \
   1.216 +    TYPEMACRO(REVOCATIONCHECKER), \
   1.217 +    TYPEMACRO(PROCESSINGPARAMS), \
   1.218 +    TYPEMACRO(PUBLICKEY), \
   1.219 +    TYPEMACRO(RESOURCELIMITS), \
   1.220 +    TYPEMACRO(RWLOCK), \
   1.221 +    TYPEMACRO(SIGNATURECHECKERSTATE), \
   1.222 +    TYPEMACRO(SOCKET), \
   1.223 +    TYPEMACRO(STRING), \
   1.224 +    TYPEMACRO(TARGETCERTCHECKERSTATE), \
   1.225 +    TYPEMACRO(TRUSTANCHOR), \
   1.226 +    TYPEMACRO(VALIDATEPARAMS), \
   1.227 +    TYPEMACRO(VALIDATERESULT), \
   1.228 +    TYPEMACRO(VERIFYNODE), \
   1.229 +    TYPEMACRO(X500NAME)
   1.230 +
   1.231 +#define TYPEMACRO(type) PKIX_ ## type ## _TYPE
   1.232 +
   1.233 +typedef enum {     /* Now invoke all those TYPEMACROs to assign the numbers */
   1.234 +   PKIX_TYPES,
   1.235 +   PKIX_NUMTYPES   /* This gets PKIX_NUMTYPES defined as the total number */
   1.236 +} PKIX_TYPENUM;
   1.237 +
   1.238 +
   1.239 +#ifdef PKIX_USER_OBJECT_TYPE
   1.240 +
   1.241 +/* User Define Object Types
   1.242 + *
   1.243 + * User may define their own object types offset from PKIX_USER_OBJECT_TYPE
   1.244 + */
   1.245 +#define PKIX_USER_OBJECT_TYPEBASE 1000
   1.246 +
   1.247 +#endif /* PKIX_USER_OBJECT_TYPE */
   1.248 +
   1.249 +/* Error Codes
   1.250 + *
   1.251 + * This list is used to define a set of PKIX_Error exception class numbers.
   1.252 + * ERRMACRO is redefined to produce a corresponding set of
   1.253 + * strings in the table "const char *PKIX_ERRORCLASSNAMES[PKIX_NUMERRORCLASSES]" in
   1.254 + * pkix_error.c. For example, since the fifth ERRMACRO entry is MUTEX, then
   1.255 + * PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and PKIX_ERRORCLASSNAMES[4] is
   1.256 + * initialized in pkix_error.c with the value "MUTEX".
   1.257 + */
   1.258 +#define PKIX_ERRORCLASSES \
   1.259 +   ERRMACRO(AIAMGR), \
   1.260 +   ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), \
   1.261 +   ERRMACRO(BIGINT), \
   1.262 +   ERRMACRO(BUILD), \
   1.263 +   ERRMACRO(BUILDRESULT), \
   1.264 +   ERRMACRO(BYTEARRAY), \
   1.265 +   ERRMACRO(CERT), \
   1.266 +   ERRMACRO(CERTBASICCONSTRAINTS), \
   1.267 +   ERRMACRO(CERTCHAINCHECKER), \
   1.268 +   ERRMACRO(CERTNAMECONSTRAINTS), \
   1.269 +   ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \
   1.270 +   ERRMACRO(CERTPOLICYCHECKERSTATE), \
   1.271 +   ERRMACRO(CERTPOLICYINFO), \
   1.272 +   ERRMACRO(CERTPOLICYMAP), \
   1.273 +   ERRMACRO(CERTPOLICYNODE), \
   1.274 +   ERRMACRO(CERTPOLICYQUALIFIER), \
   1.275 +   ERRMACRO(CERTSELECTOR), \
   1.276 +   ERRMACRO(CERTSTORE), \
   1.277 +   ERRMACRO(CERTVFYPKIX), \
   1.278 +   ERRMACRO(COLLECTIONCERTSTORECONTEXT), \
   1.279 +   ERRMACRO(COMCERTSELPARAMS), \
   1.280 +   ERRMACRO(COMCRLSELPARAMS), \
   1.281 +   ERRMACRO(CONTEXT), \
   1.282 +   ERRMACRO(CRL), \
   1.283 +   ERRMACRO(CRLDP), \
   1.284 +   ERRMACRO(CRLENTRY), \
   1.285 +   ERRMACRO(CRLSELECTOR), \
   1.286 +   ERRMACRO(CRLCHECKER), \
   1.287 +   ERRMACRO(DATE), \
   1.288 +   ERRMACRO(EKUCHECKER), \
   1.289 +   ERRMACRO(ERROR), \
   1.290 +   ERRMACRO(FATAL), \
   1.291 +   ERRMACRO(FORWARDBUILDERSTATE), \
   1.292 +   ERRMACRO(GENERALNAME), \
   1.293 +   ERRMACRO(HASHTABLE), \
   1.294 +   ERRMACRO(HTTPCERTSTORECONTEXT), \
   1.295 +   ERRMACRO(HTTPDEFAULTCLIENT), \
   1.296 +   ERRMACRO(INFOACCESS), \
   1.297 +   ERRMACRO(LDAPCLIENT), \
   1.298 +   ERRMACRO(LDAPDEFAULTCLIENT), \
   1.299 +   ERRMACRO(LDAPREQUEST), \
   1.300 +   ERRMACRO(LDAPRESPONSE), \
   1.301 +   ERRMACRO(LIFECYCLE), \
   1.302 +   ERRMACRO(LIST), \
   1.303 +   ERRMACRO(LOGGER), \
   1.304 +   ERRMACRO(MEM), \
   1.305 +   ERRMACRO(MONITORLOCK), \
   1.306 +   ERRMACRO(MUTEX), \
   1.307 +   ERRMACRO(OBJECT), \
   1.308 +   ERRMACRO(OCSPCERTID), \
   1.309 +   ERRMACRO(OCSPCHECKER), \
   1.310 +   ERRMACRO(OCSPREQUEST), \
   1.311 +   ERRMACRO(OCSPRESPONSE), \
   1.312 +   ERRMACRO(OID), \
   1.313 +   ERRMACRO(PROCESSINGPARAMS), \
   1.314 +   ERRMACRO(PUBLICKEY), \
   1.315 +   ERRMACRO(RESOURCELIMITS), \
   1.316 +   ERRMACRO(REVOCATIONMETHOD), \
   1.317 +   ERRMACRO(REVOCATIONCHECKER), \
   1.318 +   ERRMACRO(RWLOCK), \
   1.319 +   ERRMACRO(SIGNATURECHECKERSTATE), \
   1.320 +   ERRMACRO(SOCKET), \
   1.321 +   ERRMACRO(STRING), \
   1.322 +   ERRMACRO(TARGETCERTCHECKERSTATE), \
   1.323 +   ERRMACRO(TRUSTANCHOR), \
   1.324 +   ERRMACRO(USERDEFINEDMODULES), \
   1.325 +   ERRMACRO(VALIDATE), \
   1.326 +   ERRMACRO(VALIDATEPARAMS), \
   1.327 +   ERRMACRO(VALIDATERESULT), \
   1.328 +   ERRMACRO(VERIFYNODE), \
   1.329 +   ERRMACRO(X500NAME)
   1.330 +
   1.331 +#define ERRMACRO(type) PKIX_ ## type ## _ERROR
   1.332 +
   1.333 +typedef enum {     /* Now invoke all those ERRMACROs to assign the numbers */
   1.334 +   PKIX_ERRORCLASSES,
   1.335 +   PKIX_NUMERRORCLASSES   /* This gets PKIX_NUMERRORCLASSES defined as the total number */
   1.336 +} PKIX_ERRORCLASS;
   1.337 +
   1.338 +/* Now define error strings (for internationalization) */
   1.339 +
   1.340 +#define PKIX_ERRORENTRY(name,desc,plerr) PKIX_ ## name
   1.341 +
   1.342 +/* Define all the error numbers */
   1.343 +typedef enum    {
   1.344 +#include "pkix_errorstrings.h"
   1.345 +, PKIX_NUMERRORCODES
   1.346 +} PKIX_ERRORCODE;
   1.347 +
   1.348 +extern const char * const PKIX_ErrorText[];
   1.349 +
   1.350 +/* String Formats
   1.351 + *
   1.352 + * These formats specify supported encoding formats for Strings.
   1.353 + */
   1.354 +
   1.355 +#define PKIX_ESCASCII           0
   1.356 +#define PKIX_UTF8               1
   1.357 +#define PKIX_UTF16              2
   1.358 +#define PKIX_UTF8_NULL_TERM     3
   1.359 +#define PKIX_ESCASCII_DEBUG     4
   1.360 +
   1.361 +/* Name Types
   1.362 + *
   1.363 + * These types specify supported formats for GeneralNames.
   1.364 + */
   1.365 +
   1.366 +#define PKIX_OTHER_NAME         1
   1.367 +#define PKIX_RFC822_NAME        2
   1.368 +#define PKIX_DNS_NAME           3
   1.369 +#define PKIX_X400_ADDRESS       4
   1.370 +#define PKIX_DIRECTORY_NAME     5
   1.371 +#define PKIX_EDIPARTY_NAME      6
   1.372 +#define PKIX_URI_NAME           7
   1.373 +#define PKIX_IP_NAME            8
   1.374 +#define PKIX_OID_NAME           9
   1.375 +
   1.376 +/* Key Usages
   1.377 + *
   1.378 + * These types specify supported Key Usages
   1.379 + */
   1.380 +
   1.381 +#define PKIX_DIGITAL_SIGNATURE  0x001
   1.382 +#define PKIX_NON_REPUDIATION    0x002
   1.383 +#define PKIX_KEY_ENCIPHERMENT   0x004
   1.384 +#define PKIX_DATA_ENCIPHERMENT  0x008
   1.385 +#define PKIX_KEY_AGREEMENT      0x010
   1.386 +#define PKIX_KEY_CERT_SIGN      0x020
   1.387 +#define PKIX_CRL_SIGN           0x040
   1.388 +#define PKIX_ENCIPHER_ONLY      0x080
   1.389 +#define PKIX_DECIPHER_ONLY      0x100
   1.390 +
   1.391 +/* Reason Flags
   1.392 + *
   1.393 + * These macros specify supported Reason Flags
   1.394 + */
   1.395 +
   1.396 +#define PKIX_UNUSED                     0x001
   1.397 +#define PKIX_KEY_COMPROMISE             0x002
   1.398 +#define PKIX_CA_COMPROMISE              0x004
   1.399 +#define PKIX_AFFILIATION_CHANGED        0x008
   1.400 +#define PKIX_SUPERSEDED                 0x010
   1.401 +#define PKIX_CESSATION_OF_OPERATION     0x020
   1.402 +#define PKIX_CERTIFICATE_HOLD           0x040
   1.403 +#define PKIX_PRIVILEGE_WITHDRAWN        0x080
   1.404 +#define PKIX_AA_COMPROMISE              0x100
   1.405 +
   1.406 +/* Boolean values
   1.407 + *
   1.408 + * These macros specify the Boolean values of TRUE and FALSE
   1.409 + * XXX Is it the case that any non-zero value is actually considered TRUE
   1.410 + * and this is just a convenient mnemonic macro?
   1.411 + */
   1.412 +
   1.413 +#define PKIX_TRUE                       ((PKIX_Boolean) 1)
   1.414 +#define PKIX_FALSE                      ((PKIX_Boolean) 0)
   1.415 +
   1.416 +/*
   1.417 + * Define constants for basic constraints selector
   1.418 + *      (see comments in pkix_certsel.h)
   1.419 + */
   1.420 +
   1.421 +#define PKIX_CERTSEL_ENDENTITY_MIN_PATHLENGTH (-2)
   1.422 +#define PKIX_CERTSEL_ALL_MATCH_MIN_PATHLENGTH (-1)
   1.423 +
   1.424 +/*
   1.425 + * PKIX_ALLOC_ERROR is a special error object hard-coded into the pkix_error.o
   1.426 + * object file. It is thrown if system memory cannot be allocated or may be
   1.427 + * thrown for other unrecoverable errors. PKIX_ALLOC_ERROR is immutable.
   1.428 + * IncRef, DecRef and all Settor functions cannot be called.
   1.429 + * XXX Does anyone actually need to know about this?
   1.430 + * XXX Why no DecRef? Would be good to handle it the same.
   1.431 + */
   1.432 +
   1.433 +PKIX_Error* PKIX_ALLOC_ERROR(void);
   1.434 +
   1.435 +/*
   1.436 + * In a CertBasicConstraints extension, if the CA flag is set,
   1.437 + * indicating the certificate refers to a Certification
   1.438 + * Authority, then the pathLen field indicates how many intermediate
   1.439 + * certificates (not counting self-signed ones) can exist in a valid
   1.440 + * chain following this certificate. If the pathLen has the value
   1.441 + * of this constant, then the length of the chain is unlimited
   1.442 + */
   1.443 +#define PKIX_UNLIMITED_PATH_CONSTRAINT ((PKIX_Int32) -1)
   1.444 +
   1.445 +/*
   1.446 + * Define Certificate Extension hard-coded OID's
   1.447 + */
   1.448 +#define PKIX_UNKNOWN_OID                       SEC_OID_UNKNOWN
   1.449 +#define PKIX_CERTKEYUSAGE_OID                  SEC_OID_X509_KEY_USAGE
   1.450 +#define PKIX_CERTSUBJALTNAME_OID               SEC_OID_X509_SUBJECT_ALT_NAME
   1.451 +#define PKIX_BASICCONSTRAINTS_OID              SEC_OID_X509_BASIC_CONSTRAINTS
   1.452 +#define PKIX_CRLREASONCODE_OID                 SEC_OID_X509_REASON_CODE
   1.453 +#define PKIX_NAMECONSTRAINTS_OID               SEC_OID_X509_NAME_CONSTRAINTS
   1.454 +#define PKIX_CERTIFICATEPOLICIES_OID           SEC_OID_X509_CERTIFICATE_POLICIES
   1.455 +#define PKIX_CERTIFICATEPOLICIES_ANYPOLICY_OID SEC_OID_X509_ANY_POLICY
   1.456 +#define PKIX_POLICYMAPPINGS_OID                SEC_OID_X509_POLICY_MAPPINGS
   1.457 +#define PKIX_POLICYCONSTRAINTS_OID             SEC_OID_X509_POLICY_CONSTRAINTS
   1.458 +#define PKIX_EXTENDEDKEYUSAGE_OID              SEC_OID_X509_EXT_KEY_USAGE
   1.459 +#define PKIX_INHIBITANYPOLICY_OID              SEC_OID_X509_INHIBIT_ANY_POLICY 
   1.460 +#define PKIX_NSCERTTYPE_OID                    SEC_OID_NS_CERT_EXT_CERT_TYPE
   1.461 +#define PKIX_KEY_USAGE_SERVER_AUTH_OID         SEC_OID_EXT_KEY_USAGE_SERVER_AUTH
   1.462 +#define PKIX_KEY_USAGE_CLIENT_AUTH_OID         SEC_OID_EXT_KEY_USAGE_CLIENT_AUTH
   1.463 +#define PKIX_KEY_USAGE_CODE_SIGN_OID           SEC_OID_EXT_KEY_USAGE_CODE_SIGN
   1.464 +#define PKIX_KEY_USAGE_EMAIL_PROTECT_OID       SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT
   1.465 +#define PKIX_KEY_USAGE_TIME_STAMP_OID          SEC_OID_EXT_KEY_USAGE_TIME_STAMP
   1.466 +#define PKIX_KEY_USAGE_OCSP_RESPONDER_OID      SEC_OID_OCSP_RESPONDER
   1.467 +
   1.468 +
   1.469 +/* Available revocation method types. */
   1.470 +typedef enum PKIX_RevocationMethodTypeEnum {
   1.471 +    PKIX_RevocationMethod_CRL = 0,
   1.472 +    PKIX_RevocationMethod_OCSP,
   1.473 +    PKIX_RevocationMethod_MAX
   1.474 +} PKIX_RevocationMethodType;
   1.475 +
   1.476 +/* A set of statuses revocation checker operates on */
   1.477 +typedef enum PKIX_RevocationStatusEnum {
   1.478 +    PKIX_RevStatus_NoInfo = 0,
   1.479 +    PKIX_RevStatus_Revoked,
   1.480 +    PKIX_RevStatus_Success
   1.481 +} PKIX_RevocationStatus;
   1.482 +
   1.483 +
   1.484 +#ifdef __cplusplus
   1.485 +}
   1.486 +#endif
   1.487 +
   1.488 +#endif /* _PKIXT_H */

mercurial