⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x509v3.h

📁 openssl 的一套sdk 特别好用
💻 H
📖 第 1 页 / 共 2 页
字号:
/* x509v3.h *//* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL * project 1999. *//* ==================================================================== * Copyright (c) 1999-2004 The OpenSSL Project.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. All advertising materials mentioning features or use of this *    software must display the following acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to *    endorse or promote products derived from this software without *    prior written permission. For written permission, please contact *    licensing@OpenSSL.org. * * 5. Products derived from this software may not be called "OpenSSL" *    nor may "OpenSSL" appear in their names without prior written *    permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com).  This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */#ifndef HEADER_X509V3_H#define HEADER_X509V3_H#include <openssl/bio.h>#include <openssl/x509.h>#include <openssl/conf.h>#ifdef __cplusplusextern "C" {#endif/* Forward reference */struct v3_ext_method;struct v3_ext_ctx;/* Useful typedefs */typedef void * (*X509V3_EXT_NEW)(void);typedef void (*X509V3_EXT_FREE)(void *);typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long);typedef int (*X509V3_EXT_I2D)(void *, unsigned char **);typedef STACK_OF(CONF_VALUE) * (*X509V3_EXT_I2V)(struct v3_ext_method *method, void *ext, STACK_OF(CONF_VALUE) *extlist);typedef void * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK_OF(CONF_VALUE) *values);typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, void *ext);typedef void * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str);typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, void *ext, BIO *out, int indent);typedef void * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str);/* V3 extension structure */struct v3_ext_method {int ext_nid;int ext_flags;/* If this is set the following four fields are ignored */ASN1_ITEM_EXP *it;/* Old style ASN1 calls */X509V3_EXT_NEW ext_new;X509V3_EXT_FREE ext_free;X509V3_EXT_D2I d2i;X509V3_EXT_I2D i2d;/* The following pair is used for string extensions */X509V3_EXT_I2S i2s;X509V3_EXT_S2I s2i;/* The following pair is used for multi-valued extensions */X509V3_EXT_I2V i2v;X509V3_EXT_V2I v2i;/* The following are used for raw extensions */X509V3_EXT_I2R i2r;X509V3_EXT_R2I r2i;void *usr_data;	/* Any extension specific data */};typedef struct X509V3_CONF_METHOD_st {char * (*get_string)(void *db, char *section, char *value);STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section);void (*free_string)(void *db, char * string);void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section);} X509V3_CONF_METHOD;/* Context specific info */struct v3_ext_ctx {#define CTX_TEST 0x1int flags;X509 *issuer_cert;X509 *subject_cert;X509_REQ *subject_req;X509_CRL *crl;X509V3_CONF_METHOD *db_meth;void *db;/* Maybe more here */};typedef struct v3_ext_method X509V3_EXT_METHOD;DECLARE_STACK_OF(X509V3_EXT_METHOD)/* ext_flags values */#define X509V3_EXT_DYNAMIC	0x1#define X509V3_EXT_CTX_DEP	0x2#define X509V3_EXT_MULTILINE	0x4typedef BIT_STRING_BITNAME ENUMERATED_NAMES;typedef struct BASIC_CONSTRAINTS_st {int ca;ASN1_INTEGER *pathlen;} BASIC_CONSTRAINTS;typedef struct PKEY_USAGE_PERIOD_st {ASN1_GENERALIZEDTIME *notBefore;ASN1_GENERALIZEDTIME *notAfter;} PKEY_USAGE_PERIOD;typedef struct otherName_st {ASN1_OBJECT *type_id;ASN1_TYPE *value;} OTHERNAME;typedef struct EDIPartyName_st {	ASN1_STRING *nameAssigner;	ASN1_STRING *partyName;} EDIPARTYNAME;typedef struct GENERAL_NAME_st {#define GEN_OTHERNAME	0#define GEN_EMAIL	1#define GEN_DNS		2#define GEN_X400	3#define GEN_DIRNAME	4#define GEN_EDIPARTY	5#define GEN_URI		6#define GEN_IPADD	7#define GEN_RID		8int type;union {	char *ptr;	OTHERNAME *otherName; /* otherName */	ASN1_IA5STRING *rfc822Name;	ASN1_IA5STRING *dNSName;	ASN1_TYPE *x400Address;	X509_NAME *directoryName;	EDIPARTYNAME *ediPartyName;	ASN1_IA5STRING *uniformResourceIdentifier;	ASN1_OCTET_STRING *iPAddress;	ASN1_OBJECT *registeredID;	/* Old names */	ASN1_OCTET_STRING *ip; /* iPAddress */	X509_NAME *dirn;		/* dirn */	ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */	ASN1_OBJECT *rid; /* registeredID */	ASN1_TYPE *other; /* x400Address */} d;} GENERAL_NAME;typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;typedef struct ACCESS_DESCRIPTION_st {	ASN1_OBJECT *method;	GENERAL_NAME *location;} ACCESS_DESCRIPTION;typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;DECLARE_STACK_OF(GENERAL_NAME)DECLARE_ASN1_SET_OF(GENERAL_NAME)DECLARE_STACK_OF(ACCESS_DESCRIPTION)DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)typedef struct DIST_POINT_NAME_st {int type;union {	GENERAL_NAMES *fullname;	STACK_OF(X509_NAME_ENTRY) *relativename;} name;} DIST_POINT_NAME;typedef struct DIST_POINT_st {DIST_POINT_NAME	*distpoint;ASN1_BIT_STRING *reasons;GENERAL_NAMES *CRLissuer;} DIST_POINT;typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;DECLARE_STACK_OF(DIST_POINT)DECLARE_ASN1_SET_OF(DIST_POINT)typedef struct AUTHORITY_KEYID_st {ASN1_OCTET_STRING *keyid;GENERAL_NAMES *issuer;ASN1_INTEGER *serial;} AUTHORITY_KEYID;/* Strong extranet structures */typedef struct SXNET_ID_st {	ASN1_INTEGER *zone;	ASN1_OCTET_STRING *user;} SXNETID;DECLARE_STACK_OF(SXNETID)DECLARE_ASN1_SET_OF(SXNETID)typedef struct SXNET_st {	ASN1_INTEGER *version;	STACK_OF(SXNETID) *ids;} SXNET;typedef struct NOTICEREF_st {	ASN1_STRING *organization;	STACK_OF(ASN1_INTEGER) *noticenos;} NOTICEREF;typedef struct USERNOTICE_st {	NOTICEREF *noticeref;	ASN1_STRING *exptext;} USERNOTICE;typedef struct POLICYQUALINFO_st {	ASN1_OBJECT *pqualid;	union {		ASN1_IA5STRING *cpsuri;		USERNOTICE *usernotice;		ASN1_TYPE *other;	} d;} POLICYQUALINFO;DECLARE_STACK_OF(POLICYQUALINFO)DECLARE_ASN1_SET_OF(POLICYQUALINFO)typedef struct POLICYINFO_st {	ASN1_OBJECT *policyid;	STACK_OF(POLICYQUALINFO) *qualifiers;} POLICYINFO;typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;DECLARE_STACK_OF(POLICYINFO)DECLARE_ASN1_SET_OF(POLICYINFO)typedef struct POLICY_MAPPING_st {	ASN1_OBJECT *issuerDomainPolicy;	ASN1_OBJECT *subjectDomainPolicy;} POLICY_MAPPING;DECLARE_STACK_OF(POLICY_MAPPING)typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;typedef struct GENERAL_SUBTREE_st {	GENERAL_NAME *base;	ASN1_INTEGER *minimum;	ASN1_INTEGER *maximum;} GENERAL_SUBTREE;DECLARE_STACK_OF(GENERAL_SUBTREE)typedef struct NAME_CONSTRAINTS_st {	STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;	STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;} NAME_CONSTRAINTS;typedef struct POLICY_CONSTRAINTS_st {	ASN1_INTEGER *requireExplicitPolicy;	ASN1_INTEGER *inhibitPolicyMapping;} POLICY_CONSTRAINTS;/* Proxy certificate structures, see RFC 3820 */typedef struct PROXY_POLICY_st	{	ASN1_OBJECT *policyLanguage;	ASN1_OCTET_STRING *policy;	} PROXY_POLICY;typedef struct PROXY_CERT_INFO_EXTENSION_st	{	ASN1_INTEGER *pcPathLengthConstraint;	PROXY_POLICY *proxyPolicy;	} PROXY_CERT_INFO_EXTENSION;DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \",name:", val->name, ",value:", val->value);#define X509V3_set_ctx_test(ctx) \			X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \			0,0,0,0, \			0,0, \			(X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \			(X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \			NULL, NULL, \			table}#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \			0,0,0,0, \			(X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \			(X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \			0,0,0,0, \			NULL}#define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}/* X509_PURPOSE stuff */#define EXFLAG_BCONS		0x1#define EXFLAG_KUSAGE		0x2#define EXFLAG_XKUSAGE		0x4#define EXFLAG_NSCERT		0x8#define EXFLAG_CA		0x10#define EXFLAG_SS		0x20#define EXFLAG_V1		0x40#define EXFLAG_INVALID		0x80#define EXFLAG_SET		0x100#define EXFLAG_CRITICAL		0x200#define EXFLAG_PROXY		0x400#define EXFLAG_INVALID_POLICY	0x400#define KU_DIGITAL_SIGNATURE	0x0080#define KU_NON_REPUDIATION	0x0040#define KU_KEY_ENCIPHERMENT	0x0020#define KU_DATA_ENCIPHERMENT	0x0010#define KU_KEY_AGREEMENT	0x0008#define KU_KEY_CERT_SIGN	0x0004#define KU_CRL_SIGN		0x0002#define KU_ENCIPHER_ONLY	0x0001#define KU_DECIPHER_ONLY	0x8000#define NS_SSL_CLIENT		0x80#define NS_SSL_SERVER		0x40#define NS_SMIME		0x20#define NS_OBJSIGN		0x10#define NS_SSL_CA		0x04#define NS_SMIME_CA		0x02#define NS_OBJSIGN_CA		0x01#define NS_ANY_CA		(NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)#define XKU_SSL_SERVER		0x1	#define XKU_SSL_CLIENT		0x2#define XKU_SMIME		0x4#define XKU_CODE_SIGN		0x8#define XKU_SGC			0x10#define XKU_OCSP_SIGN		0x20#define XKU_TIMESTAMP		0x40#define XKU_DVCS		0x80#define X509_PURPOSE_DYNAMIC	0x1#define X509_PURPOSE_DYNAMIC_NAME	0x2typedef struct x509_purpose_st {	int purpose;	int trust;		/* Default trust ID */	int flags;	int (*check_purpose)(const struct x509_purpose_st *,				const X509 *, int);	char *name;	char *sname;	void *usr_data;} X509_PURPOSE;#define X509_PURPOSE_SSL_CLIENT		1#define X509_PURPOSE_SSL_SERVER		2#define X509_PURPOSE_NS_SSL_SERVER	3#define X509_PURPOSE_SMIME_SIGN		4#define X509_PURPOSE_SMIME_ENCRYPT	5#define X509_PURPOSE_CRL_SIGN		6#define X509_PURPOSE_ANY		7#define X509_PURPOSE_OCSP_HELPER	8#define X509_PURPOSE_MIN		1#define X509_PURPOSE_MAX		8/* Flags for X509V3_EXT_print() */#define X509V3_EXT_UNKNOWN_MASK		(0xfL << 16)/* Return error for unknown extensions */#define X509V3_EXT_DEFAULT		0/* Print error for unknown extensions */#define X509V3_EXT_ERROR_UNKNOWN	(1L << 16)/* ASN1 parse unknown extensions */#define X509V3_EXT_PARSE_UNKNOWN	(2L << 16)/* BIO_dump unknown extensions */#define X509V3_EXT_DUMP_UNKNOWN		(3L << 16)/* Flags for X509V3_add1_i2d */#define X509V3_ADD_OP_MASK		0xfL#define X509V3_ADD_DEFAULT		0L#define X509V3_ADD_APPEND		1L#define X509V3_ADD_REPLACE		2L#define X509V3_ADD_REPLACE_EXISTING	3L#define X509V3_ADD_KEEP_EXISTING	4L#define X509V3_ADD_DELETE		5L#define X509V3_ADD_SILENT		0x10DECLARE_STACK_OF(X509_PURPOSE)DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)DECLARE_ASN1_FUNCTIONS(SXNET)DECLARE_ASN1_FUNCTIONS(SXNETID)int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen); int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen); 

⌨️ 快捷键说明

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