certt.h

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 805 行 · 第 1/2 页

H
805
字号
struct CERTCrlHeadNodeStr {    PRArenaPool *arena;    CERTCertDBHandle *dbhandle;    CERTCrlNode *first;    CERTCrlNode *last;};struct CERTCrlNodeStr {    CERTCrlNode *next;    int 	type;    CERTSignedCrl *crl;};/* * Array of X.500 Distinguished Names */struct CERTDistNamesStr {    PRArenaPool *arena;    int nnames;    SECItem  *names;    void *head; /* private */};#define NS_CERT_TYPE_SSL_CLIENT		(0x80)	/* bit 0 */#define NS_CERT_TYPE_SSL_SERVER		(0x40)  /* bit 1 */#define NS_CERT_TYPE_EMAIL		(0x20)  /* bit 2 */#define NS_CERT_TYPE_OBJECT_SIGNING	(0x10)  /* bit 3 */#define NS_CERT_TYPE_RESERVED		(0x08)  /* bit 4 */#define NS_CERT_TYPE_SSL_CA		(0x04)  /* bit 5 */#define NS_CERT_TYPE_EMAIL_CA		(0x02)  /* bit 6 */#define NS_CERT_TYPE_OBJECT_SIGNING_CA	(0x01)  /* bit 7 */#define EXT_KEY_USAGE_TIME_STAMP        (0x8000)#define EXT_KEY_USAGE_STATUS_RESPONDER	(0x4000)#define NS_CERT_TYPE_APP ( NS_CERT_TYPE_SSL_CLIENT | \			  NS_CERT_TYPE_SSL_SERVER | \			  NS_CERT_TYPE_EMAIL | \			  NS_CERT_TYPE_OBJECT_SIGNING )#define NS_CERT_TYPE_CA ( NS_CERT_TYPE_SSL_CA | \			 NS_CERT_TYPE_EMAIL_CA | \			 NS_CERT_TYPE_OBJECT_SIGNING_CA | \			 EXT_KEY_USAGE_STATUS_RESPONDER )typedef enum {    certUsageSSLClient,    certUsageSSLServer,    certUsageSSLServerWithStepUp,    certUsageSSLCA,    certUsageEmailSigner,    certUsageEmailRecipient,    certUsageObjectSigner,    certUsageUserCertImport,    certUsageVerifyCA,    certUsageProtectedObjectSigner,    certUsageStatusResponder,    certUsageAnyCA} SECCertUsage;/* * Does the cert belong to the user, a peer, or a CA. */typedef enum {    certOwnerUser,    certOwnerPeer,    certOwnerCA} CERTCertOwner;/* * This enum represents the state of validity times of a certificate */typedef enum {    secCertTimeValid,    secCertTimeExpired,    secCertTimeNotValidYet} SECCertTimeValidity;/* * Interface for getting certificate nickname strings out of the database *//* these are values for the what argument below */#define SEC_CERT_NICKNAMES_ALL		1#define SEC_CERT_NICKNAMES_USER		2#define SEC_CERT_NICKNAMES_SERVER	3#define SEC_CERT_NICKNAMES_CA		4struct CERTCertNicknamesStr {    PRArenaPool *arena;    void *head;    int numnicknames;    char **nicknames;    int what;    int totallen;};struct CERTIssuerAndSNStr {    SECItem derIssuer;    CERTName issuer;    SECItem serialNumber;};/* X.509 v3 Key Usage Extension flags */#define KU_DIGITAL_SIGNATURE		(0x80)	/* bit 0 */#define KU_NON_REPUDIATION		(0x40)  /* bit 1 */#define KU_KEY_ENCIPHERMENT		(0x20)  /* bit 2 */#define KU_DATA_ENCIPHERMENT		(0x10)  /* bit 3 */#define KU_KEY_AGREEMENT		(0x08)  /* bit 4 */#define KU_KEY_CERT_SIGN		(0x04)  /* bit 5 */#define KU_CRL_SIGN			(0x02)  /* bit 6 */#define KU_ALL				(KU_DIGITAL_SIGNATURE | \					 KU_NON_REPUDIATION | \					 KU_KEY_ENCIPHERMENT | \					 KU_DATA_ENCIPHERMENT | \					 KU_KEY_AGREEMENT | \					 KU_KEY_CERT_SIGN | \					 KU_CRL_SIGN)/* This value will not occur in certs.  It is used internally for the case * when the key type is not know ahead of time and either key agreement or * key encipherment are the correct value based on key type */#define KU_KEY_AGREEMENT_OR_ENCIPHERMENT (0x4000)/* internal bits that do not match bits in the x509v3 spec, but are used * for similar purposes */#define KU_NS_GOVT_APPROVED		(0x8000) /*don't make part of KU_ALL!*//* * x.509 v3 Basic Constraints Extension * If isCA is false, the pathLenConstraint is ignored. * Otherwise, the following pathLenConstraint values will apply: *	< 0 - there is no limit to the certificate path *	0   - CA can issues end-entity certificates only *	> 0 - the number of certificates in the certificate path is *	      limited to this number */#define CERT_UNLIMITED_PATH_CONSTRAINT -2struct CERTBasicConstraintsStr {    PRBool isCA;			/* on if is CA */    int pathLenConstraint;		/* maximum number of certificates that can be					   in the cert path.  Only applies to a CA					   certificate; otherwise, it's ignored.					 */};/* Maximum length of a certificate chain */#define CERT_MAX_CERT_CHAIN 20/* x.509 v3 Reason Falgs, used in CRLDistributionPoint Extension */#define RF_UNUSED			(0x80)	/* bit 0 */#define RF_KEY_COMPROMISE		(0x40)  /* bit 1 */#define RF_CA_COMPROMISE		(0x20)  /* bit 2 */#define RF_AFFILIATION_CHANGED		(0x10)  /* bit 3 */#define RF_SUPERSEDED			(0x08)  /* bit 4 */#define RF_CESSATION_OF_OPERATION	(0x04)  /* bit 5 */#define RF_CERTIFICATE_HOLD		(0x02)  /* bit 6 *//* If we needed to extract the general name field, use this *//* General Name types */typedef enum {    certOtherName = 1,    certRFC822Name = 2,    certDNSName = 3,    certX400Address = 4,    certDirectoryName = 5,    certEDIPartyName = 6,    certURI = 7,    certIPAddress = 8,    certRegisterID = 9} CERTGeneralNameType;typedef struct OtherNameStr {    SECItem          name;    SECItem          oid;}OtherName;struct CERTGeneralNameStr {    CERTGeneralNameType type;		/* name type */    union {	CERTName directoryName;         /* distinguish name */	OtherName  OthName;		/* Other Name */	SECItem other;                  /* the rest of the name forms */    }name;    SECItem derDirectoryName;		/* this is saved to simplify directory name					   comparison */    PRCList l;};struct CERTGeneralNameListStr {    PRArenaPool *arena;    CERTGeneralName *name;    int refCount;    int len;    PRLock *lock;};struct CERTNameConstraintStr {    CERTGeneralName  name;    SECItem          DERName;    SECItem          min;    SECItem          max;    PRCList          l;};struct CERTNameConstraintsStr {    CERTNameConstraint  *permited;    CERTNameConstraint  *excluded;    SECItem             **DERPermited;    SECItem             **DERExcluded;};/* X.509 v3 Authority Key Identifier extension.  For the authority certificate   issuer field, we only support URI now. */struct CERTAuthKeyIDStr {    SECItem keyID;			/* unique key identifier */    CERTGeneralName *authCertIssuer;	/* CA's issuer name.  End with a NULL */    SECItem authCertSerialNumber;	/* CA's certificate serial number */    SECItem **DERAuthCertIssuer;	/* This holds the DER encoded format of					   the authCertIssuer field. It is used					   by the encoding engine. It should be					   used as a read only field by the caller.					*/};/* x.509 v3 CRL Distributeion Point *//* * defined the types of CRL Distribution points */typedef enum {    generalName = 1,			/* only support this for now */    relativeDistinguishedName = 2} DistributionPointTypes;struct CRLDistributionPointStr {    DistributionPointTypes distPointType;    union {	CERTGeneralName *fullName;	CERTRDN relativeName;    } distPoint;    SECItem reasons;    CERTGeneralName *crlIssuer;        /* Reserved for internal use only*/    SECItem derDistPoint;    SECItem derRelativeName;    SECItem **derCrlIssuer;    SECItem **derFullName;    SECItem bitsmap;};struct CERTCrlDistributionPointsStr {    CRLDistributionPoint **distPoints;};/* * This structure is used to keep a log of errors when verifying * a cert chain.  This allows multiple errors to be reported all at * once. */struct CERTVerifyLogNodeStr {    CERTCertificate *cert;	/* what cert had the error */    long error;			/* what error was it? */    unsigned int depth;		/* how far up the chain are we */    void *arg;			/* error specific argument */    struct CERTVerifyLogNodeStr *next; /* next in the list */    struct CERTVerifyLogNodeStr *prev; /* next in the list */};struct CERTVerifyLogStr {    PRArenaPool *arena;    unsigned int count;    struct CERTVerifyLogNodeStr *head;    struct CERTVerifyLogNodeStr *tail;};struct CERTOKDomainNameStr {    CERTOKDomainName *next;    char              name[1]; /* actual length may be longer. */};typedef SECStatus PR_CALLBACK (*CERTStatusChecker) (CERTCertDBHandle *handle,						    CERTCertificate *cert,						    int64 time,						    void *pwArg);typedef SECStatus PR_CALLBACK (*CERTStatusDestroy) (CERTStatusConfig *handle);struct CERTStatusConfigStr {    CERTStatusChecker statusChecker;	/* NULL means no checking enabled */    CERTStatusDestroy statusDestroy;	/* enabled or no, will clean up */    void *statusContext;		/* cx specific to checking protocol */};struct CERTAuthInfoAccessStr {    SECItem method;    SECItem derLocation;    CERTGeneralName *location;		/* decoded location */};/* This is the typedef for the callback passed to CERT_OpenCertDB() *//* callback to return database name based on version number */typedef char * (*CERTDBNameFunc)(void *arg, int dbVersion);/* * types of cert packages that we can decode */typedef enum {    certPackageNone,    certPackageCert,    certPackagePKCS7,    certPackageNSCertSeq,    certPackageNSCertWrap} CERTPackageType;/* * these types are for the PKIX Certificate Policies extension */typedef struct {    SECOidTag oid;    SECItem qualifierID;    SECItem qualifierValue;} CERTPolicyQualifier;typedef struct {    SECOidTag oid;    SECItem policyID;    CERTPolicyQualifier **policyQualifiers;} CERTPolicyInfo;typedef struct {    PRArenaPool *arena;    CERTPolicyInfo **policyInfos;} CERTCertificatePolicies;typedef struct {    SECItem organization;    SECItem **noticeNumbers;} CERTNoticeReference;typedef struct {    PRArenaPool *arena;    CERTNoticeReference noticeReference;    SECItem derNoticeReference;    SECItem displayText;} CERTUserNotice;typedef struct {    PRArenaPool *arena;    SECItem **oids;} CERTOidSequence;/* XXX Lisa thinks the template declarations belong in cert.h, not here? */#include "secasn1t.h"	/* way down here because I expect template stuff to			 * move out of here anyway */extern const SEC_ASN1Template CERT_CertificateRequestTemplate[];extern const SEC_ASN1Template CERT_CertificateTemplate[];extern const SEC_ASN1Template SEC_SignedCertificateTemplate[];extern const SEC_ASN1Template CERT_CertExtensionTemplate[];extern const SEC_ASN1Template CERT_SequenceOfCertExtensionTemplate[];extern const SEC_ASN1Template SECKEY_PublicKeyTemplate[];extern const SEC_ASN1Template CERT_SubjectPublicKeyInfoTemplate[];extern const SEC_ASN1Template CERT_ValidityTemplate[];extern const SEC_ASN1Template CERT_PublicKeyAndChallengeTemplate[];extern const SEC_ASN1Template SEC_CertSequenceTemplate[];extern const SEC_ASN1Template CERT_IssuerAndSNTemplate[];extern const SEC_ASN1Template CERT_NameTemplate[];extern const SEC_ASN1Template CERT_SetOfSignedCrlTemplate[];extern const SEC_ASN1Template CERT_RDNTemplate[];extern const SEC_ASN1Template CERT_SignedDataTemplate[];extern const SEC_ASN1Template CERT_CrlTemplate[];/*** XXX should the attribute stuff be centralized for all of ns/security?*/extern const SEC_ASN1Template CERT_AttributeTemplate[];extern const SEC_ASN1Template CERT_SetOfAttributeTemplate[];#endif /* _CERTT_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?