diff options
Diffstat (limited to 'openssl/crypto/x509v3/x509v3.h')
| -rw-r--r-- | openssl/crypto/x509v3/x509v3.h | 1007 | 
1 files changed, 0 insertions, 1007 deletions
diff --git a/openssl/crypto/x509v3/x509v3.h b/openssl/crypto/x509v3/x509v3.h deleted file mode 100644 index b308abe7..00000000 --- a/openssl/crypto/x509v3/x509v3.h +++ /dev/null @@ -1,1007 +0,0 @@ -/* x509v3.h */ -/* Written by Dr Stephen N Henson (steve@openssl.org) 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 __cplusplus -extern "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)(const struct v3_ext_method *method, void *ext, -		    STACK_OF(CONF_VALUE) *extlist); -typedef void * (*X509V3_EXT_V2I)(const struct v3_ext_method *method, -				 struct v3_ext_ctx *ctx, -				 STACK_OF(CONF_VALUE) *values); -typedef char * (*X509V3_EXT_I2S)(const struct v3_ext_method *method, void *ext); -typedef void * (*X509V3_EXT_S2I)(const struct v3_ext_method *method, -				 struct v3_ext_ctx *ctx, const char *str); -typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, -			      BIO *out, int indent); -typedef void * (*X509V3_EXT_R2I)(const 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 0x1 -int 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	0x4 - -typedef 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		8 - -int 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; -/* If relativename then this contains the full distribution point name */ -X509_NAME *dpname; -} DIST_POINT_NAME; -/* All existing reasons */ -#define CRLDP_ALL_REASONS	0x807f - -#define CRL_REASON_NONE				-1 -#define CRL_REASON_UNSPECIFIED			0 -#define CRL_REASON_KEY_COMPROMISE		1 -#define CRL_REASON_CA_COMPROMISE		2 -#define CRL_REASON_AFFILIATION_CHANGED		3 -#define CRL_REASON_SUPERSEDED			4 -#define CRL_REASON_CESSATION_OF_OPERATION	5 -#define CRL_REASON_CERTIFICATE_HOLD		6 -#define CRL_REASON_REMOVE_FROM_CRL		8 -#define CRL_REASON_PRIVILEGE_WITHDRAWN		9 -#define CRL_REASON_AA_COMPROMISE		10 - -struct DIST_POINT_st { -DIST_POINT_NAME	*distpoint; -ASN1_BIT_STRING *reasons; -GENERAL_NAMES *CRLissuer; -int dp_reasons; -}; - -typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; - -DECLARE_STACK_OF(DIST_POINT) -DECLARE_ASN1_SET_OF(DIST_POINT) - -struct AUTHORITY_KEYID_st { -ASN1_OCTET_STRING *keyid; -GENERAL_NAMES *issuer; -ASN1_INTEGER *serial; -}; - -/* 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) - -struct NAME_CONSTRAINTS_st { -	STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; -	STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; -}; - -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) - -struct ISSUING_DIST_POINT_st -	{ -	DIST_POINT_NAME *distpoint; -	int onlyuser; -	int onlyCA; -	ASN1_BIT_STRING *onlysomereasons; -	int indirectCRL; -	int onlyattr; -	}; - -/* Values in idp_flags field */ -/* IDP present */ -#define	IDP_PRESENT	0x1 -/* IDP values inconsistent */ -#define IDP_INVALID	0x2 -/* onlyuser true */ -#define	IDP_ONLYUSER	0x4 -/* onlyCA true */ -#define	IDP_ONLYCA	0x8 -/* onlyattr true */ -#define IDP_ONLYATTR	0x10 -/* indirectCRL true */ -#define IDP_INDIRECT	0x20 -/* onlysomereasons present */ -#define IDP_REASONS	0x40 - -#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 -/* Really self issued not necessarily self signed */ -#define EXFLAG_SI		0x20 -#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	0x800 -#define EXFLAG_FRESHEST		0x1000 - -#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	0x2 - -typedef 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_TIMESTAMP_SIGN	9 - -#define X509_PURPOSE_MIN		1 -#define X509_PURPOSE_MAX		9 - -/* 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		0x10 - -DECLARE_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);  -int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user, int userlen);  - -ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone); -ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); -ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); - -DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) - -DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) - -DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) -GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); -int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); - - - -ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, -				X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); -STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, -				ASN1_BIT_STRING *bits, -				STACK_OF(CONF_VALUE) *extlist); - -STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret); -int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); - -DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) - -STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, -		GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist); -GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, -				 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); - -DECLARE_ASN1_FUNCTIONS(OTHERNAME) -DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) -int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); -void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); -void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype); -int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, -				ASN1_OBJECT *oid, ASN1_TYPE *value); -int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,  -				ASN1_OBJECT **poid, ASN1_TYPE **pvalue); - -char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); -ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); - -DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) -int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a); - -DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) -DECLARE_ASN1_FUNCTIONS(POLICYINFO) -DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) -DECLARE_ASN1_FUNCTIONS(USERNOTICE) -DECLARE_ASN1_FUNCTIONS(NOTICEREF) - -DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) -DECLARE_ASN1_FUNCTIONS(DIST_POINT) -DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) -DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) - -int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname); - -int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); - -DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) -DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) - -DECLARE_ASN1_ITEM(POLICY_MAPPING) -DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) -DECLARE_ASN1_ITEM(POLICY_MAPPINGS) - -DECLARE_ASN1_ITEM(GENERAL_SUBTREE) -DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) - -DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) -DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) - -DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) -DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) - -GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, -			       const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, -			       int gen_type, char *value, int is_nc); - -#ifdef HEADER_CONF_H -GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, -			       CONF_VALUE *cnf); -GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, -				  const X509V3_EXT_METHOD *method, -				  X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc); -void X509V3_conf_free(CONF_VALUE *val); - -X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value); -X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value); -int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk); -int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert); -int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); -int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); - -X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, -				    int ext_nid, char *value); -X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, -				char *name, char *value); -int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, -			char *section, X509 *cert); -int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, -			    char *section, X509_REQ *req); -int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, -			    char *section, X509_CRL *crl); - -int X509V3_add_value_bool_nf(char *name, int asn1_bool, -			     STACK_OF(CONF_VALUE) **extlist); -int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool); -int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); -void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); -void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); -#endif - -char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section); -STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section); -void X509V3_string_free(X509V3_CTX *ctx, char *str); -void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); -void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, -				 X509_REQ *req, X509_CRL *crl, int flags); - -int X509V3_add_value(const char *name, const char *value, -						STACK_OF(CONF_VALUE) **extlist); -int X509V3_add_value_uchar(const char *name, const unsigned char *value, -						STACK_OF(CONF_VALUE) **extlist); -int X509V3_add_value_bool(const char *name, int asn1_bool, -						STACK_OF(CONF_VALUE) **extlist); -int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint, -						STACK_OF(CONF_VALUE) **extlist); -char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint); -ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value); -char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint); -char * i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint); -int X509V3_EXT_add(X509V3_EXT_METHOD *ext); -int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); -int X509V3_EXT_add_alias(int nid_to, int nid_from); -void X509V3_EXT_cleanup(void); - -const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); -const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); -int X509V3_add_standard_extensions(void); -STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); -void *X509V3_EXT_d2i(X509_EXTENSION *ext); -void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx); - - -X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); -int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags); - -char *hex_to_string(const unsigned char *buffer, long len); -unsigned char *string_to_hex(const char *str, long *len); -int name_cmp(const char *name, const char *cmp); - -void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, -								 int ml); -int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent); -int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); - -int X509V3_extensions_print(BIO *out, char *title, STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent); - -int X509_check_ca(X509 *x); -int X509_check_purpose(X509 *x, int id, int ca); -int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); -int X509_check_issued(X509 *issuer, X509 *subject); -int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid); -int X509_PURPOSE_get_count(void); -X509_PURPOSE * X509_PURPOSE_get0(int idx); -int X509_PURPOSE_get_by_sname(char *sname); -int X509_PURPOSE_get_by_id(int id); -int X509_PURPOSE_add(int id, int trust, int flags, -			int (*ck)(const X509_PURPOSE *, const X509 *, int), -				char *name, char *sname, void *arg); -char *X509_PURPOSE_get0_name(X509_PURPOSE *xp); -char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp); -int X509_PURPOSE_get_trust(X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(X509_PURPOSE *); - -STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); -STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); -void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); -STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); - -ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); -ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); -int a2i_ipadd(unsigned char *ipout, const char *ipasc); -int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE)*dn_sk, -						unsigned long chtype); - -void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); -DECLARE_STACK_OF(X509_POLICY_NODE) - -#ifndef OPENSSL_NO_RFC3779 - -typedef struct ASRange_st { -  ASN1_INTEGER *min, *max; -} ASRange; - -#define	ASIdOrRange_id		0 -#define	ASIdOrRange_range	1 - -typedef struct ASIdOrRange_st { -  int type; -  union { -    ASN1_INTEGER *id; -    ASRange      *range; -  } u; -} ASIdOrRange; - -typedef STACK_OF(ASIdOrRange) ASIdOrRanges; -DECLARE_STACK_OF(ASIdOrRange) - -#define	ASIdentifierChoice_inherit		0 -#define	ASIdentifierChoice_asIdsOrRanges	1 - -typedef struct ASIdentifierChoice_st { -  int type; -  union { -    ASN1_NULL    *inherit; -    ASIdOrRanges *asIdsOrRanges; -  } u; -} ASIdentifierChoice; - -typedef struct ASIdentifiers_st { -  ASIdentifierChoice *asnum, *rdi; -} ASIdentifiers; - -DECLARE_ASN1_FUNCTIONS(ASRange) -DECLARE_ASN1_FUNCTIONS(ASIdOrRange) -DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) -DECLARE_ASN1_FUNCTIONS(ASIdentifiers) - - -typedef struct IPAddressRange_st { -  ASN1_BIT_STRING	*min, *max; -} IPAddressRange; - -#define	IPAddressOrRange_addressPrefix	0 -#define	IPAddressOrRange_addressRange	1 - -typedef struct IPAddressOrRange_st { -  int type; -  union { -    ASN1_BIT_STRING	*addressPrefix; -    IPAddressRange	*addressRange; -  } u; -} IPAddressOrRange; - -typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; -DECLARE_STACK_OF(IPAddressOrRange) - -#define	IPAddressChoice_inherit			0 -#define	IPAddressChoice_addressesOrRanges	1 - -typedef struct IPAddressChoice_st { -  int type; -  union { -    ASN1_NULL		*inherit; -    IPAddressOrRanges	*addressesOrRanges; -  } u; -} IPAddressChoice; - -typedef struct IPAddressFamily_st { -  ASN1_OCTET_STRING	*addressFamily; -  IPAddressChoice	*ipAddressChoice; -} IPAddressFamily; - -typedef STACK_OF(IPAddressFamily) IPAddrBlocks; -DECLARE_STACK_OF(IPAddressFamily) - -DECLARE_ASN1_FUNCTIONS(IPAddressRange) -DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) -DECLARE_ASN1_FUNCTIONS(IPAddressChoice) -DECLARE_ASN1_FUNCTIONS(IPAddressFamily) - -/* - * API tag for elements of the ASIdentifer SEQUENCE. - */ -#define	V3_ASID_ASNUM	0 -#define	V3_ASID_RDI	1 - -/* - * AFI values, assigned by IANA.  It'd be nice to make the AFI - * handling code totally generic, but there are too many little things - * that would need to be defined for other address families for it to - * be worth the trouble. - */ -#define	IANA_AFI_IPV4	1 -#define	IANA_AFI_IPV6	2 - -/* - * Utilities to construct and extract values from RFC3779 extensions, - * since some of the encodings (particularly for IP address prefixes - * and ranges) are a bit tedious to work with directly. - */ -int v3_asid_add_inherit(ASIdentifiers *asid, int which); -int v3_asid_add_id_or_range(ASIdentifiers *asid, int which, -			    ASN1_INTEGER *min, ASN1_INTEGER *max); -int v3_addr_add_inherit(IPAddrBlocks *addr, -			const unsigned afi, const unsigned *safi); -int v3_addr_add_prefix(IPAddrBlocks *addr, -		       const unsigned afi, const unsigned *safi, -		       unsigned char *a, const int prefixlen); -int v3_addr_add_range(IPAddrBlocks *addr, -		      const unsigned afi, const unsigned *safi, -		      unsigned char *min, unsigned char *max); -unsigned v3_addr_get_afi(const IPAddressFamily *f); -int v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, -		      unsigned char *min, unsigned char *max, -		      const int length); - -/* - * Canonical forms. - */ -int v3_asid_is_canonical(ASIdentifiers *asid); -int v3_addr_is_canonical(IPAddrBlocks *addr); -int v3_asid_canonize(ASIdentifiers *asid); -int v3_addr_canonize(IPAddrBlocks *addr); - -/* - * Tests for inheritance and containment. - */ -int v3_asid_inherits(ASIdentifiers *asid); -int v3_addr_inherits(IPAddrBlocks *addr); -int v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); -int v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); - -/* - * Check whether RFC 3779 extensions nest properly in chains. - */ -int v3_asid_validate_path(X509_STORE_CTX *); -int v3_addr_validate_path(X509_STORE_CTX *); -int v3_asid_validate_resource_set(STACK_OF(X509) *chain, -				  ASIdentifiers *ext, -				  int allow_inheritance); -int v3_addr_validate_resource_set(STACK_OF(X509) *chain, -				  IPAddrBlocks *ext, -				  int allow_inheritance); - -#endif /* OPENSSL_NO_RFC3779 */ - -/* BEGIN ERROR CODES */ -/* The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_X509V3_strings(void); - -/* Error codes for the X509V3 functions. */ - -/* Function codes. */ -#define X509V3_F_A2I_GENERAL_NAME			 164 -#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE		 161 -#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL	 162 -#define X509V3_F_COPY_EMAIL				 122 -#define X509V3_F_COPY_ISSUER				 123 -#define X509V3_F_DO_DIRNAME				 144 -#define X509V3_F_DO_EXT_CONF				 124 -#define X509V3_F_DO_EXT_I2D				 135 -#define X509V3_F_DO_EXT_NCONF				 151 -#define X509V3_F_DO_I2V_NAME_CONSTRAINTS		 148 -#define X509V3_F_GNAMES_FROM_SECTNAME			 156 -#define X509V3_F_HEX_TO_STRING				 111 -#define X509V3_F_I2S_ASN1_ENUMERATED			 121 -#define X509V3_F_I2S_ASN1_IA5STRING			 149 -#define X509V3_F_I2S_ASN1_INTEGER			 120 -#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS		 138 -#define X509V3_F_NOTICE_SECTION				 132 -#define X509V3_F_NREF_NOS				 133 -#define X509V3_F_POLICY_SECTION				 131 -#define X509V3_F_PROCESS_PCI_VALUE			 150 -#define X509V3_F_R2I_CERTPOL				 130 -#define X509V3_F_R2I_PCI				 155 -#define X509V3_F_S2I_ASN1_IA5STRING			 100 -#define X509V3_F_S2I_ASN1_INTEGER			 108 -#define X509V3_F_S2I_ASN1_OCTET_STRING			 112 -#define X509V3_F_S2I_ASN1_SKEY_ID			 114 -#define X509V3_F_S2I_SKEY_ID				 115 -#define X509V3_F_SET_DIST_POINT_NAME			 158 -#define X509V3_F_STRING_TO_HEX				 113 -#define X509V3_F_SXNET_ADD_ID_ASC			 125 -#define X509V3_F_SXNET_ADD_ID_INTEGER			 126 -#define X509V3_F_SXNET_ADD_ID_ULONG			 127 -#define X509V3_F_SXNET_GET_ID_ASC			 128 -#define X509V3_F_SXNET_GET_ID_ULONG			 129 -#define X509V3_F_V2I_ASIDENTIFIERS			 163 -#define X509V3_F_V2I_ASN1_BIT_STRING			 101 -#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS		 139 -#define X509V3_F_V2I_AUTHORITY_KEYID			 119 -#define X509V3_F_V2I_BASIC_CONSTRAINTS			 102 -#define X509V3_F_V2I_CRLD				 134 -#define X509V3_F_V2I_EXTENDED_KEY_USAGE			 103 -#define X509V3_F_V2I_GENERAL_NAMES			 118 -#define X509V3_F_V2I_GENERAL_NAME_EX			 117 -#define X509V3_F_V2I_IDP				 157 -#define X509V3_F_V2I_IPADDRBLOCKS			 159 -#define X509V3_F_V2I_ISSUER_ALT				 153 -#define X509V3_F_V2I_NAME_CONSTRAINTS			 147 -#define X509V3_F_V2I_POLICY_CONSTRAINTS			 146 -#define X509V3_F_V2I_POLICY_MAPPINGS			 145 -#define X509V3_F_V2I_SUBJECT_ALT			 154 -#define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL		 160 -#define X509V3_F_V3_GENERIC_EXTENSION			 116 -#define X509V3_F_X509V3_ADD1_I2D			 140 -#define X509V3_F_X509V3_ADD_VALUE			 105 -#define X509V3_F_X509V3_EXT_ADD				 104 -#define X509V3_F_X509V3_EXT_ADD_ALIAS			 106 -#define X509V3_F_X509V3_EXT_CONF			 107 -#define X509V3_F_X509V3_EXT_I2D				 136 -#define X509V3_F_X509V3_EXT_NCONF			 152 -#define X509V3_F_X509V3_GET_SECTION			 142 -#define X509V3_F_X509V3_GET_STRING			 143 -#define X509V3_F_X509V3_GET_VALUE_BOOL			 110 -#define X509V3_F_X509V3_PARSE_LIST			 109 -#define X509V3_F_X509_PURPOSE_ADD			 137 -#define X509V3_F_X509_PURPOSE_SET			 141 - -/* Reason codes. */ -#define X509V3_R_BAD_IP_ADDRESS				 118 -#define X509V3_R_BAD_OBJECT				 119 -#define X509V3_R_BN_DEC2BN_ERROR			 100 -#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR		 101 -#define X509V3_R_DIRNAME_ERROR				 149 -#define X509V3_R_DISTPOINT_ALREADY_SET			 160 -#define X509V3_R_DUPLICATE_ZONE_ID			 133 -#define X509V3_R_ERROR_CONVERTING_ZONE			 131 -#define X509V3_R_ERROR_CREATING_EXTENSION		 144 -#define X509V3_R_ERROR_IN_EXTENSION			 128 -#define X509V3_R_EXPECTED_A_SECTION_NAME		 137 -#define X509V3_R_EXTENSION_EXISTS			 145 -#define X509V3_R_EXTENSION_NAME_ERROR			 115 -#define X509V3_R_EXTENSION_NOT_FOUND			 102 -#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED	 103 -#define X509V3_R_EXTENSION_VALUE_ERROR			 116 -#define X509V3_R_ILLEGAL_EMPTY_EXTENSION		 151 -#define X509V3_R_ILLEGAL_HEX_DIGIT			 113 -#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG		 152 -#define X509V3_R_INVALID_MULTIPLE_RDNS			 161 -#define X509V3_R_INVALID_ASNUMBER			 162 -#define X509V3_R_INVALID_ASRANGE			 163 -#define X509V3_R_INVALID_BOOLEAN_STRING			 104 -#define X509V3_R_INVALID_EXTENSION_STRING		 105 -#define X509V3_R_INVALID_INHERITANCE			 165 -#define X509V3_R_INVALID_IPADDRESS			 166 -#define X509V3_R_INVALID_NAME				 106 -#define X509V3_R_INVALID_NULL_ARGUMENT			 107 -#define X509V3_R_INVALID_NULL_NAME			 108 -#define X509V3_R_INVALID_NULL_VALUE			 109 -#define X509V3_R_INVALID_NUMBER				 140 -#define X509V3_R_INVALID_NUMBERS			 141 -#define X509V3_R_INVALID_OBJECT_IDENTIFIER		 110 -#define X509V3_R_INVALID_OPTION				 138 -#define X509V3_R_INVALID_POLICY_IDENTIFIER		 134 -#define X509V3_R_INVALID_PROXY_POLICY_SETTING		 153 -#define X509V3_R_INVALID_PURPOSE			 146 -#define X509V3_R_INVALID_SAFI				 164 -#define X509V3_R_INVALID_SECTION			 135 -#define X509V3_R_INVALID_SYNTAX				 143 -#define X509V3_R_ISSUER_DECODE_ERROR			 126 -#define X509V3_R_MISSING_VALUE				 124 -#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS		 142 -#define X509V3_R_NO_CONFIG_DATABASE			 136 -#define X509V3_R_NO_ISSUER_CERTIFICATE			 121 -#define X509V3_R_NO_ISSUER_DETAILS			 127 -#define X509V3_R_NO_POLICY_IDENTIFIER			 139 -#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED	 154 -#define X509V3_R_NO_PUBLIC_KEY				 114 -#define X509V3_R_NO_SUBJECT_DETAILS			 125 -#define X509V3_R_ODD_NUMBER_OF_DIGITS			 112 -#define X509V3_R_OPERATION_NOT_DEFINED			 148 -#define X509V3_R_OTHERNAME_ERROR			 147 -#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED	 155 -#define X509V3_R_POLICY_PATH_LENGTH			 156 -#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED	 157 -#define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED	 158 -#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 -#define X509V3_R_SECTION_NOT_FOUND			 150 -#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS		 122 -#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID		 123 -#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT		 111 -#define X509V3_R_UNKNOWN_EXTENSION			 129 -#define X509V3_R_UNKNOWN_EXTENSION_NAME			 130 -#define X509V3_R_UNKNOWN_OPTION				 120 -#define X509V3_R_UNSUPPORTED_OPTION			 117 -#define X509V3_R_UNSUPPORTED_TYPE			 167 -#define X509V3_R_USER_TOO_LONG				 132 - -#ifdef  __cplusplus -} -#endif -#endif  | 
