Add extension free function.
This commit is contained in:
@@ -116,6 +116,27 @@ const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext)
|
|||||||
return X509V3_EXT_get_nid(nid);
|
return X509V3_EXT_get_nid(nid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int X509V3_EXT_free(int nid, void *ext_data)
|
||||||
|
{
|
||||||
|
const X509V3_EXT_METHOD *ext_method = X509V3_EXT_get_nid(nid);
|
||||||
|
if (ext_method == NULL)
|
||||||
|
{
|
||||||
|
X509V3err(X509V3_F_X509V3_EXT_FREE, X509V3_R_CANNOT_FIND_FREE_FUNCTION);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ext_method->it != NULL)
|
||||||
|
ASN1_item_free(ext_data, ASN1_ITEM_ptr(ext_method->it));
|
||||||
|
else if (ext_method->ext_free != NULL)
|
||||||
|
ext_method->ext_free(ext_data);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
X509V3err(X509V3_F_X509V3_EXT_FREE, X509V3_R_CANNOT_FIND_FREE_FUNCTION);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist)
|
int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist)
|
||||||
{
|
{
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* crypto/x509v3/v3err.c */
|
/* crypto/x509v3/v3err.c */
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
|
* Copyright (c) 1999-2014 The OpenSSL Project. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
|
|
||||||
static ERR_STRING_DATA X509V3_str_functs[]=
|
static ERR_STRING_DATA X509V3_str_functs[]=
|
||||||
{
|
{
|
||||||
{ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"},
|
{ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "a2i_GENERAL_NAME"},
|
||||||
{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"},
|
{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"},
|
||||||
{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"},
|
{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"},
|
||||||
{ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"},
|
{ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"},
|
||||||
@@ -127,6 +127,7 @@ static ERR_STRING_DATA X509V3_str_functs[]=
|
|||||||
{ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"},
|
{ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"},
|
||||||
{ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"},
|
{ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"},
|
||||||
{ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"},
|
{ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"},
|
||||||
|
{ERR_FUNC(X509V3_F_X509V3_EXT_FREE), "X509V3_EXT_free"},
|
||||||
{ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"},
|
{ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"},
|
||||||
{ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"},
|
{ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"},
|
||||||
{ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"},
|
{ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"},
|
||||||
@@ -144,6 +145,7 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
|
|||||||
{ERR_REASON(X509V3_R_BAD_OBJECT) ,"bad object"},
|
{ERR_REASON(X509V3_R_BAD_OBJECT) ,"bad object"},
|
||||||
{ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"},
|
{ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"},
|
||||||
{ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"},
|
{ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"},
|
||||||
|
{ERR_REASON(X509V3_R_CANNOT_FIND_FREE_FUNCTION),"cannot find free function"},
|
||||||
{ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"},
|
{ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"},
|
||||||
{ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET),"distpoint already set"},
|
{ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET),"distpoint already set"},
|
||||||
{ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"},
|
{ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"},
|
||||||
@@ -159,13 +161,13 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
|
|||||||
{ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"},
|
{ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"},
|
||||||
{ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"},
|
{ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"},
|
||||||
{ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"},
|
{ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS),"invalid multiple rdns"},
|
|
||||||
{ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"},
|
{ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"},
|
{ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"},
|
{ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING),"invalid extension string"},
|
{ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING),"invalid extension string"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_INHERITANCE),"invalid inheritance"},
|
{ERR_REASON(X509V3_R_INVALID_INHERITANCE),"invalid inheritance"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_IPADDRESS) ,"invalid ipaddress"},
|
{ERR_REASON(X509V3_R_INVALID_IPADDRESS) ,"invalid ipaddress"},
|
||||||
|
{ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS),"invalid multiple rdns"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_NAME) ,"invalid name"},
|
{ERR_REASON(X509V3_R_INVALID_NAME) ,"invalid name"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT),"invalid null argument"},
|
{ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT),"invalid null argument"},
|
||||||
{ERR_REASON(X509V3_R_INVALID_NULL_NAME) ,"invalid null name"},
|
{ERR_REASON(X509V3_R_INVALID_NULL_NAME) ,"invalid null name"},
|
||||||
|
@@ -659,6 +659,7 @@ int X509V3_add_standard_extensions(void);
|
|||||||
STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
|
STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
|
||||||
void *X509V3_EXT_d2i(X509_EXTENSION *ext);
|
void *X509V3_EXT_d2i(X509_EXTENSION *ext);
|
||||||
void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
|
void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
|
||||||
|
int X509V3_EXT_free(int nid, void *ext_data);
|
||||||
|
|
||||||
|
|
||||||
X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
|
X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
|
||||||
@@ -937,6 +938,7 @@ void ERR_load_X509V3_strings(void);
|
|||||||
#define X509V3_F_X509V3_EXT_ADD 104
|
#define X509V3_F_X509V3_EXT_ADD 104
|
||||||
#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
|
#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
|
||||||
#define X509V3_F_X509V3_EXT_CONF 107
|
#define X509V3_F_X509V3_EXT_CONF 107
|
||||||
|
#define X509V3_F_X509V3_EXT_FREE 165
|
||||||
#define X509V3_F_X509V3_EXT_I2D 136
|
#define X509V3_F_X509V3_EXT_I2D 136
|
||||||
#define X509V3_F_X509V3_EXT_NCONF 152
|
#define X509V3_F_X509V3_EXT_NCONF 152
|
||||||
#define X509V3_F_X509V3_GET_SECTION 142
|
#define X509V3_F_X509V3_GET_SECTION 142
|
||||||
@@ -951,6 +953,7 @@ void ERR_load_X509V3_strings(void);
|
|||||||
#define X509V3_R_BAD_OBJECT 119
|
#define X509V3_R_BAD_OBJECT 119
|
||||||
#define X509V3_R_BN_DEC2BN_ERROR 100
|
#define X509V3_R_BN_DEC2BN_ERROR 100
|
||||||
#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
|
#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
|
||||||
|
#define X509V3_R_CANNOT_FIND_FREE_FUNCTION 168
|
||||||
#define X509V3_R_DIRNAME_ERROR 149
|
#define X509V3_R_DIRNAME_ERROR 149
|
||||||
#define X509V3_R_DISTPOINT_ALREADY_SET 160
|
#define X509V3_R_DISTPOINT_ALREADY_SET 160
|
||||||
#define X509V3_R_DUPLICATE_ZONE_ID 133
|
#define X509V3_R_DUPLICATE_ZONE_ID 133
|
||||||
@@ -966,13 +969,13 @@ void ERR_load_X509V3_strings(void);
|
|||||||
#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
|
#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
|
||||||
#define X509V3_R_ILLEGAL_HEX_DIGIT 113
|
#define X509V3_R_ILLEGAL_HEX_DIGIT 113
|
||||||
#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
|
#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_ASNUMBER 162
|
||||||
#define X509V3_R_INVALID_ASRANGE 163
|
#define X509V3_R_INVALID_ASRANGE 163
|
||||||
#define X509V3_R_INVALID_BOOLEAN_STRING 104
|
#define X509V3_R_INVALID_BOOLEAN_STRING 104
|
||||||
#define X509V3_R_INVALID_EXTENSION_STRING 105
|
#define X509V3_R_INVALID_EXTENSION_STRING 105
|
||||||
#define X509V3_R_INVALID_INHERITANCE 165
|
#define X509V3_R_INVALID_INHERITANCE 165
|
||||||
#define X509V3_R_INVALID_IPADDRESS 166
|
#define X509V3_R_INVALID_IPADDRESS 166
|
||||||
|
#define X509V3_R_INVALID_MULTIPLE_RDNS 161
|
||||||
#define X509V3_R_INVALID_NAME 106
|
#define X509V3_R_INVALID_NAME 106
|
||||||
#define X509V3_R_INVALID_NULL_ARGUMENT 107
|
#define X509V3_R_INVALID_NULL_ARGUMENT 107
|
||||||
#define X509V3_R_INVALID_NULL_NAME 108
|
#define X509V3_R_INVALID_NULL_NAME 108
|
||||||
|
Reference in New Issue
Block a user