Index: openssl/crypto/x509v3/x509v3.h |
=================================================================== |
--- openssl/crypto/x509v3/x509v3.h (revision 105093) |
+++ openssl/crypto/x509v3/x509v3.h (working copy) |
@@ -76,12 +76,19 @@ |
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); |
+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 */ |
@@ -220,24 +227,41 @@ |
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 |
-typedef struct DIST_POINT_st { |
+#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; |
-} DIST_POINT; |
+int dp_reasons; |
+}; |
typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; |
DECLARE_STACK_OF(DIST_POINT) |
DECLARE_ASN1_SET_OF(DIST_POINT) |
-typedef struct AUTHORITY_KEYID_st { |
+struct AUTHORITY_KEYID_st { |
ASN1_OCTET_STRING *keyid; |
GENERAL_NAMES *issuer; |
ASN1_INTEGER *serial; |
-} AUTHORITY_KEYID; |
+}; |
/* Strong extranet structures */ |
@@ -303,10 +327,10 @@ |
DECLARE_STACK_OF(GENERAL_SUBTREE) |
-typedef struct NAME_CONSTRAINTS_st { |
+struct NAME_CONSTRAINTS_st { |
STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; |
STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; |
-} NAME_CONSTRAINTS; |
+}; |
typedef struct POLICY_CONSTRAINTS_st { |
ASN1_INTEGER *requireExplicitPolicy; |
@@ -329,7 +353,32 @@ |
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); |
@@ -373,6 +422,7 @@ |
#define EXFLAG_PROXY 0x400 |
#define EXFLAG_INVALID_POLICY 0x800 |
+#define EXFLAG_FRESHEST 0x1000 |
#define KU_DIGITAL_SIGNATURE 0x0080 |
#define KU_NON_REPUDIATION 0x0040 |
@@ -424,9 +474,10 @@ |
#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 8 |
+#define X509_PURPOSE_MAX 9 |
/* Flags for X509V3_EXT_print() */ |
@@ -471,8 +522,11 @@ |
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, |
@@ -486,11 +540,18 @@ |
STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, |
GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist); |
-GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, |
- X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
+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); |
@@ -507,7 +568,12 @@ |
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) |
@@ -524,11 +590,16 @@ |
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(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, |
- CONF_VALUE *cnf); |
-GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, X509V3_EXT_METHOD *method, |
- X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc); |
+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); |
@@ -538,18 +609,23 @@ |
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 *conf, X509V3_CTX *ctx, int ext_nid, char *value); |
-X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value); |
-int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert); |
-int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); |
-int X509V3_EXT_CRL_add_conf(LHASH *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); |
+ 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 *lhash); |
+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); |
@@ -576,8 +652,8 @@ |
int X509V3_EXT_add_alias(int nid_to, int nid_from); |
void X509V3_EXT_cleanup(void); |
-X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); |
-X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); |
+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); |
@@ -587,8 +663,8 @@ |
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(unsigned char *buffer, long len); |
-unsigned char *string_to_hex(char *str, long *len); |
+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, |
@@ -603,6 +679,7 @@ |
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); |
@@ -616,10 +693,10 @@ |
void X509_PURPOSE_cleanup(void); |
int X509_PURPOSE_get_id(X509_PURPOSE *); |
-STACK *X509_get1_email(X509 *x); |
-STACK *X509_REQ_get1_email(X509_REQ *x); |
-void X509_email_free(STACK *sk); |
-STACK *X509_get1_ocsp(X509 *x); |
+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); |
@@ -628,6 +705,7 @@ |
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 |
@@ -787,8 +865,9 @@ |
/* Error codes for the X509V3 functions. */ |
/* Function codes. */ |
-#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 156 |
-#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 157 |
+#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 |
@@ -796,6 +875,7 @@ |
#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 |
@@ -812,13 +892,14 @@ |
#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 158 |
+#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 |
@@ -827,6 +908,7 @@ |
#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 |
@@ -855,6 +937,7 @@ |
#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 |
@@ -868,12 +951,13 @@ |
#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_ASNUMBER 160 |
-#define X509V3_R_INVALID_ASRANGE 161 |
+#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 162 |
-#define X509V3_R_INVALID_IPADDRESS 163 |
+#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 |
@@ -901,9 +985,9 @@ |
#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_ALREADTY_DEFINED 155 |
+#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 |
#define X509V3_R_POLICY_PATH_LENGTH 156 |
-#define X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED 157 |
+#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 |
@@ -914,6 +998,7 @@ |
#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 |