X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fx509v3%2Fx509v3.h;h=282732e8ef422473f795342a38c049462e582e95;hp=e828d4be0e540af6e2272351dbc9f540b042cce4;hb=79a474e8f275fec0548f565efc98b659072e9f99;hpb=5236efdbf57e68029d6899dcd2e9b9ea25951e6f diff --git a/crypto/x509v3/x509v3.h b/crypto/x509v3/x509v3.h index e828d4be0e..282732e8ef 100644 --- a/crypto/x509v3/x509v3.h +++ b/crypto/x509v3/x509v3.h @@ -80,6 +80,7 @@ typedef char * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx 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); +typedef char *(*X509V3_EXT_R2I)(struct v3_ext_method *method, char *db, char *value); /* V3 extension structure */ @@ -99,8 +100,9 @@ X509V3_EXT_S2I s2i; X509V3_EXT_I2V i2v; X509V3_EXT_V2I v2i; -/* The following is used for raw extensions */ +/* The following are used for raw extensions */ X509V3_EXT_I2R i2r; +X509V3_EXT_R2I r2i; /* Doesn't do anything *YET* */ char *usr_data; /* Any extension specific data */ }; @@ -130,6 +132,8 @@ char *lname; char *sname; } BIT_STRING_BITNAME; +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + typedef struct { int ca; ASN1_INTEGER *pathlen; @@ -141,6 +145,11 @@ STACK *issuer; ASN1_INTEGER *serial; } AUTHORITY_KEYID; +typedef struct { +ASN1_GENERALIZEDTIME *notBefore; +ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + typedef struct { #define GEN_OTHERNAME (0|V_ASN1_CONTEXT_SPECIFIC) @@ -177,7 +186,7 @@ union { NULL, NULL, \ (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ - NULL, \ + NULL, NULL, \ (char *)table} #define EXT_IA5STRING(nid) { nid, 0, \ @@ -186,11 +195,11 @@ union { i2d_ASN1_IA5STRING, \ (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ - NULL, NULL, NULL, \ + NULL, NULL, NULL, NULL, \ NULL} #define EXT_END { -1, 0, NULL, NULL, NULL, NULL, NULL, NULL, \ - NULL, NULL, NULL, \ + NULL, NULL, NULL, NULL, \ NULL} #ifndef NOPROTO @@ -204,17 +213,24 @@ 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); int i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **pp); AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(AUTHORITY_KEYID **a, unsigned char **pp, long length); AUTHORITY_KEYID *AUTHORITY_KEYID_new(void); void AUTHORITY_KEYID_free(AUTHORITY_KEYID *a); +int i2d_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD *a, unsigned char **pp); +PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD **a, unsigned char **pp, long length); +PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new(void); +void PKEY_USAGE_PERIOD_free(PKEY_USAGE_PERIOD *a); + STACK *GENERAL_NAMES_new(void); void GENERAL_NAMES_free(STACK *a); STACK *d2i_GENERAL_NAMES(STACK **a, unsigned char **pp, long length); int i2d_GENERAL_NAMES(STACK *a, unsigned char **pp); STACK *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, STACK *gen, STACK *extlist); +STACK *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *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); @@ -225,6 +241,7 @@ void ext_ku_free(STACK *a); STACK *ext_ku_new(void); #ifdef HEADER_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, CONF_VALUE *cnf); 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); @@ -237,6 +254,9 @@ int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); int X509V3_add_value(char *name, char *value, STACK **extlist); int X509V3_add_value_bool(char *name, int asn1_bool, STACK **extlist); int X509V3_add_value_int( char *name, ASN1_INTEGER *aint, STACK **extlist); +char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint); +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_alias(int nid_to, int nid_from); void X509V3_EXT_cleanup(void); @@ -245,9 +265,11 @@ 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); +char *X509V3_EXT_d2i(X509_EXTENSION *ext); char *hex_to_string(unsigned char *buffer, long len); unsigned char *string_to_hex(char *str, long *len); +int name_cmp(char *name, char *cmp); int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag); int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag); @@ -264,12 +286,20 @@ 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_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(); @@ -292,6 +322,9 @@ int X509V3_get_value_int(); int X509V3_add_value(); int X509V3_add_value_bool(); int X509V3_add_value_int(); +char *i2s_ASN1_INTEGER(); +char * i2s_ASN1_ENUMERATED(); +char * i2s_ASN1_ENUMERATED_TABLE(); int X509V3_EXT_add(); int X509V3_EXT_add_alias(); void X509V3_EXT_cleanup(); @@ -300,9 +333,11 @@ X509V3_EXT_METHOD *X509V3_EXT_get(); X509V3_EXT_METHOD *X509V3_EXT_get_nid(); int X509V3_add_standard_extensions(); STACK *X509V3_parse_list(); +char *X509V3_EXT_d2i(); char *hex_to_string(); unsigned char *string_to_hex(); +int name_cmp(); int X509V3_EXT_print(); int X509V3_EXT_print_fp(); @@ -312,15 +347,23 @@ int X509V3_EXT_print_fp(); /* 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_HEX_TO_STRING 111 +#define X509V3_F_I2S_ASN1_ENUMERATED 121 +#define X509V3_F_I2S_ASN1_INTEGER 120 #define X509V3_F_S2I_ASN1_IA5STRING 100 #define X509V3_F_S2I_ASN1_OCTET_STRING 112 #define X509V3_F_S2I_ASN1_SKEY_ID 114 #define X509V3_F_S2I_S2I_SKEY_ID 115 #define X509V3_F_STRING_TO_HEX 113 #define X509V3_F_V2I_ASN1_BIT_STRING 101 +#define X509V3_F_V2I_AUTHORITY_KEYID 119 #define X509V3_F_V2I_BASIC_CONSTRAINTS 102 #define X509V3_F_V2I_EXT_KU 103 +#define X509V3_F_V2I_GENERAL_NAME 117 +#define X509V3_F_V2I_GENERAL_NAMES 118 #define X509V3_F_V3_GENERIC_EXTENSION 116 #define X509V3_F_X509V3_ADD_EXT 104 #define X509V3_F_X509V3_ADD_VALUE 105 @@ -331,8 +374,11 @@ int X509V3_EXT_print_fp(); #define X509V3_F_X509V3_VALUE_GET_BOOL 110 /* 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_ERROR_IN_EXTENSION 128 #define X509V3_R_EXTENSION_NAME_ERROR 115 #define X509V3_R_EXTENSION_NOT_FOUND 102 #define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 @@ -345,9 +391,20 @@ int X509V3_EXT_print_fp(); #define X509V3_R_INVALID_NULL_NAME 108 #define X509V3_R_INVALID_NULL_VALUE 109 #define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +#define X509V3_R_ISSUER_DECODE_ERROR 126 +#define X509V3_R_MISSING_VALUE 124 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121 +#define X509V3_R_NO_ISSUER_DETAILS 127 #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_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 #ifdef __cplusplus }