X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fx509v3%2Fx509v3.h;h=af0e62fe53b13a45d995864bd8ffe9ce31ddb200;hp=518b41e2cfa87f54367d1c1f5e8c6c80f739a18f;hb=c79b16e11d70488f4de0e766d78f6a5ce77d99af;hpb=ec577822f95a8bca0023c5c77cef1a4916822d4a diff --git a/crypto/x509v3/x509v3.h b/crypto/x509v3/x509v3.h index 518b41e2cf..af0e62fe53 100644 --- a/crypto/x509v3/x509v3.h +++ b/crypto/x509v3/x509v3.h @@ -64,6 +64,7 @@ extern "C" { #include #include +#include /* Forward reference */ struct v3_ext_method; @@ -71,16 +72,16 @@ struct v3_ext_ctx; /* Useful typedefs */ -typedef char * (*X509V3_EXT_NEW)(); -typedef void (*X509V3_EXT_FREE)(); -typedef char * (*X509V3_EXT_D2I)(); -typedef int (*X509V3_EXT_I2D)(); -typedef STACK * (*X509V3_EXT_I2V)(struct v3_ext_method *method, char *ext, STACK *extlist); -typedef char * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK *values); -typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, char *ext); -typedef char * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str); -typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, char *ext, BIO *out, int indent); -typedef char * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str); +typedef void * (*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void * (*X509V3_EXT_D2I)(void *, 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, 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, char *str); /* V3 extension structure */ @@ -104,14 +105,14 @@ X509V3_EXT_V2I v2i; X509V3_EXT_I2R i2r; X509V3_EXT_R2I r2i; -char *usr_data; /* Any extension specific data */ +void *usr_data; /* Any extension specific data */ }; typedef struct X509V3_CONF_METHOD_st { char * (*get_string)(void *db, char *section, char *value); -STACK * (*get_section)(void *db, char *section); +STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section); void (*free_string)(void *db, char * string); -void (*free_section)(void *db, STACK *section); +void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); } X509V3_CONF_METHOD; /* Context specific info */ @@ -254,9 +255,10 @@ DECLARE_ASN1_SET_OF(POLICYINFO) #define X509V3_set_ctx_nodb(ctx) ctx->db = NULL; #define EXT_BITSTRING(nid, table) { nid, 0, \ - (X509V3_EXT_NEW)asn1_bit_string_new, ASN1_STRING_free, \ + (X509V3_EXT_NEW)asn1_bit_string_new, \ + (X509V3_EXT_FREE)ASN1_STRING_free, \ (X509V3_EXT_D2I)d2i_ASN1_BIT_STRING, \ - i2d_ASN1_BIT_STRING, \ + (X509V3_EXT_I2D)i2d_ASN1_BIT_STRING, \ NULL, NULL, \ (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ @@ -264,9 +266,10 @@ DECLARE_ASN1_SET_OF(POLICYINFO) (char *)table} #define EXT_IA5STRING(nid) { nid, 0, \ - (X509V3_EXT_NEW)ia5string_new, ASN1_STRING_free, \ + (X509V3_EXT_NEW)ia5string_new, \ + (X509V3_EXT_FREE)ASN1_STRING_free, \ (X509V3_EXT_D2I)d2i_ASN1_IA5STRING, \ - i2d_ASN1_IA5STRING, \ + (X509V3_EXT_I2D)i2d_ASN1_IA5STRING, \ (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ NULL, NULL, NULL, NULL, \ @@ -276,7 +279,6 @@ DECLARE_ASN1_SET_OF(POLICYINFO) NULL, NULL, NULL, NULL, \ NULL} -#ifndef NOPROTO void ERR_load_X509V3_strings(void); int i2d_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS *a, unsigned char **pp); BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS **a, unsigned char **pp, long length); @@ -287,7 +289,7 @@ int i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **pp); GENERAL_NAME *d2i_GENERAL_NAME(GENERAL_NAME **a, unsigned char **pp, long length); GENERAL_NAME *GENERAL_NAME_new(void); void GENERAL_NAME_free(GENERAL_NAME *a); -STACK *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK *ret); +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret); int i2d_SXNET(SXNET *a, unsigned char **pp); SXNET *d2i_SXNET(SXNET **a, unsigned char **pp, long length); @@ -321,16 +323,19 @@ STACK_OF(GENERAL_NAME) *GENERAL_NAMES_new(void); void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *a); STACK_OF(GENERAL_NAME) *d2i_GENERAL_NAMES(STACK_OF(GENERAL_NAME) **a, unsigned char **pp, long length); int i2d_GENERAL_NAMES(STACK_OF(GENERAL_NAME) *a, unsigned char **pp); -STACK *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, STACK_OF(GENERAL_NAME) *gen, STACK *extlist); -STACK_OF(GENERAL_NAME) *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *nval); +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + STACK_OF(GENERAL_NAME) *gen, STACK_OF(CONF_VALUE) *extlist); +STACK_OF(GENERAL_NAME) *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 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); -int i2d_ext_ku(STACK *a, unsigned char **pp); -STACK *d2i_ext_ku(STACK **a, unsigned char **pp, long length); -void ext_ku_free(STACK *a); -STACK *ext_ku_new(void); +int i2d_ext_ku(STACK_OF(ASN1_OBJECT) *a, unsigned char **pp); +STACK_OF(ASN1_OBJECT) *d2i_ext_ku(STACK_OF(ASN1_OBJECT) **a, + unsigned char **pp, long length); +void ext_ku_free(STACK_OF(ASN1_OBJECT) *a); +STACK_OF(ASN1_OBJECT) *ext_ku_new(void); int i2d_CERTIFICATEPOLICIES(STACK_OF(POLICYINFO) *a, unsigned char **pp); STACK_OF(POLICYINFO) *CERTIFICATEPOLICIES_new(void); @@ -381,175 +386,67 @@ void X509V3_conf_free(CONF_VALUE *val); 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); +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_conf_lhash(X509V3_CTX *ctx, LHASH *lhash); #endif char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section); -STACK * X509V3_get_section(X509V3_CTX *ctx, 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 *section); +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 **extlist); +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 **extlist); -int X509V3_add_value_bool(const char *name, int asn1_bool, STACK **extlist); -int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint, STACK **extlist); + 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); X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); int X509V3_add_standard_extensions(void); -STACK *X509V3_parse_list(char *line); +STACK_OF(CONF_VALUE) *X509V3_parse_list(char *line); void *X509V3_EXT_d2i(X509_EXTENSION *ext); +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); char *hex_to_string(unsigned char *buffer, long len); unsigned char *string_to_hex(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, int flag, int indent); int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); -#else - -void ERR_load_X509V3_strings(); -int i2d_BASIC_CONSTRAINTS(); -BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS(); -BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new(); -void BASIC_CONSTRAINTS_free(); - -int i2d_GENERAL_NAME(); -GENERAL_NAME *d2i_GENERAL_NAME(); -GENERAL_NAME *GENERAL_NAME_new(); -void GENERAL_NAME_free(); -STACK *i2v_GENERAL_NAME(); -GENERAL_NAME *v2i_GENERAL_NAME(); - -int i2d_SXNET(); -SXNET *d2i_SXNET(); -SXNET *SXNET_new(); -void SXNET_free(); - -int i2d_SXNETID(); -SXNETID *d2i_SXNETID(); -SXNETID *SXNETID_new(); -void SXNETID_free(); -int SXNET_add_id_asc(); -int SXNET_add_id_ulong(); -int SXNET_add_id_INTEGER(); -ASN1_OCTET_STRING *SXNET_get_id_asc(); -ASN1_OCTET_STRING *SXNET_get_id_ulong(); -ASN1_OCTET_STRING *SXNET_get_id_INTEGER(); - -int i2d_AUTHORITY_KEYID(); -AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(); -AUTHORITY_KEYID *AUTHORITY_KEYID_new(); -void AUTHORITY_KEYID_free(); - -int i2d_PKEY_USAGE_PERIOD(); -PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD(); -PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new(); -void PKEY_USAGE_PERIOD_free(); - -STACK *GENERAL_NAMES_new(); -void GENERAL_NAMES_free(); -STACK *d2i_GENERAL_NAMES(); -int i2d_GENERAL_NAMES(); -STACK *i2v_GENERAL_NAMES(); -STACK *v2i_GENERAL_NAMES(); - -char *i2s_ASN1_OCTET_STRING(); -ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(); - -int i2d_ext_ku(); -STACK *d2i_ext_ku(); -void ext_ku_free(); -STACK *ext_ku_new(); - -#ifdef HEADER_CONF_H -void X509V3_conf_free(); -X509_EXTENSION *X509V3_EXT_conf_nid(); -X509_EXTENSION *X509V3_EXT_conf(); -int X509V3_EXT_add_conf(); -int X509V3_get_value_bool(); -int X509V3_get_value_int(); -void X509V3_set_conf_lhash(); -#endif - -int i2d_CERTIFICATEPOLICIES(); -STACK *CERTIFICATEPOLICIES_new(); -void CERTIFICATEPOLICIES_free(); -STACK *d2i_CERTIFICATEPOLICIES(); - -int i2d_POLICYINFO(); -POLICYINFO *POLICYINFO_new(); -POLICYINFO *d2i_POLICYINFO(); -void POLICYINFO_free(); - -int i2d_POLICYQUALINFO(); -POLICYQUALINFO *POLICYQUALINFO_new(); -POLICYQUALINFO *d2i_POLICYQUALINFO(); -void POLICYQUALINFO_free(); - -int i2d_USERNOTICE(); -USERNOTICE *USERNOTICE_new(); -USERNOTICE *d2i_USERNOTICE(); -void USERNOTICE_free(); - -int i2d_NOTICEREF(); -NOTICEREF *NOTICEREF_new(); -NOTICEREF *d2i_NOTICEREF(); -void NOTICEREF_free(); - -char * X509V3_get_string(); -STACK * X509V3_get_section(); -void X509V3_string_free(); -void X509V3_section_free(); -void X509V3_set_ctx(); - -int X509V3_add_value(); -int X509V3_add_value_bool(); -int X509V3_add_value_int(); -char *i2s_ASN1_INTEGER(); -ASN1_INTEGER * s2i_ASN1_INTEGER(); -char * i2s_ASN1_ENUMERATED(); -char * i2s_ASN1_ENUMERATED_TABLE(); -int X509V3_EXT_add(); -int X509V3_EXT_CRL_add_conf(); -int X509V3_EXT_add_alias(); -void X509V3_EXT_cleanup(); - -X509V3_EXT_METHOD *X509V3_EXT_get(); -X509V3_EXT_METHOD *X509V3_EXT_get_nid(); -int X509V3_add_standard_extensions(); -STACK *X509V3_parse_list(); -void *X509V3_EXT_d2i(); - -char *hex_to_string(); -unsigned char *string_to_hex(); -int name_cmp(); - -int X509V3_EXT_print(); -int X509V3_EXT_print_fp(); -#endif - /* 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. + */ + /* Error codes for the X509V3 functions. */ /* Function codes. */ #define X509V3_F_COPY_EMAIL 122 #define X509V3_F_COPY_ISSUER 123 #define X509V3_F_DO_EXT_CONF 124 +#define X509V3_F_DO_EXT_I2D 135 #define X509V3_F_HEX_TO_STRING 111 #define X509V3_F_I2S_ASN1_ENUMERATED 121 #define X509V3_F_I2S_ASN1_INTEGER 120 @@ -580,6 +477,7 @@ int X509V3_EXT_print_fp(); #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_GET_VALUE_BOOL 110 #define X509V3_F_X509V3_PARSE_LIST 109 @@ -627,7 +525,7 @@ int X509V3_EXT_print_fp(); #define X509V3_R_UNKNOWN_OPTION 120 #define X509V3_R_UNSUPPORTED_OPTION 117 #define X509V3_R_USER_TOO_LONG 132 - + #ifdef __cplusplus } #endif