diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_ia5.c | 59 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_info.c | 129 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_int.c | 35 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_lib.c | 179 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3conf.c | 30 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3err.c | 299 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3prin.c | 21 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_ia5.c | 59 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_info.c | 129 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_int.c | 35 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_lib.c | 179 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3conf.c | 30 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3err.c | 299 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3prin.c | 21 |
14 files changed, 818 insertions, 686 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_ia5.c b/src/lib/libcrypto/x509v3/v3_ia5.c index 98789b36e9..090fe49b20 100644 --- a/src/lib/libcrypto/x509v3/v3_ia5.c +++ b/src/lib/libcrypto/x509v3/v3_ia5.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -64,26 +64,29 @@ | |||
64 | #include <openssl/x509v3.h> | 64 | #include <openssl/x509v3.h> |
65 | 65 | ||
66 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); | 66 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); |
67 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); | 67 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, |
68 | const X509V3_EXT_METHOD v3_ns_ia5_list[] = { | 68 | X509V3_CTX *ctx, char *str); |
69 | EXT_IA5STRING(NID_netscape_base_url), | ||
70 | EXT_IA5STRING(NID_netscape_revocation_url), | ||
71 | EXT_IA5STRING(NID_netscape_ca_revocation_url), | ||
72 | EXT_IA5STRING(NID_netscape_renewal_url), | ||
73 | EXT_IA5STRING(NID_netscape_ca_policy_url), | ||
74 | EXT_IA5STRING(NID_netscape_ssl_server_name), | ||
75 | EXT_IA5STRING(NID_netscape_comment), | ||
76 | EXT_END | ||
77 | }; | ||
78 | 69 | ||
70 | const X509V3_EXT_METHOD v3_ns_ia5_list[] = { | ||
71 | EXT_IA5STRING(NID_netscape_base_url), | ||
72 | EXT_IA5STRING(NID_netscape_revocation_url), | ||
73 | EXT_IA5STRING(NID_netscape_ca_revocation_url), | ||
74 | EXT_IA5STRING(NID_netscape_renewal_url), | ||
75 | EXT_IA5STRING(NID_netscape_ca_policy_url), | ||
76 | EXT_IA5STRING(NID_netscape_ssl_server_name), | ||
77 | EXT_IA5STRING(NID_netscape_comment), | ||
78 | EXT_END | ||
79 | }; | ||
79 | 80 | ||
80 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | 81 | static char * |
81 | ASN1_IA5STRING *ia5) | 82 | i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5) |
82 | { | 83 | { |
83 | char *tmp; | 84 | char *tmp; |
84 | if(!ia5 || !ia5->length) return NULL; | 85 | |
85 | if(!(tmp = malloc(ia5->length + 1))) { | 86 | if (!ia5 || !ia5->length) |
86 | X509V3err(X509V3_F_I2S_ASN1_IA5STRING,ERR_R_MALLOC_FAILURE); | 87 | return NULL; |
88 | if (!(tmp = malloc(ia5->length + 1))) { | ||
89 | X509V3err(X509V3_F_I2S_ASN1_IA5STRING, ERR_R_MALLOC_FAILURE); | ||
87 | return NULL; | 90 | return NULL; |
88 | } | 91 | } |
89 | memcpy(tmp, ia5->data, ia5->length); | 92 | memcpy(tmp, ia5->data, ia5->length); |
@@ -91,23 +94,25 @@ static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | |||
91 | return tmp; | 94 | return tmp; |
92 | } | 95 | } |
93 | 96 | ||
94 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | 97 | static ASN1_IA5STRING * |
95 | X509V3_CTX *ctx, char *str) | 98 | s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str) |
96 | { | 99 | { |
97 | ASN1_IA5STRING *ia5; | 100 | ASN1_IA5STRING *ia5; |
98 | if(!str) { | 101 | if (!str) { |
99 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING,X509V3_R_INVALID_NULL_ARGUMENT); | 102 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING, |
103 | X509V3_R_INVALID_NULL_ARGUMENT); | ||
100 | return NULL; | 104 | return NULL; |
101 | } | 105 | } |
102 | if(!(ia5 = M_ASN1_IA5STRING_new())) goto err; | 106 | if (!(ia5 = M_ASN1_IA5STRING_new())) |
103 | if(!ASN1_STRING_set((ASN1_STRING *)ia5, (unsigned char*)str, | 107 | goto err; |
104 | strlen(str))) { | 108 | if (!ASN1_STRING_set((ASN1_STRING *)ia5, (unsigned char*)str, |
109 | strlen(str))) { | ||
105 | M_ASN1_IA5STRING_free(ia5); | 110 | M_ASN1_IA5STRING_free(ia5); |
106 | goto err; | 111 | goto err; |
107 | } | 112 | } |
108 | return ia5; | 113 | return ia5; |
109 | err: | 114 | |
110 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING,ERR_R_MALLOC_FAILURE); | 115 | err: |
116 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING, ERR_R_MALLOC_FAILURE); | ||
111 | return NULL; | 117 | return NULL; |
112 | } | 118 | } |
113 | |||
diff --git a/src/lib/libcrypto/x509v3/v3_info.c b/src/lib/libcrypto/x509v3/v3_info.c index c9d6c97b51..7853e3e23b 100644 --- a/src/lib/libcrypto/x509v3/v3_info.c +++ b/src/lib/libcrypto/x509v3/v3_info.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -63,29 +63,33 @@ | |||
63 | #include <openssl/asn1t.h> | 63 | #include <openssl/asn1t.h> |
64 | #include <openssl/x509v3.h> | 64 | #include <openssl/x509v3.h> |
65 | 65 | ||
66 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 66 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS( |
67 | AUTHORITY_INFO_ACCESS *ainfo, | 67 | X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo, |
68 | STACK_OF(CONF_VALUE) *ret); | 68 | STACK_OF(CONF_VALUE) *ret); |
69 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 69 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS( |
70 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 70 | X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
71 | 71 | ||
72 | const X509V3_EXT_METHOD v3_info = | 72 | const X509V3_EXT_METHOD v3_info = { |
73 | { NID_info_access, X509V3_EXT_MULTILINE, ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), | 73 | NID_info_access, X509V3_EXT_MULTILINE, |
74 | 0,0,0,0, | 74 | ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), |
75 | 0,0, | 75 | 0, 0, 0, 0, |
76 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, | 76 | 0, 0, |
77 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | 77 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, |
78 | 0,0, | 78 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, |
79 | NULL}; | 79 | 0, 0, |
80 | 80 | NULL | |
81 | const X509V3_EXT_METHOD v3_sinfo = | 81 | }; |
82 | { NID_sinfo_access, X509V3_EXT_MULTILINE, ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), | 82 | |
83 | 0,0,0,0, | 83 | const X509V3_EXT_METHOD v3_sinfo = { |
84 | 0,0, | 84 | NID_sinfo_access, X509V3_EXT_MULTILINE, |
85 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, | 85 | ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), |
86 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | 86 | 0, 0, 0, 0, |
87 | 0,0, | 87 | 0, 0, |
88 | NULL}; | 88 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, |
89 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | ||
90 | 0, 0, | ||
91 | NULL | ||
92 | }; | ||
89 | 93 | ||
90 | ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { | 94 | ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { |
91 | ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), | 95 | ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), |
@@ -94,31 +98,34 @@ ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { | |||
94 | 98 | ||
95 | IMPLEMENT_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) | 99 | IMPLEMENT_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) |
96 | 100 | ||
97 | ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = | 101 | ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = |
98 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, ACCESS_DESCRIPTION) | 102 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, |
103 | ACCESS_DESCRIPTION) | ||
99 | ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) | 104 | ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) |
100 | 105 | ||
101 | IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) | 106 | IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) |
102 | 107 | ||
103 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 108 | static STACK_OF(CONF_VALUE) * |
104 | AUTHORITY_INFO_ACCESS *ainfo, | 109 | i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, |
105 | STACK_OF(CONF_VALUE) *ret) | 110 | AUTHORITY_INFO_ACCESS *ainfo, STACK_OF(CONF_VALUE) *ret) |
106 | { | 111 | { |
107 | ACCESS_DESCRIPTION *desc; | 112 | ACCESS_DESCRIPTION *desc; |
108 | int i,nlen; | 113 | int i, nlen; |
109 | char objtmp[80], *ntmp; | 114 | char objtmp[80], *ntmp; |
110 | CONF_VALUE *vtmp; | 115 | CONF_VALUE *vtmp; |
111 | for(i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { | 116 | |
117 | for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { | ||
112 | desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); | 118 | desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); |
113 | ret = i2v_GENERAL_NAME(method, desc->location, ret); | 119 | ret = i2v_GENERAL_NAME(method, desc->location, ret); |
114 | if(!ret) break; | 120 | if (!ret) |
121 | break; | ||
115 | vtmp = sk_CONF_VALUE_value(ret, i); | 122 | vtmp = sk_CONF_VALUE_value(ret, i); |
116 | i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); | 123 | i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); |
117 | nlen = strlen(objtmp) + strlen(vtmp->name) + 5; | 124 | nlen = strlen(objtmp) + strlen(vtmp->name) + 5; |
118 | ntmp = malloc(nlen); | 125 | ntmp = malloc(nlen); |
119 | if(!ntmp) { | 126 | if (!ntmp) { |
120 | X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, | 127 | X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, |
121 | ERR_R_MALLOC_FAILURE); | 128 | ERR_R_MALLOC_FAILURE); |
122 | return NULL; | 129 | return NULL; |
123 | } | 130 | } |
124 | strlcpy(ntmp, objtmp, nlen); | 131 | strlcpy(ntmp, objtmp, nlen); |
@@ -126,49 +133,57 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method | |||
126 | strlcat(ntmp, vtmp->name, nlen); | 133 | strlcat(ntmp, vtmp->name, nlen); |
127 | free(vtmp->name); | 134 | free(vtmp->name); |
128 | vtmp->name = ntmp; | 135 | vtmp->name = ntmp; |
129 | 136 | ||
130 | } | 137 | } |
131 | if(!ret) return sk_CONF_VALUE_new_null(); | 138 | if (!ret) |
139 | return sk_CONF_VALUE_new_null(); | ||
132 | return ret; | 140 | return ret; |
133 | } | 141 | } |
134 | 142 | ||
135 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 143 | static AUTHORITY_INFO_ACCESS * |
136 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) | 144 | v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, |
145 | STACK_OF(CONF_VALUE) *nval) | ||
137 | { | 146 | { |
138 | AUTHORITY_INFO_ACCESS *ainfo = NULL; | 147 | AUTHORITY_INFO_ACCESS *ainfo = NULL; |
139 | CONF_VALUE *cnf, ctmp; | 148 | CONF_VALUE *cnf, ctmp; |
140 | ACCESS_DESCRIPTION *acc; | 149 | ACCESS_DESCRIPTION *acc; |
141 | int i, objlen; | 150 | int i, objlen; |
142 | char *objtmp, *ptmp; | 151 | char *objtmp, *ptmp; |
143 | if(!(ainfo = sk_ACCESS_DESCRIPTION_new_null())) { | 152 | |
144 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 153 | if (!(ainfo = sk_ACCESS_DESCRIPTION_new_null())) { |
154 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, | ||
155 | ERR_R_MALLOC_FAILURE); | ||
145 | return NULL; | 156 | return NULL; |
146 | } | 157 | } |
147 | for(i = 0; i < sk_CONF_VALUE_num(nval); i++) { | 158 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { |
148 | cnf = sk_CONF_VALUE_value(nval, i); | 159 | cnf = sk_CONF_VALUE_value(nval, i); |
149 | if(!(acc = ACCESS_DESCRIPTION_new()) | 160 | if (!(acc = ACCESS_DESCRIPTION_new()) || |
150 | || !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { | 161 | !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { |
151 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 162 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
163 | ERR_R_MALLOC_FAILURE); | ||
152 | goto err; | 164 | goto err; |
153 | } | 165 | } |
154 | ptmp = strchr(cnf->name, ';'); | 166 | ptmp = strchr(cnf->name, ';'); |
155 | if(!ptmp) { | 167 | if (!ptmp) { |
156 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,X509V3_R_INVALID_SYNTAX); | 168 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
169 | X509V3_R_INVALID_SYNTAX); | ||
157 | goto err; | 170 | goto err; |
158 | } | 171 | } |
159 | objlen = ptmp - cnf->name; | 172 | objlen = ptmp - cnf->name; |
160 | ctmp.name = ptmp + 1; | 173 | ctmp.name = ptmp + 1; |
161 | ctmp.value = cnf->value; | 174 | ctmp.value = cnf->value; |
162 | if(!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) | 175 | if (!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) |
163 | goto err; | 176 | goto err; |
164 | if(!(objtmp = malloc(objlen + 1))) { | 177 | if (!(objtmp = malloc(objlen + 1))) { |
165 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 178 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
179 | ERR_R_MALLOC_FAILURE); | ||
166 | goto err; | 180 | goto err; |
167 | } | 181 | } |
168 | strlcpy(objtmp, cnf->name, objlen + 1); | 182 | strlcpy(objtmp, cnf->name, objlen + 1); |
169 | acc->method = OBJ_txt2obj(objtmp, 0); | 183 | acc->method = OBJ_txt2obj(objtmp, 0); |
170 | if(!acc->method) { | 184 | if (!acc->method) { |
171 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,X509V3_R_BAD_OBJECT); | 185 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
186 | X509V3_R_BAD_OBJECT); | ||
172 | ERR_add_error_data(2, "value=", objtmp); | 187 | ERR_add_error_data(2, "value=", objtmp); |
173 | free(objtmp); | 188 | free(objtmp); |
174 | goto err; | 189 | goto err; |
@@ -177,16 +192,18 @@ static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *metho | |||
177 | 192 | ||
178 | } | 193 | } |
179 | return ainfo; | 194 | return ainfo; |
180 | err: | 195 | |
196 | err: | ||
181 | sk_ACCESS_DESCRIPTION_pop_free(ainfo, ACCESS_DESCRIPTION_free); | 197 | sk_ACCESS_DESCRIPTION_pop_free(ainfo, ACCESS_DESCRIPTION_free); |
182 | return NULL; | 198 | return NULL; |
183 | } | 199 | } |
184 | 200 | ||
185 | int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a) | 201 | int |
186 | { | 202 | i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a) |
203 | { | ||
187 | i2a_ASN1_OBJECT(bp, a->method); | 204 | i2a_ASN1_OBJECT(bp, a->method); |
188 | #ifdef UNDEF | 205 | #ifdef UNDEF |
189 | i2a_GENERAL_NAME(bp, a->location); | 206 | i2a_GENERAL_NAME(bp, a->location); |
190 | #endif | 207 | #endif |
191 | return 2; | 208 | return 2; |
192 | } | 209 | } |
diff --git a/src/lib/libcrypto/x509v3/v3_int.c b/src/lib/libcrypto/x509v3/v3_int.c index 4bfd14cf46..51f9e5cdc6 100644 --- a/src/lib/libcrypto/x509v3/v3_int.c +++ b/src/lib/libcrypto/x509v3/v3_int.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -60,30 +60,35 @@ | |||
60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
61 | #include <openssl/x509v3.h> | 61 | #include <openssl/x509v3.h> |
62 | 62 | ||
63 | const X509V3_EXT_METHOD v3_crl_num = { | 63 | const X509V3_EXT_METHOD v3_crl_num = { |
64 | NID_crl_number, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 64 | NID_crl_number, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
65 | 0,0,0,0, | 65 | 0, 0, 0, 0, |
66 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 66 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
67 | 0, | 67 | 0, |
68 | 0,0,0,0, NULL}; | 68 | 0, 0, 0, 0, |
69 | NULL | ||
70 | }; | ||
69 | 71 | ||
70 | const X509V3_EXT_METHOD v3_delta_crl = { | 72 | const X509V3_EXT_METHOD v3_delta_crl = { |
71 | NID_delta_crl, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 73 | NID_delta_crl, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
72 | 0,0,0,0, | 74 | 0, 0, 0, 0, |
73 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 75 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
74 | 0, | 76 | 0, |
75 | 0,0,0,0, NULL}; | 77 | 0, 0, 0, 0, |
78 | NULL | ||
79 | }; | ||
76 | 80 | ||
77 | static void * s2i_asn1_int(X509V3_EXT_METHOD *meth, X509V3_CTX *ctx, char *value) | 81 | static void * |
78 | { | 82 | s2i_asn1_int(X509V3_EXT_METHOD *meth, X509V3_CTX *ctx, char *value) |
83 | { | ||
79 | return s2i_ASN1_INTEGER(meth, value); | 84 | return s2i_ASN1_INTEGER(meth, value); |
80 | } | 85 | } |
81 | 86 | ||
82 | const X509V3_EXT_METHOD v3_inhibit_anyp = { | 87 | const X509V3_EXT_METHOD v3_inhibit_anyp = { |
83 | NID_inhibit_any_policy, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 88 | NID_inhibit_any_policy, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
84 | 0,0,0,0, | 89 | 0, 0, 0, 0, |
85 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 90 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
86 | (X509V3_EXT_S2I)s2i_asn1_int, | 91 | (X509V3_EXT_S2I)s2i_asn1_int, |
87 | 0,0,0,0, NULL}; | 92 | 0, 0, 0, 0, |
88 | 93 | NULL | |
89 | 94 | }; | |
diff --git a/src/lib/libcrypto/x509v3/v3_lib.c b/src/lib/libcrypto/x509v3/v3_lib.c index 8d5e6ee911..3f610cdaa3 100644 --- a/src/lib/libcrypto/x509v3/v3_lib.c +++ b/src/lib/libcrypto/x509v3/v3_lib.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -67,74 +67,87 @@ | |||
67 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; | 67 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; |
68 | 68 | ||
69 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, | 69 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, |
70 | const X509V3_EXT_METHOD * const *b); | 70 | const X509V3_EXT_METHOD * const *b); |
71 | static void ext_list_free(X509V3_EXT_METHOD *ext); | 71 | static void ext_list_free(X509V3_EXT_METHOD *ext); |
72 | 72 | ||
73 | int X509V3_EXT_add(X509V3_EXT_METHOD *ext) | 73 | int |
74 | X509V3_EXT_add(X509V3_EXT_METHOD *ext) | ||
74 | { | 75 | { |
75 | if(!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_cmp))) { | 76 | if (!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_cmp))) { |
76 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 77 | X509V3err(X509V3_F_X509V3_EXT_ADD, ERR_R_MALLOC_FAILURE); |
77 | return 0; | 78 | return 0; |
78 | } | 79 | } |
79 | if(!sk_X509V3_EXT_METHOD_push(ext_list, ext)) { | 80 | if (!sk_X509V3_EXT_METHOD_push(ext_list, ext)) { |
80 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 81 | X509V3err(X509V3_F_X509V3_EXT_ADD, ERR_R_MALLOC_FAILURE); |
81 | return 0; | 82 | return 0; |
82 | } | 83 | } |
83 | return 1; | 84 | return 1; |
84 | } | 85 | } |
85 | 86 | ||
86 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, | 87 | static int |
87 | const X509V3_EXT_METHOD * const *b) | 88 | ext_cmp(const X509V3_EXT_METHOD * const *a, const X509V3_EXT_METHOD * const *b) |
88 | { | 89 | { |
89 | return ((*a)->ext_nid - (*b)->ext_nid); | 90 | return ((*a)->ext_nid - (*b)->ext_nid); |
90 | } | 91 | } |
91 | 92 | ||
92 | DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, const X509V3_EXT_METHOD *, | 93 | DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, |
93 | ext); | 94 | const X509V3_EXT_METHOD *, ext); |
94 | IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, | 95 | IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, |
95 | const X509V3_EXT_METHOD *, ext); | 96 | const X509V3_EXT_METHOD *, ext); |
96 | 97 | ||
97 | const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid) | 98 | const X509V3_EXT_METHOD * |
99 | X509V3_EXT_get_nid(int nid) | ||
98 | { | 100 | { |
99 | X509V3_EXT_METHOD tmp; | 101 | X509V3_EXT_METHOD tmp; |
100 | const X509V3_EXT_METHOD *t = &tmp, * const *ret; | 102 | const X509V3_EXT_METHOD *t = &tmp, * const *ret; |
101 | int idx; | 103 | int idx; |
102 | if(nid < 0) return NULL; | 104 | |
105 | if (nid < 0) | ||
106 | return NULL; | ||
103 | tmp.ext_nid = nid; | 107 | tmp.ext_nid = nid; |
104 | ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT); | 108 | ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT); |
105 | if(ret) return *ret; | 109 | if (ret) |
106 | if(!ext_list) return NULL; | 110 | return *ret; |
111 | if (!ext_list) | ||
112 | return NULL; | ||
107 | idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); | 113 | idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); |
108 | if(idx == -1) return NULL; | 114 | if (idx == -1) |
115 | return NULL; | ||
109 | return sk_X509V3_EXT_METHOD_value(ext_list, idx); | 116 | return sk_X509V3_EXT_METHOD_value(ext_list, idx); |
110 | } | 117 | } |
111 | 118 | ||
112 | const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) | 119 | const X509V3_EXT_METHOD * |
120 | X509V3_EXT_get(X509_EXTENSION *ext) | ||
113 | { | 121 | { |
114 | int nid; | 122 | int nid; |
115 | if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL; | 123 | |
124 | if ((nid = OBJ_obj2nid(ext->object)) == NID_undef) | ||
125 | return NULL; | ||
116 | return X509V3_EXT_get_nid(nid); | 126 | return X509V3_EXT_get_nid(nid); |
117 | } | 127 | } |
118 | 128 | ||
119 | 129 | int | |
120 | int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) | 130 | X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) |
121 | { | 131 | { |
122 | for(;extlist->ext_nid!=-1;extlist++) | 132 | for (; extlist->ext_nid!=-1; extlist++) |
123 | if(!X509V3_EXT_add(extlist)) return 0; | 133 | if (!X509V3_EXT_add(extlist)) |
134 | return 0; | ||
124 | return 1; | 135 | return 1; |
125 | } | 136 | } |
126 | 137 | ||
127 | int X509V3_EXT_add_alias(int nid_to, int nid_from) | 138 | int |
139 | X509V3_EXT_add_alias(int nid_to, int nid_from) | ||
128 | { | 140 | { |
129 | const X509V3_EXT_METHOD *ext; | 141 | const X509V3_EXT_METHOD *ext; |
130 | X509V3_EXT_METHOD *tmpext; | 142 | X509V3_EXT_METHOD *tmpext; |
131 | 143 | ||
132 | if(!(ext = X509V3_EXT_get_nid(nid_from))) { | 144 | if (!(ext = X509V3_EXT_get_nid(nid_from))) { |
133 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); | 145 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS, |
146 | X509V3_R_EXTENSION_NOT_FOUND); | ||
134 | return 0; | 147 | return 0; |
135 | } | 148 | } |
136 | if(!(tmpext = malloc(sizeof(X509V3_EXT_METHOD)))) { | 149 | if (!(tmpext = malloc(sizeof(X509V3_EXT_METHOD)))) { |
137 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,ERR_R_MALLOC_FAILURE); | 150 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS, ERR_R_MALLOC_FAILURE); |
138 | return 0; | 151 | return 0; |
139 | } | 152 | } |
140 | *tmpext = *ext; | 153 | *tmpext = *ext; |
@@ -143,36 +156,44 @@ int X509V3_EXT_add_alias(int nid_to, int nid_from) | |||
143 | return X509V3_EXT_add(tmpext); | 156 | return X509V3_EXT_add(tmpext); |
144 | } | 157 | } |
145 | 158 | ||
146 | void X509V3_EXT_cleanup(void) | 159 | void |
160 | X509V3_EXT_cleanup(void) | ||
147 | { | 161 | { |
148 | sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free); | 162 | sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free); |
149 | ext_list = NULL; | 163 | ext_list = NULL; |
150 | } | 164 | } |
151 | 165 | ||
152 | static void ext_list_free(X509V3_EXT_METHOD *ext) | 166 | static void |
167 | ext_list_free(X509V3_EXT_METHOD *ext) | ||
153 | { | 168 | { |
154 | if(ext->ext_flags & X509V3_EXT_DYNAMIC) free(ext); | 169 | if (ext->ext_flags & X509V3_EXT_DYNAMIC) |
170 | free(ext); | ||
155 | } | 171 | } |
156 | 172 | ||
157 | /* Legacy function: we don't need to add standard extensions | 173 | /* Legacy function: we don't need to add standard extensions |
158 | * any more because they are now kept in ext_dat.h. | 174 | * any more because they are now kept in ext_dat.h. |
159 | */ | 175 | */ |
160 | 176 | ||
161 | int X509V3_add_standard_extensions(void) | 177 | int |
178 | X509V3_add_standard_extensions(void) | ||
162 | { | 179 | { |
163 | return 1; | 180 | return 1; |
164 | } | 181 | } |
165 | 182 | ||
166 | /* Return an extension internal structure */ | 183 | /* Return an extension internal structure */ |
167 | 184 | ||
168 | void *X509V3_EXT_d2i(X509_EXTENSION *ext) | 185 | void * |
186 | X509V3_EXT_d2i(X509_EXTENSION *ext) | ||
169 | { | 187 | { |
170 | const X509V3_EXT_METHOD *method; | 188 | const X509V3_EXT_METHOD *method; |
171 | const unsigned char *p; | 189 | const unsigned char *p; |
172 | 190 | ||
173 | if(!(method = X509V3_EXT_get(ext))) return NULL; | 191 | if (!(method = X509V3_EXT_get(ext))) |
192 | return NULL; | ||
174 | p = ext->value->data; | 193 | p = ext->value->data; |
175 | if(method->it) return ASN1_item_d2i(NULL, &p, ext->value->length, ASN1_ITEM_ptr(method->it)); | 194 | if (method->it) |
195 | return ASN1_item_d2i(NULL, &p, ext->value->length, | ||
196 | ASN1_ITEM_ptr(method->it)); | ||
176 | return method->d2i(NULL, &p, ext->value->length); | 197 | return method->d2i(NULL, &p, ext->value->length); |
177 | } | 198 | } |
178 | 199 | ||
@@ -191,43 +212,53 @@ void *X509V3_EXT_d2i(X509_EXTENSION *ext) | |||
191 | * -2 extension occurs more than once. | 212 | * -2 extension occurs more than once. |
192 | */ | 213 | */ |
193 | 214 | ||
194 | void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | 215 | void * |
216 | X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | ||
195 | { | 217 | { |
196 | int lastpos, i; | 218 | int lastpos, i; |
197 | X509_EXTENSION *ex, *found_ex = NULL; | 219 | X509_EXTENSION *ex, *found_ex = NULL; |
198 | if(!x) { | 220 | |
199 | if(idx) *idx = -1; | 221 | if (!x) { |
200 | if(crit) *crit = -1; | 222 | if (idx) |
223 | *idx = -1; | ||
224 | if (crit) | ||
225 | *crit = -1; | ||
201 | return NULL; | 226 | return NULL; |
202 | } | 227 | } |
203 | if(idx) lastpos = *idx + 1; | 228 | if (idx) |
204 | else lastpos = 0; | 229 | lastpos = *idx + 1; |
205 | if(lastpos < 0) lastpos = 0; | 230 | else |
206 | for(i = lastpos; i < sk_X509_EXTENSION_num(x); i++) | 231 | lastpos = 0; |
207 | { | 232 | if (lastpos < 0) |
233 | lastpos = 0; | ||
234 | for (i = lastpos; i < sk_X509_EXTENSION_num(x); i++) { | ||
208 | ex = sk_X509_EXTENSION_value(x, i); | 235 | ex = sk_X509_EXTENSION_value(x, i); |
209 | if(OBJ_obj2nid(ex->object) == nid) { | 236 | if (OBJ_obj2nid(ex->object) == nid) { |
210 | if(idx) { | 237 | if (idx) { |
211 | *idx = i; | 238 | *idx = i; |
212 | found_ex = ex; | 239 | found_ex = ex; |
213 | break; | 240 | break; |
214 | } else if(found_ex) { | 241 | } else if (found_ex) { |
215 | /* Found more than one */ | 242 | /* Found more than one */ |
216 | if(crit) *crit = -2; | 243 | if (crit) |
244 | *crit = -2; | ||
217 | return NULL; | 245 | return NULL; |
218 | } | 246 | } |
219 | found_ex = ex; | 247 | found_ex = ex; |
220 | } | 248 | } |
221 | } | 249 | } |
222 | if(found_ex) { | 250 | if (found_ex) { |
223 | /* Found it */ | 251 | /* Found it */ |
224 | if(crit) *crit = X509_EXTENSION_get_critical(found_ex); | 252 | if (crit) |
253 | *crit = X509_EXTENSION_get_critical(found_ex); | ||
225 | return X509V3_EXT_d2i(found_ex); | 254 | return X509V3_EXT_d2i(found_ex); |
226 | } | 255 | } |
227 | 256 | ||
228 | /* Extension not found */ | 257 | /* Extension not found */ |
229 | if(idx) *idx = -1; | 258 | if (idx) |
230 | if(crit) *crit = -1; | 259 | *idx = -1; |
260 | if (crit) | ||
261 | *crit = -1; | ||
231 | return NULL; | 262 | return NULL; |
232 | } | 263 | } |
233 | 264 | ||
@@ -236,8 +267,9 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | |||
236 | * 'value' arguments (if relevant) are the extensions internal structure. | 267 | * 'value' arguments (if relevant) are the extensions internal structure. |
237 | */ | 268 | */ |
238 | 269 | ||
239 | int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | 270 | int |
240 | int crit, unsigned long flags) | 271 | X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, |
272 | int crit, unsigned long flags) | ||
241 | { | 273 | { |
242 | int extidx = -1; | 274 | int extidx = -1; |
243 | int errcode; | 275 | int errcode; |
@@ -247,30 +279,31 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | |||
247 | /* If appending we don't care if it exists, otherwise | 279 | /* If appending we don't care if it exists, otherwise |
248 | * look for existing extension. | 280 | * look for existing extension. |
249 | */ | 281 | */ |
250 | if(ext_op != X509V3_ADD_APPEND) | 282 | if (ext_op != X509V3_ADD_APPEND) |
251 | extidx = X509v3_get_ext_by_NID(*x, nid, -1); | 283 | extidx = X509v3_get_ext_by_NID(*x, nid, -1); |
252 | 284 | ||
253 | /* See if extension exists */ | 285 | /* See if extension exists */ |
254 | if(extidx >= 0) { | 286 | if (extidx >= 0) { |
255 | /* If keep existing, nothing to do */ | 287 | /* If keep existing, nothing to do */ |
256 | if(ext_op == X509V3_ADD_KEEP_EXISTING) | 288 | if (ext_op == X509V3_ADD_KEEP_EXISTING) |
257 | return 1; | 289 | return 1; |
258 | /* If default then its an error */ | 290 | /* If default then its an error */ |
259 | if(ext_op == X509V3_ADD_DEFAULT) { | 291 | if (ext_op == X509V3_ADD_DEFAULT) { |
260 | errcode = X509V3_R_EXTENSION_EXISTS; | 292 | errcode = X509V3_R_EXTENSION_EXISTS; |
261 | goto err; | 293 | goto err; |
262 | } | 294 | } |
263 | /* If delete, just delete it */ | 295 | /* If delete, just delete it */ |
264 | if(ext_op == X509V3_ADD_DELETE) { | 296 | if (ext_op == X509V3_ADD_DELETE) { |
265 | if(!sk_X509_EXTENSION_delete(*x, extidx)) return -1; | 297 | if (!sk_X509_EXTENSION_delete(*x, extidx)) |
298 | return -1; | ||
266 | return 1; | 299 | return 1; |
267 | } | 300 | } |
268 | } else { | 301 | } else { |
269 | /* If replace existing or delete, error since | 302 | /* If replace existing or delete, error since |
270 | * extension must exist | 303 | * extension must exist |
271 | */ | 304 | */ |
272 | if((ext_op == X509V3_ADD_REPLACE_EXISTING) || | 305 | if ((ext_op == X509V3_ADD_REPLACE_EXISTING) || |
273 | (ext_op == X509V3_ADD_DELETE)) { | 306 | (ext_op == X509V3_ADD_DELETE)) { |
274 | errcode = X509V3_R_EXTENSION_NOT_FOUND; | 307 | errcode = X509V3_R_EXTENSION_NOT_FOUND; |
275 | goto err; | 308 | goto err; |
276 | } | 309 | } |
@@ -282,26 +315,30 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | |||
282 | 315 | ||
283 | ext = X509V3_EXT_i2d(nid, crit, value); | 316 | ext = X509V3_EXT_i2d(nid, crit, value); |
284 | 317 | ||
285 | if(!ext) { | 318 | if (!ext) { |
286 | X509V3err(X509V3_F_X509V3_ADD1_I2D, X509V3_R_ERROR_CREATING_EXTENSION); | 319 | X509V3err(X509V3_F_X509V3_ADD1_I2D, |
320 | X509V3_R_ERROR_CREATING_EXTENSION); | ||
287 | return 0; | 321 | return 0; |
288 | } | 322 | } |
289 | 323 | ||
290 | /* If extension exists replace it.. */ | 324 | /* If extension exists replace it.. */ |
291 | if(extidx >= 0) { | 325 | if (extidx >= 0) { |
292 | extmp = sk_X509_EXTENSION_value(*x, extidx); | 326 | extmp = sk_X509_EXTENSION_value(*x, extidx); |
293 | X509_EXTENSION_free(extmp); | 327 | X509_EXTENSION_free(extmp); |
294 | if(!sk_X509_EXTENSION_set(*x, extidx, ext)) return -1; | 328 | if (!sk_X509_EXTENSION_set(*x, extidx, ext)) |
329 | return -1; | ||
295 | return 1; | 330 | return 1; |
296 | } | 331 | } |
297 | 332 | ||
298 | if(!*x && !(*x = sk_X509_EXTENSION_new_null())) return -1; | 333 | if (!*x && !(*x = sk_X509_EXTENSION_new_null())) |
299 | if(!sk_X509_EXTENSION_push(*x, ext)) return -1; | 334 | return -1; |
335 | if (!sk_X509_EXTENSION_push(*x, ext)) | ||
336 | return -1; | ||
300 | 337 | ||
301 | return 1; | 338 | return 1; |
302 | 339 | ||
303 | err: | 340 | err: |
304 | if(!(flags & X509V3_ADD_SILENT)) | 341 | if (!(flags & X509V3_ADD_SILENT)) |
305 | X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode); | 342 | X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode); |
306 | return 0; | 343 | return 0; |
307 | } | 344 | } |
diff --git a/src/lib/libcrypto/x509v3/v3conf.c b/src/lib/libcrypto/x509v3/v3conf.c index a9e6ca3542..cfa5fce75c 100644 --- a/src/lib/libcrypto/x509v3/v3conf.c +++ b/src/lib/libcrypto/x509v3/v3conf.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -66,7 +66,8 @@ | |||
66 | 66 | ||
67 | /* Test application to add extensions from a config file */ | 67 | /* Test application to add extensions from a config file */ |
68 | 68 | ||
69 | int main(int argc, char **argv) | 69 | int |
70 | main(int argc, char **argv) | ||
70 | { | 71 | { |
71 | LHASH *conf; | 72 | LHASH *conf; |
72 | X509 *cert; | 73 | X509 *cert; |
@@ -75,28 +76,30 @@ int main(int argc, char **argv) | |||
75 | int i; | 76 | int i; |
76 | int count; | 77 | int count; |
77 | X509_EXTENSION *ext; | 78 | X509_EXTENSION *ext; |
79 | |||
78 | X509V3_add_standard_extensions(); | 80 | X509V3_add_standard_extensions(); |
79 | ERR_load_crypto_strings(); | 81 | ERR_load_crypto_strings(); |
80 | if(!argv[1]) { | 82 | if (!argv[1]) { |
81 | fprintf(stderr, "Usage: v3conf cert.pem [file.cnf]\n"); | 83 | fprintf(stderr, "Usage: v3conf cert.pem [file.cnf]\n"); |
82 | exit(1); | 84 | exit(1); |
83 | } | 85 | } |
84 | conf_file = argv[2]; | 86 | conf_file = argv[2]; |
85 | if(!conf_file) conf_file = "test.cnf"; | 87 | if (!conf_file) |
88 | conf_file = "test.cnf"; | ||
86 | conf = CONF_load(NULL, "test.cnf", NULL); | 89 | conf = CONF_load(NULL, "test.cnf", NULL); |
87 | if(!conf) { | 90 | if (!conf) { |
88 | fprintf(stderr, "Error opening Config file %s\n", conf_file); | 91 | fprintf(stderr, "Error opening Config file %s\n", conf_file); |
89 | ERR_print_errors_fp(stderr); | 92 | ERR_print_errors_fp(stderr); |
90 | exit(1); | 93 | exit(1); |
91 | } | 94 | } |
92 | 95 | ||
93 | inf = fopen(argv[1], "r"); | 96 | inf = fopen(argv[1], "r"); |
94 | if(!inf) { | 97 | if (!inf) { |
95 | fprintf(stderr, "Can't open certificate file %s\n", argv[1]); | 98 | fprintf(stderr, "Can't open certificate file %s\n", argv[1]); |
96 | exit(1); | 99 | exit(1); |
97 | } | 100 | } |
98 | cert = PEM_read_X509(inf, NULL, NULL); | 101 | cert = PEM_read_X509(inf, NULL, NULL); |
99 | if(!cert) { | 102 | if (!cert) { |
100 | fprintf(stderr, "Error reading certificate file %s\n", argv[1]); | 103 | fprintf(stderr, "Error reading certificate file %s\n", argv[1]); |
101 | exit(1); | 104 | exit(1); |
102 | } | 105 | } |
@@ -105,7 +108,7 @@ int main(int argc, char **argv) | |||
105 | sk_pop_free(cert->cert_info->extensions, X509_EXTENSION_free); | 108 | sk_pop_free(cert->cert_info->extensions, X509_EXTENSION_free); |
106 | cert->cert_info->extensions = NULL; | 109 | cert->cert_info->extensions = NULL; |
107 | 110 | ||
108 | if(!X509V3_EXT_add_conf(conf, NULL, "test_section", cert)) { | 111 | if (!X509V3_EXT_add_conf(conf, NULL, "test_section", cert)) { |
109 | fprintf(stderr, "Error adding extensions\n"); | 112 | fprintf(stderr, "Error adding extensions\n"); |
110 | ERR_print_errors_fp(stderr); | 113 | ERR_print_errors_fp(stderr); |
111 | exit(1); | 114 | exit(1); |
@@ -113,15 +116,16 @@ int main(int argc, char **argv) | |||
113 | 116 | ||
114 | count = X509_get_ext_count(cert); | 117 | count = X509_get_ext_count(cert); |
115 | printf("%d extensions\n", count); | 118 | printf("%d extensions\n", count); |
116 | for(i = 0; i < count; i++) { | 119 | for (i = 0; i < count; i++) { |
117 | ext = X509_get_ext(cert, i); | 120 | ext = X509_get_ext(cert, i); |
118 | printf("%s", OBJ_nid2ln(OBJ_obj2nid(ext->object))); | 121 | printf("%s", OBJ_nid2ln(OBJ_obj2nid(ext->object))); |
119 | if(ext->critical) printf(",critical:\n"); | 122 | if (ext->critical) |
120 | else printf(":\n"); | 123 | printf(",critical:\n"); |
124 | else | ||
125 | printf(":\n"); | ||
121 | X509V3_EXT_print_fp(stdout, ext, 0, 0); | 126 | X509V3_EXT_print_fp(stdout, ext, 0, 0); |
122 | printf("\n"); | 127 | printf("\n"); |
123 | 128 | ||
124 | } | 129 | } |
125 | return 0; | 130 | return 0; |
126 | } | 131 | } |
127 | |||
diff --git a/src/lib/libcrypto/x509v3/v3err.c b/src/lib/libcrypto/x509v3/v3err.c index f9f6f1f91f..c0b8b0e262 100644 --- a/src/lib/libcrypto/x509v3/v3err.c +++ b/src/lib/libcrypto/x509v3/v3err.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * are met: | 7 | * are met: |
8 | * | 8 | * |
9 | * 1. Redistributions of source code must retain the above copyright | 9 | * 1. Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. | 10 | * notice, this list of conditions and the following disclaimer. |
11 | * | 11 | * |
12 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in | 13 | * notice, this list of conditions and the following disclaimer in |
@@ -68,159 +68,156 @@ | |||
68 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509V3,func,0) | 68 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509V3,func,0) |
69 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509V3,0,reason) | 69 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509V3,0,reason) |
70 | 70 | ||
71 | static ERR_STRING_DATA X509V3_str_functs[]= | 71 | static ERR_STRING_DATA X509V3_str_functs[] = { |
72 | { | 72 | {ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"}, |
73 | {ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"}, | 73 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"}, |
74 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"}, | 74 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"}, |
75 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"}, | 75 | {ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, |
76 | {ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, | 76 | {ERR_FUNC(X509V3_F_COPY_ISSUER), "COPY_ISSUER"}, |
77 | {ERR_FUNC(X509V3_F_COPY_ISSUER), "COPY_ISSUER"}, | 77 | {ERR_FUNC(X509V3_F_DO_DIRNAME), "DO_DIRNAME"}, |
78 | {ERR_FUNC(X509V3_F_DO_DIRNAME), "DO_DIRNAME"}, | 78 | {ERR_FUNC(X509V3_F_DO_EXT_CONF), "DO_EXT_CONF"}, |
79 | {ERR_FUNC(X509V3_F_DO_EXT_CONF), "DO_EXT_CONF"}, | 79 | {ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, |
80 | {ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, | 80 | {ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"}, |
81 | {ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"}, | 81 | {ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"}, |
82 | {ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"}, | 82 | {ERR_FUNC(X509V3_F_GNAMES_FROM_SECTNAME), "GNAMES_FROM_SECTNAME"}, |
83 | {ERR_FUNC(X509V3_F_GNAMES_FROM_SECTNAME), "GNAMES_FROM_SECTNAME"}, | 83 | {ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, |
84 | {ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, | 84 | {ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, |
85 | {ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, | 85 | {ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, |
86 | {ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, | 86 | {ERR_FUNC(X509V3_F_I2S_ASN1_INTEGER), "i2s_ASN1_INTEGER"}, |
87 | {ERR_FUNC(X509V3_F_I2S_ASN1_INTEGER), "i2s_ASN1_INTEGER"}, | 87 | {ERR_FUNC(X509V3_F_I2V_AUTHORITY_INFO_ACCESS), "I2V_AUTHORITY_INFO_ACCESS"}, |
88 | {ERR_FUNC(X509V3_F_I2V_AUTHORITY_INFO_ACCESS), "I2V_AUTHORITY_INFO_ACCESS"}, | 88 | {ERR_FUNC(X509V3_F_NOTICE_SECTION), "NOTICE_SECTION"}, |
89 | {ERR_FUNC(X509V3_F_NOTICE_SECTION), "NOTICE_SECTION"}, | 89 | {ERR_FUNC(X509V3_F_NREF_NOS), "NREF_NOS"}, |
90 | {ERR_FUNC(X509V3_F_NREF_NOS), "NREF_NOS"}, | 90 | {ERR_FUNC(X509V3_F_POLICY_SECTION), "POLICY_SECTION"}, |
91 | {ERR_FUNC(X509V3_F_POLICY_SECTION), "POLICY_SECTION"}, | 91 | {ERR_FUNC(X509V3_F_PROCESS_PCI_VALUE), "PROCESS_PCI_VALUE"}, |
92 | {ERR_FUNC(X509V3_F_PROCESS_PCI_VALUE), "PROCESS_PCI_VALUE"}, | 92 | {ERR_FUNC(X509V3_F_R2I_CERTPOL), "R2I_CERTPOL"}, |
93 | {ERR_FUNC(X509V3_F_R2I_CERTPOL), "R2I_CERTPOL"}, | 93 | {ERR_FUNC(X509V3_F_R2I_PCI), "R2I_PCI"}, |
94 | {ERR_FUNC(X509V3_F_R2I_PCI), "R2I_PCI"}, | 94 | {ERR_FUNC(X509V3_F_S2I_ASN1_IA5STRING), "S2I_ASN1_IA5STRING"}, |
95 | {ERR_FUNC(X509V3_F_S2I_ASN1_IA5STRING), "S2I_ASN1_IA5STRING"}, | 95 | {ERR_FUNC(X509V3_F_S2I_ASN1_INTEGER), "s2i_ASN1_INTEGER"}, |
96 | {ERR_FUNC(X509V3_F_S2I_ASN1_INTEGER), "s2i_ASN1_INTEGER"}, | 96 | {ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, |
97 | {ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, | 97 | {ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, |
98 | {ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, | 98 | {ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"}, |
99 | {ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"}, | 99 | {ERR_FUNC(X509V3_F_SET_DIST_POINT_NAME), "SET_DIST_POINT_NAME"}, |
100 | {ERR_FUNC(X509V3_F_SET_DIST_POINT_NAME), "SET_DIST_POINT_NAME"}, | 100 | {ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, |
101 | {ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, | 101 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"}, |
102 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"}, | 102 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, |
103 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, | 103 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ULONG), "SXNET_add_id_ulong"}, |
104 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ULONG), "SXNET_add_id_ulong"}, | 104 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ASC), "SXNET_get_id_asc"}, |
105 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ASC), "SXNET_get_id_asc"}, | 105 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ULONG), "SXNET_get_id_ulong"}, |
106 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ULONG), "SXNET_get_id_ulong"}, | 106 | {ERR_FUNC(X509V3_F_V2I_ASIDENTIFIERS), "V2I_ASIDENTIFIERS"}, |
107 | {ERR_FUNC(X509V3_F_V2I_ASIDENTIFIERS), "V2I_ASIDENTIFIERS"}, | 107 | {ERR_FUNC(X509V3_F_V2I_ASN1_BIT_STRING), "v2i_ASN1_BIT_STRING"}, |
108 | {ERR_FUNC(X509V3_F_V2I_ASN1_BIT_STRING), "v2i_ASN1_BIT_STRING"}, | 108 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_INFO_ACCESS), "V2I_AUTHORITY_INFO_ACCESS"}, |
109 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_INFO_ACCESS), "V2I_AUTHORITY_INFO_ACCESS"}, | 109 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_KEYID), "V2I_AUTHORITY_KEYID"}, |
110 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_KEYID), "V2I_AUTHORITY_KEYID"}, | 110 | {ERR_FUNC(X509V3_F_V2I_BASIC_CONSTRAINTS), "V2I_BASIC_CONSTRAINTS"}, |
111 | {ERR_FUNC(X509V3_F_V2I_BASIC_CONSTRAINTS), "V2I_BASIC_CONSTRAINTS"}, | 111 | {ERR_FUNC(X509V3_F_V2I_CRLD), "V2I_CRLD"}, |
112 | {ERR_FUNC(X509V3_F_V2I_CRLD), "V2I_CRLD"}, | 112 | {ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"}, |
113 | {ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"}, | 113 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, |
114 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, | 114 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"}, |
115 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"}, | 115 | {ERR_FUNC(X509V3_F_V2I_IDP), "V2I_IDP"}, |
116 | {ERR_FUNC(X509V3_F_V2I_IDP), "V2I_IDP"}, | 116 | {ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"}, |
117 | {ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"}, | 117 | {ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"}, |
118 | {ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"}, | 118 | {ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"}, |
119 | {ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"}, | 119 | {ERR_FUNC(X509V3_F_V2I_POLICY_CONSTRAINTS), "V2I_POLICY_CONSTRAINTS"}, |
120 | {ERR_FUNC(X509V3_F_V2I_POLICY_CONSTRAINTS), "V2I_POLICY_CONSTRAINTS"}, | 120 | {ERR_FUNC(X509V3_F_V2I_POLICY_MAPPINGS), "V2I_POLICY_MAPPINGS"}, |
121 | {ERR_FUNC(X509V3_F_V2I_POLICY_MAPPINGS), "V2I_POLICY_MAPPINGS"}, | 121 | {ERR_FUNC(X509V3_F_V2I_SUBJECT_ALT), "V2I_SUBJECT_ALT"}, |
122 | {ERR_FUNC(X509V3_F_V2I_SUBJECT_ALT), "V2I_SUBJECT_ALT"}, | 122 | {ERR_FUNC(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL), "V3_ADDR_VALIDATE_PATH_INTERNAL"}, |
123 | {ERR_FUNC(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL), "V3_ADDR_VALIDATE_PATH_INTERNAL"}, | 123 | {ERR_FUNC(X509V3_F_V3_GENERIC_EXTENSION), "V3_GENERIC_EXTENSION"}, |
124 | {ERR_FUNC(X509V3_F_V3_GENERIC_EXTENSION), "V3_GENERIC_EXTENSION"}, | 124 | {ERR_FUNC(X509V3_F_X509V3_ADD1_I2D), "X509V3_add1_i2d"}, |
125 | {ERR_FUNC(X509V3_F_X509V3_ADD1_I2D), "X509V3_add1_i2d"}, | 125 | {ERR_FUNC(X509V3_F_X509V3_ADD_VALUE), "X509V3_add_value"}, |
126 | {ERR_FUNC(X509V3_F_X509V3_ADD_VALUE), "X509V3_add_value"}, | 126 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"}, |
127 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"}, | 127 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"}, |
128 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"}, | 128 | {ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"}, |
129 | {ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"}, | 129 | {ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"}, |
130 | {ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"}, | 130 | {ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"}, |
131 | {ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"}, | 131 | {ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"}, |
132 | {ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"}, | 132 | {ERR_FUNC(X509V3_F_X509V3_GET_STRING), "X509V3_get_string"}, |
133 | {ERR_FUNC(X509V3_F_X509V3_GET_STRING), "X509V3_get_string"}, | 133 | {ERR_FUNC(X509V3_F_X509V3_GET_VALUE_BOOL), "X509V3_get_value_bool"}, |
134 | {ERR_FUNC(X509V3_F_X509V3_GET_VALUE_BOOL), "X509V3_get_value_bool"}, | 134 | {ERR_FUNC(X509V3_F_X509V3_PARSE_LIST), "X509V3_parse_list"}, |
135 | {ERR_FUNC(X509V3_F_X509V3_PARSE_LIST), "X509V3_parse_list"}, | 135 | {ERR_FUNC(X509V3_F_X509_PURPOSE_ADD), "X509_PURPOSE_add"}, |
136 | {ERR_FUNC(X509V3_F_X509_PURPOSE_ADD), "X509_PURPOSE_add"}, | 136 | {ERR_FUNC(X509V3_F_X509_PURPOSE_SET), "X509_PURPOSE_set"}, |
137 | {ERR_FUNC(X509V3_F_X509_PURPOSE_SET), "X509_PURPOSE_set"}, | 137 | {0, NULL} |
138 | {0,NULL} | 138 | }; |
139 | }; | ||
140 | 139 | ||
141 | static ERR_STRING_DATA X509V3_str_reasons[]= | 140 | static ERR_STRING_DATA X509V3_str_reasons[] = { |
142 | { | 141 | {ERR_REASON(X509V3_R_BAD_IP_ADDRESS) , "bad ip address"}, |
143 | {ERR_REASON(X509V3_R_BAD_IP_ADDRESS) ,"bad ip address"}, | 142 | {ERR_REASON(X509V3_R_BAD_OBJECT) , "bad object"}, |
144 | {ERR_REASON(X509V3_R_BAD_OBJECT) ,"bad object"}, | 143 | {ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) , "bn dec2bn error"}, |
145 | {ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"}, | 144 | {ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR), "bn to asn1 integer error"}, |
146 | {ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"}, | 145 | {ERR_REASON(X509V3_R_DIRNAME_ERROR) , "dirname error"}, |
147 | {ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"}, | 146 | {ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET), "distpoint already set"}, |
148 | {ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET),"distpoint already set"}, | 147 | {ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) , "duplicate zone id"}, |
149 | {ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"}, | 148 | {ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE), "error converting zone"}, |
150 | {ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE),"error converting zone"}, | 149 | {ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION), "error creating extension"}, |
151 | {ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION),"error creating extension"}, | 150 | {ERR_REASON(X509V3_R_ERROR_IN_EXTENSION) , "error in extension"}, |
152 | {ERR_REASON(X509V3_R_ERROR_IN_EXTENSION) ,"error in extension"}, | 151 | {ERR_REASON(X509V3_R_EXPECTED_A_SECTION_NAME), "expected a section name"}, |
153 | {ERR_REASON(X509V3_R_EXPECTED_A_SECTION_NAME),"expected a section name"}, | 152 | {ERR_REASON(X509V3_R_EXTENSION_EXISTS) , "extension exists"}, |
154 | {ERR_REASON(X509V3_R_EXTENSION_EXISTS) ,"extension exists"}, | 153 | {ERR_REASON(X509V3_R_EXTENSION_NAME_ERROR), "extension name error"}, |
155 | {ERR_REASON(X509V3_R_EXTENSION_NAME_ERROR),"extension name error"}, | 154 | {ERR_REASON(X509V3_R_EXTENSION_NOT_FOUND), "extension not found"}, |
156 | {ERR_REASON(X509V3_R_EXTENSION_NOT_FOUND),"extension not found"}, | 155 | {ERR_REASON(X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED), "extension setting not supported"}, |
157 | {ERR_REASON(X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED),"extension setting not supported"}, | 156 | {ERR_REASON(X509V3_R_EXTENSION_VALUE_ERROR), "extension value error"}, |
158 | {ERR_REASON(X509V3_R_EXTENSION_VALUE_ERROR),"extension value error"}, | 157 | {ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION), "illegal empty extension"}, |
159 | {ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"}, | 158 | {ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) , "illegal hex digit"}, |
160 | {ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"}, | 159 | {ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG), "incorrect policy syntax tag"}, |
161 | {ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"}, | 160 | {ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS), "invalid multiple rdns"}, |
162 | {ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS),"invalid multiple rdns"}, | 161 | {ERR_REASON(X509V3_R_INVALID_ASNUMBER) , "invalid asnumber"}, |
163 | {ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"}, | 162 | {ERR_REASON(X509V3_R_INVALID_ASRANGE) , "invalid asrange"}, |
164 | {ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"}, | 163 | {ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING), "invalid boolean string"}, |
165 | {ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"}, | 164 | {ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING), "invalid extension string"}, |
166 | {ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING),"invalid extension string"}, | 165 | {ERR_REASON(X509V3_R_INVALID_INHERITANCE), "invalid inheritance"}, |
167 | {ERR_REASON(X509V3_R_INVALID_INHERITANCE),"invalid inheritance"}, | 166 | {ERR_REASON(X509V3_R_INVALID_IPADDRESS) , "invalid ipaddress"}, |
168 | {ERR_REASON(X509V3_R_INVALID_IPADDRESS) ,"invalid ipaddress"}, | 167 | {ERR_REASON(X509V3_R_INVALID_NAME) , "invalid name"}, |
169 | {ERR_REASON(X509V3_R_INVALID_NAME) ,"invalid name"}, | 168 | {ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT), "invalid null argument"}, |
170 | {ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT),"invalid null argument"}, | 169 | {ERR_REASON(X509V3_R_INVALID_NULL_NAME) , "invalid null name"}, |
171 | {ERR_REASON(X509V3_R_INVALID_NULL_NAME) ,"invalid null name"}, | 170 | {ERR_REASON(X509V3_R_INVALID_NULL_VALUE) , "invalid null value"}, |
172 | {ERR_REASON(X509V3_R_INVALID_NULL_VALUE) ,"invalid null value"}, | 171 | {ERR_REASON(X509V3_R_INVALID_NUMBER) , "invalid number"}, |
173 | {ERR_REASON(X509V3_R_INVALID_NUMBER) ,"invalid number"}, | 172 | {ERR_REASON(X509V3_R_INVALID_NUMBERS) , "invalid numbers"}, |
174 | {ERR_REASON(X509V3_R_INVALID_NUMBERS) ,"invalid numbers"}, | 173 | {ERR_REASON(X509V3_R_INVALID_OBJECT_IDENTIFIER), "invalid object identifier"}, |
175 | {ERR_REASON(X509V3_R_INVALID_OBJECT_IDENTIFIER),"invalid object identifier"}, | 174 | {ERR_REASON(X509V3_R_INVALID_OPTION) , "invalid option"}, |
176 | {ERR_REASON(X509V3_R_INVALID_OPTION) ,"invalid option"}, | 175 | {ERR_REASON(X509V3_R_INVALID_POLICY_IDENTIFIER), "invalid policy identifier"}, |
177 | {ERR_REASON(X509V3_R_INVALID_POLICY_IDENTIFIER),"invalid policy identifier"}, | 176 | {ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_SETTING), "invalid proxy policy setting"}, |
178 | {ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_SETTING),"invalid proxy policy setting"}, | 177 | {ERR_REASON(X509V3_R_INVALID_PURPOSE) , "invalid purpose"}, |
179 | {ERR_REASON(X509V3_R_INVALID_PURPOSE) ,"invalid purpose"}, | 178 | {ERR_REASON(X509V3_R_INVALID_SAFI) , "invalid safi"}, |
180 | {ERR_REASON(X509V3_R_INVALID_SAFI) ,"invalid safi"}, | 179 | {ERR_REASON(X509V3_R_INVALID_SECTION) , "invalid section"}, |
181 | {ERR_REASON(X509V3_R_INVALID_SECTION) ,"invalid section"}, | 180 | {ERR_REASON(X509V3_R_INVALID_SYNTAX) , "invalid syntax"}, |
182 | {ERR_REASON(X509V3_R_INVALID_SYNTAX) ,"invalid syntax"}, | 181 | {ERR_REASON(X509V3_R_ISSUER_DECODE_ERROR), "issuer decode error"}, |
183 | {ERR_REASON(X509V3_R_ISSUER_DECODE_ERROR),"issuer decode error"}, | 182 | {ERR_REASON(X509V3_R_MISSING_VALUE) , "missing value"}, |
184 | {ERR_REASON(X509V3_R_MISSING_VALUE) ,"missing value"}, | 183 | {ERR_REASON(X509V3_R_NEED_ORGANIZATION_AND_NUMBERS), "need organization and numbers"}, |
185 | {ERR_REASON(X509V3_R_NEED_ORGANIZATION_AND_NUMBERS),"need organization and numbers"}, | 184 | {ERR_REASON(X509V3_R_NO_CONFIG_DATABASE) , "no config database"}, |
186 | {ERR_REASON(X509V3_R_NO_CONFIG_DATABASE) ,"no config database"}, | 185 | {ERR_REASON(X509V3_R_NO_ISSUER_CERTIFICATE), "no issuer certificate"}, |
187 | {ERR_REASON(X509V3_R_NO_ISSUER_CERTIFICATE),"no issuer certificate"}, | 186 | {ERR_REASON(X509V3_R_NO_ISSUER_DETAILS) , "no issuer details"}, |
188 | {ERR_REASON(X509V3_R_NO_ISSUER_DETAILS) ,"no issuer details"}, | 187 | {ERR_REASON(X509V3_R_NO_POLICY_IDENTIFIER), "no policy identifier"}, |
189 | {ERR_REASON(X509V3_R_NO_POLICY_IDENTIFIER),"no policy identifier"}, | 188 | {ERR_REASON(X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED), "no proxy cert policy language defined"}, |
190 | {ERR_REASON(X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED),"no proxy cert policy language defined"}, | 189 | {ERR_REASON(X509V3_R_NO_PUBLIC_KEY) , "no public key"}, |
191 | {ERR_REASON(X509V3_R_NO_PUBLIC_KEY) ,"no public key"}, | 190 | {ERR_REASON(X509V3_R_NO_SUBJECT_DETAILS) , "no subject details"}, |
192 | {ERR_REASON(X509V3_R_NO_SUBJECT_DETAILS) ,"no subject details"}, | 191 | {ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS), "odd number of digits"}, |
193 | {ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS),"odd number of digits"}, | 192 | {ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED), "operation not defined"}, |
194 | {ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED),"operation not defined"}, | 193 | {ERR_REASON(X509V3_R_OTHERNAME_ERROR) , "othername error"}, |
195 | {ERR_REASON(X509V3_R_OTHERNAME_ERROR) ,"othername error"}, | 194 | {ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED), "policy language already defined"}, |
196 | {ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED),"policy language already defined"}, | 195 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) , "policy path length"}, |
197 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) ,"policy path length"}, | 196 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED), "policy path length already defined"}, |
198 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED),"policy path length already defined"}, | 197 | {ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED), "policy syntax not currently supported"}, |
199 | {ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED),"policy syntax not currently supported"}, | 198 | {ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY), "policy when proxy language requires no policy"}, |
200 | {ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY),"policy when proxy language requires no policy"}, | 199 | {ERR_REASON(X509V3_R_SECTION_NOT_FOUND) , "section not found"}, |
201 | {ERR_REASON(X509V3_R_SECTION_NOT_FOUND) ,"section not found"}, | 200 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS), "unable to get issuer details"}, |
202 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS),"unable to get issuer details"}, | 201 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_KEYID), "unable to get issuer keyid"}, |
203 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_KEYID),"unable to get issuer keyid"}, | 202 | {ERR_REASON(X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT), "unknown bit string argument"}, |
204 | {ERR_REASON(X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT),"unknown bit string argument"}, | 203 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION) , "unknown extension"}, |
205 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION) ,"unknown extension"}, | 204 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME), "unknown extension name"}, |
206 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME),"unknown extension name"}, | 205 | {ERR_REASON(X509V3_R_UNKNOWN_OPTION) , "unknown option"}, |
207 | {ERR_REASON(X509V3_R_UNKNOWN_OPTION) ,"unknown option"}, | 206 | {ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) , "unsupported option"}, |
208 | {ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) ,"unsupported option"}, | 207 | {ERR_REASON(X509V3_R_UNSUPPORTED_TYPE) , "unsupported type"}, |
209 | {ERR_REASON(X509V3_R_UNSUPPORTED_TYPE) ,"unsupported type"}, | 208 | {ERR_REASON(X509V3_R_USER_TOO_LONG) , "user too long"}, |
210 | {ERR_REASON(X509V3_R_USER_TOO_LONG) ,"user too long"}, | 209 | {0, NULL} |
211 | {0,NULL} | 210 | }; |
212 | }; | ||
213 | 211 | ||
214 | #endif | 212 | #endif |
215 | 213 | ||
216 | void ERR_load_X509V3_strings(void) | 214 | void |
217 | { | 215 | ERR_load_X509V3_strings(void) |
216 | { | ||
218 | #ifndef OPENSSL_NO_ERR | 217 | #ifndef OPENSSL_NO_ERR |
219 | 218 | if (ERR_func_error_string(X509V3_str_functs[0].error) == NULL) { | |
220 | if (ERR_func_error_string(X509V3_str_functs[0].error) == NULL) | 219 | ERR_load_strings(0, X509V3_str_functs); |
221 | { | 220 | ERR_load_strings(0, X509V3_str_reasons); |
222 | ERR_load_strings(0,X509V3_str_functs); | ||
223 | ERR_load_strings(0,X509V3_str_reasons); | ||
224 | } | ||
225 | #endif | ||
226 | } | 221 | } |
222 | #endif | ||
223 | } | ||
diff --git a/src/lib/libcrypto/x509v3/v3prin.c b/src/lib/libcrypto/x509v3/v3prin.c index d5ff268296..da701de132 100644 --- a/src/lib/libcrypto/x509v3/v3prin.c +++ b/src/lib/libcrypto/x509v3/v3prin.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -56,31 +56,31 @@ | |||
56 | * | 56 | * |
57 | */ | 57 | */ |
58 | 58 | ||
59 | |||
60 | |||
61 | #include <stdio.h> | 59 | #include <stdio.h> |
62 | #include <openssl/asn1.h> | 60 | #include <openssl/asn1.h> |
63 | #include <openssl/conf.h> | 61 | #include <openssl/conf.h> |
64 | #include <openssl/x509.h> | 62 | #include <openssl/x509.h> |
65 | #include <openssl/x509v3.h> | 63 | #include <openssl/x509v3.h> |
66 | 64 | ||
67 | int main(int argc, char **argv) | 65 | int |
66 | main(int argc, char **argv) | ||
68 | { | 67 | { |
69 | X509 *cert; | 68 | X509 *cert; |
70 | FILE *inf; | 69 | FILE *inf; |
71 | int i, count; | 70 | int i, count; |
72 | X509_EXTENSION *ext; | 71 | X509_EXTENSION *ext; |
72 | |||
73 | X509V3_add_standard_extensions(); | 73 | X509V3_add_standard_extensions(); |
74 | ERR_load_crypto_strings(); | 74 | ERR_load_crypto_strings(); |
75 | if(!argv[1]) { | 75 | if (!argv[1]) { |
76 | fprintf(stderr, "Usage v3prin cert.pem\n"); | 76 | fprintf(stderr, "Usage v3prin cert.pem\n"); |
77 | exit(1); | 77 | exit(1); |
78 | } | 78 | } |
79 | if(!(inf = fopen(argv[1], "r"))) { | 79 | if (!(inf = fopen(argv[1], "r"))) { |
80 | fprintf(stderr, "Can't open %s\n", argv[1]); | 80 | fprintf(stderr, "Can't open %s\n", argv[1]); |
81 | exit(1); | 81 | exit(1); |
82 | } | 82 | } |
83 | if(!(cert = PEM_read_X509(inf, NULL, NULL))) { | 83 | if (!(cert = PEM_read_X509(inf, NULL, NULL))) { |
84 | fprintf(stderr, "Can't read certificate %s\n", argv[1]); | 84 | fprintf(stderr, "Can't read certificate %s\n", argv[1]); |
85 | ERR_print_errors_fp(stderr); | 85 | ERR_print_errors_fp(stderr); |
86 | exit(1); | 86 | exit(1); |
@@ -88,12 +88,13 @@ int main(int argc, char **argv) | |||
88 | fclose(inf); | 88 | fclose(inf); |
89 | count = X509_get_ext_count(cert); | 89 | count = X509_get_ext_count(cert); |
90 | printf("%d extensions\n", count); | 90 | printf("%d extensions\n", count); |
91 | for(i = 0; i < count; i++) { | 91 | for (i = 0; i < count; i++) { |
92 | ext = X509_get_ext(cert, i); | 92 | ext = X509_get_ext(cert, i); |
93 | printf("%s\n", OBJ_nid2ln(OBJ_obj2nid(ext->object))); | 93 | printf("%s\n", OBJ_nid2ln(OBJ_obj2nid(ext->object))); |
94 | if(!X509V3_EXT_print_fp(stdout, ext, 0, 0)) ERR_print_errors_fp(stderr); | 94 | if (!X509V3_EXT_print_fp(stdout, ext, 0, 0)) |
95 | ERR_print_errors_fp(stderr); | ||
95 | printf("\n"); | 96 | printf("\n"); |
96 | 97 | ||
97 | } | 98 | } |
98 | return 0; | 99 | return 0; |
99 | } | 100 | } |
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_ia5.c b/src/lib/libssl/src/crypto/x509v3/v3_ia5.c index 98789b36e9..090fe49b20 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_ia5.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_ia5.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -64,26 +64,29 @@ | |||
64 | #include <openssl/x509v3.h> | 64 | #include <openssl/x509v3.h> |
65 | 65 | ||
66 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); | 66 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); |
67 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); | 67 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, |
68 | const X509V3_EXT_METHOD v3_ns_ia5_list[] = { | 68 | X509V3_CTX *ctx, char *str); |
69 | EXT_IA5STRING(NID_netscape_base_url), | ||
70 | EXT_IA5STRING(NID_netscape_revocation_url), | ||
71 | EXT_IA5STRING(NID_netscape_ca_revocation_url), | ||
72 | EXT_IA5STRING(NID_netscape_renewal_url), | ||
73 | EXT_IA5STRING(NID_netscape_ca_policy_url), | ||
74 | EXT_IA5STRING(NID_netscape_ssl_server_name), | ||
75 | EXT_IA5STRING(NID_netscape_comment), | ||
76 | EXT_END | ||
77 | }; | ||
78 | 69 | ||
70 | const X509V3_EXT_METHOD v3_ns_ia5_list[] = { | ||
71 | EXT_IA5STRING(NID_netscape_base_url), | ||
72 | EXT_IA5STRING(NID_netscape_revocation_url), | ||
73 | EXT_IA5STRING(NID_netscape_ca_revocation_url), | ||
74 | EXT_IA5STRING(NID_netscape_renewal_url), | ||
75 | EXT_IA5STRING(NID_netscape_ca_policy_url), | ||
76 | EXT_IA5STRING(NID_netscape_ssl_server_name), | ||
77 | EXT_IA5STRING(NID_netscape_comment), | ||
78 | EXT_END | ||
79 | }; | ||
79 | 80 | ||
80 | static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | 81 | static char * |
81 | ASN1_IA5STRING *ia5) | 82 | i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5) |
82 | { | 83 | { |
83 | char *tmp; | 84 | char *tmp; |
84 | if(!ia5 || !ia5->length) return NULL; | 85 | |
85 | if(!(tmp = malloc(ia5->length + 1))) { | 86 | if (!ia5 || !ia5->length) |
86 | X509V3err(X509V3_F_I2S_ASN1_IA5STRING,ERR_R_MALLOC_FAILURE); | 87 | return NULL; |
88 | if (!(tmp = malloc(ia5->length + 1))) { | ||
89 | X509V3err(X509V3_F_I2S_ASN1_IA5STRING, ERR_R_MALLOC_FAILURE); | ||
87 | return NULL; | 90 | return NULL; |
88 | } | 91 | } |
89 | memcpy(tmp, ia5->data, ia5->length); | 92 | memcpy(tmp, ia5->data, ia5->length); |
@@ -91,23 +94,25 @@ static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | |||
91 | return tmp; | 94 | return tmp; |
92 | } | 95 | } |
93 | 96 | ||
94 | static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, | 97 | static ASN1_IA5STRING * |
95 | X509V3_CTX *ctx, char *str) | 98 | s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str) |
96 | { | 99 | { |
97 | ASN1_IA5STRING *ia5; | 100 | ASN1_IA5STRING *ia5; |
98 | if(!str) { | 101 | if (!str) { |
99 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING,X509V3_R_INVALID_NULL_ARGUMENT); | 102 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING, |
103 | X509V3_R_INVALID_NULL_ARGUMENT); | ||
100 | return NULL; | 104 | return NULL; |
101 | } | 105 | } |
102 | if(!(ia5 = M_ASN1_IA5STRING_new())) goto err; | 106 | if (!(ia5 = M_ASN1_IA5STRING_new())) |
103 | if(!ASN1_STRING_set((ASN1_STRING *)ia5, (unsigned char*)str, | 107 | goto err; |
104 | strlen(str))) { | 108 | if (!ASN1_STRING_set((ASN1_STRING *)ia5, (unsigned char*)str, |
109 | strlen(str))) { | ||
105 | M_ASN1_IA5STRING_free(ia5); | 110 | M_ASN1_IA5STRING_free(ia5); |
106 | goto err; | 111 | goto err; |
107 | } | 112 | } |
108 | return ia5; | 113 | return ia5; |
109 | err: | 114 | |
110 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING,ERR_R_MALLOC_FAILURE); | 115 | err: |
116 | X509V3err(X509V3_F_S2I_ASN1_IA5STRING, ERR_R_MALLOC_FAILURE); | ||
111 | return NULL; | 117 | return NULL; |
112 | } | 118 | } |
113 | |||
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_info.c b/src/lib/libssl/src/crypto/x509v3/v3_info.c index c9d6c97b51..7853e3e23b 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_info.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_info.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -63,29 +63,33 @@ | |||
63 | #include <openssl/asn1t.h> | 63 | #include <openssl/asn1t.h> |
64 | #include <openssl/x509v3.h> | 64 | #include <openssl/x509v3.h> |
65 | 65 | ||
66 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 66 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS( |
67 | AUTHORITY_INFO_ACCESS *ainfo, | 67 | X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo, |
68 | STACK_OF(CONF_VALUE) *ret); | 68 | STACK_OF(CONF_VALUE) *ret); |
69 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 69 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS( |
70 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 70 | X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
71 | 71 | ||
72 | const X509V3_EXT_METHOD v3_info = | 72 | const X509V3_EXT_METHOD v3_info = { |
73 | { NID_info_access, X509V3_EXT_MULTILINE, ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), | 73 | NID_info_access, X509V3_EXT_MULTILINE, |
74 | 0,0,0,0, | 74 | ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), |
75 | 0,0, | 75 | 0, 0, 0, 0, |
76 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, | 76 | 0, 0, |
77 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | 77 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, |
78 | 0,0, | 78 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, |
79 | NULL}; | 79 | 0, 0, |
80 | 80 | NULL | |
81 | const X509V3_EXT_METHOD v3_sinfo = | 81 | }; |
82 | { NID_sinfo_access, X509V3_EXT_MULTILINE, ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), | 82 | |
83 | 0,0,0,0, | 83 | const X509V3_EXT_METHOD v3_sinfo = { |
84 | 0,0, | 84 | NID_sinfo_access, X509V3_EXT_MULTILINE, |
85 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, | 85 | ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS), |
86 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | 86 | 0, 0, 0, 0, |
87 | 0,0, | 87 | 0, 0, |
88 | NULL}; | 88 | (X509V3_EXT_I2V)i2v_AUTHORITY_INFO_ACCESS, |
89 | (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS, | ||
90 | 0, 0, | ||
91 | NULL | ||
92 | }; | ||
89 | 93 | ||
90 | ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { | 94 | ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { |
91 | ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), | 95 | ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), |
@@ -94,31 +98,34 @@ ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { | |||
94 | 98 | ||
95 | IMPLEMENT_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) | 99 | IMPLEMENT_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) |
96 | 100 | ||
97 | ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = | 101 | ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = |
98 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, ACCESS_DESCRIPTION) | 102 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, |
103 | ACCESS_DESCRIPTION) | ||
99 | ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) | 104 | ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) |
100 | 105 | ||
101 | IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) | 106 | IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) |
102 | 107 | ||
103 | static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 108 | static STACK_OF(CONF_VALUE) * |
104 | AUTHORITY_INFO_ACCESS *ainfo, | 109 | i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, |
105 | STACK_OF(CONF_VALUE) *ret) | 110 | AUTHORITY_INFO_ACCESS *ainfo, STACK_OF(CONF_VALUE) *ret) |
106 | { | 111 | { |
107 | ACCESS_DESCRIPTION *desc; | 112 | ACCESS_DESCRIPTION *desc; |
108 | int i,nlen; | 113 | int i, nlen; |
109 | char objtmp[80], *ntmp; | 114 | char objtmp[80], *ntmp; |
110 | CONF_VALUE *vtmp; | 115 | CONF_VALUE *vtmp; |
111 | for(i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { | 116 | |
117 | for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { | ||
112 | desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); | 118 | desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); |
113 | ret = i2v_GENERAL_NAME(method, desc->location, ret); | 119 | ret = i2v_GENERAL_NAME(method, desc->location, ret); |
114 | if(!ret) break; | 120 | if (!ret) |
121 | break; | ||
115 | vtmp = sk_CONF_VALUE_value(ret, i); | 122 | vtmp = sk_CONF_VALUE_value(ret, i); |
116 | i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); | 123 | i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); |
117 | nlen = strlen(objtmp) + strlen(vtmp->name) + 5; | 124 | nlen = strlen(objtmp) + strlen(vtmp->name) + 5; |
118 | ntmp = malloc(nlen); | 125 | ntmp = malloc(nlen); |
119 | if(!ntmp) { | 126 | if (!ntmp) { |
120 | X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, | 127 | X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, |
121 | ERR_R_MALLOC_FAILURE); | 128 | ERR_R_MALLOC_FAILURE); |
122 | return NULL; | 129 | return NULL; |
123 | } | 130 | } |
124 | strlcpy(ntmp, objtmp, nlen); | 131 | strlcpy(ntmp, objtmp, nlen); |
@@ -126,49 +133,57 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method | |||
126 | strlcat(ntmp, vtmp->name, nlen); | 133 | strlcat(ntmp, vtmp->name, nlen); |
127 | free(vtmp->name); | 134 | free(vtmp->name); |
128 | vtmp->name = ntmp; | 135 | vtmp->name = ntmp; |
129 | 136 | ||
130 | } | 137 | } |
131 | if(!ret) return sk_CONF_VALUE_new_null(); | 138 | if (!ret) |
139 | return sk_CONF_VALUE_new_null(); | ||
132 | return ret; | 140 | return ret; |
133 | } | 141 | } |
134 | 142 | ||
135 | static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, | 143 | static AUTHORITY_INFO_ACCESS * |
136 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) | 144 | v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, |
145 | STACK_OF(CONF_VALUE) *nval) | ||
137 | { | 146 | { |
138 | AUTHORITY_INFO_ACCESS *ainfo = NULL; | 147 | AUTHORITY_INFO_ACCESS *ainfo = NULL; |
139 | CONF_VALUE *cnf, ctmp; | 148 | CONF_VALUE *cnf, ctmp; |
140 | ACCESS_DESCRIPTION *acc; | 149 | ACCESS_DESCRIPTION *acc; |
141 | int i, objlen; | 150 | int i, objlen; |
142 | char *objtmp, *ptmp; | 151 | char *objtmp, *ptmp; |
143 | if(!(ainfo = sk_ACCESS_DESCRIPTION_new_null())) { | 152 | |
144 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 153 | if (!(ainfo = sk_ACCESS_DESCRIPTION_new_null())) { |
154 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, | ||
155 | ERR_R_MALLOC_FAILURE); | ||
145 | return NULL; | 156 | return NULL; |
146 | } | 157 | } |
147 | for(i = 0; i < sk_CONF_VALUE_num(nval); i++) { | 158 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { |
148 | cnf = sk_CONF_VALUE_value(nval, i); | 159 | cnf = sk_CONF_VALUE_value(nval, i); |
149 | if(!(acc = ACCESS_DESCRIPTION_new()) | 160 | if (!(acc = ACCESS_DESCRIPTION_new()) || |
150 | || !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { | 161 | !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { |
151 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 162 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
163 | ERR_R_MALLOC_FAILURE); | ||
152 | goto err; | 164 | goto err; |
153 | } | 165 | } |
154 | ptmp = strchr(cnf->name, ';'); | 166 | ptmp = strchr(cnf->name, ';'); |
155 | if(!ptmp) { | 167 | if (!ptmp) { |
156 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,X509V3_R_INVALID_SYNTAX); | 168 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
169 | X509V3_R_INVALID_SYNTAX); | ||
157 | goto err; | 170 | goto err; |
158 | } | 171 | } |
159 | objlen = ptmp - cnf->name; | 172 | objlen = ptmp - cnf->name; |
160 | ctmp.name = ptmp + 1; | 173 | ctmp.name = ptmp + 1; |
161 | ctmp.value = cnf->value; | 174 | ctmp.value = cnf->value; |
162 | if(!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) | 175 | if (!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) |
163 | goto err; | 176 | goto err; |
164 | if(!(objtmp = malloc(objlen + 1))) { | 177 | if (!(objtmp = malloc(objlen + 1))) { |
165 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,ERR_R_MALLOC_FAILURE); | 178 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
179 | ERR_R_MALLOC_FAILURE); | ||
166 | goto err; | 180 | goto err; |
167 | } | 181 | } |
168 | strlcpy(objtmp, cnf->name, objlen + 1); | 182 | strlcpy(objtmp, cnf->name, objlen + 1); |
169 | acc->method = OBJ_txt2obj(objtmp, 0); | 183 | acc->method = OBJ_txt2obj(objtmp, 0); |
170 | if(!acc->method) { | 184 | if (!acc->method) { |
171 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,X509V3_R_BAD_OBJECT); | 185 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
186 | X509V3_R_BAD_OBJECT); | ||
172 | ERR_add_error_data(2, "value=", objtmp); | 187 | ERR_add_error_data(2, "value=", objtmp); |
173 | free(objtmp); | 188 | free(objtmp); |
174 | goto err; | 189 | goto err; |
@@ -177,16 +192,18 @@ static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *metho | |||
177 | 192 | ||
178 | } | 193 | } |
179 | return ainfo; | 194 | return ainfo; |
180 | err: | 195 | |
196 | err: | ||
181 | sk_ACCESS_DESCRIPTION_pop_free(ainfo, ACCESS_DESCRIPTION_free); | 197 | sk_ACCESS_DESCRIPTION_pop_free(ainfo, ACCESS_DESCRIPTION_free); |
182 | return NULL; | 198 | return NULL; |
183 | } | 199 | } |
184 | 200 | ||
185 | int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a) | 201 | int |
186 | { | 202 | i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a) |
203 | { | ||
187 | i2a_ASN1_OBJECT(bp, a->method); | 204 | i2a_ASN1_OBJECT(bp, a->method); |
188 | #ifdef UNDEF | 205 | #ifdef UNDEF |
189 | i2a_GENERAL_NAME(bp, a->location); | 206 | i2a_GENERAL_NAME(bp, a->location); |
190 | #endif | 207 | #endif |
191 | return 2; | 208 | return 2; |
192 | } | 209 | } |
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_int.c b/src/lib/libssl/src/crypto/x509v3/v3_int.c index 4bfd14cf46..51f9e5cdc6 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_int.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_int.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -60,30 +60,35 @@ | |||
60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
61 | #include <openssl/x509v3.h> | 61 | #include <openssl/x509v3.h> |
62 | 62 | ||
63 | const X509V3_EXT_METHOD v3_crl_num = { | 63 | const X509V3_EXT_METHOD v3_crl_num = { |
64 | NID_crl_number, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 64 | NID_crl_number, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
65 | 0,0,0,0, | 65 | 0, 0, 0, 0, |
66 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 66 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
67 | 0, | 67 | 0, |
68 | 0,0,0,0, NULL}; | 68 | 0, 0, 0, 0, |
69 | NULL | ||
70 | }; | ||
69 | 71 | ||
70 | const X509V3_EXT_METHOD v3_delta_crl = { | 72 | const X509V3_EXT_METHOD v3_delta_crl = { |
71 | NID_delta_crl, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 73 | NID_delta_crl, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
72 | 0,0,0,0, | 74 | 0, 0, 0, 0, |
73 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 75 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
74 | 0, | 76 | 0, |
75 | 0,0,0,0, NULL}; | 77 | 0, 0, 0, 0, |
78 | NULL | ||
79 | }; | ||
76 | 80 | ||
77 | static void * s2i_asn1_int(X509V3_EXT_METHOD *meth, X509V3_CTX *ctx, char *value) | 81 | static void * |
78 | { | 82 | s2i_asn1_int(X509V3_EXT_METHOD *meth, X509V3_CTX *ctx, char *value) |
83 | { | ||
79 | return s2i_ASN1_INTEGER(meth, value); | 84 | return s2i_ASN1_INTEGER(meth, value); |
80 | } | 85 | } |
81 | 86 | ||
82 | const X509V3_EXT_METHOD v3_inhibit_anyp = { | 87 | const X509V3_EXT_METHOD v3_inhibit_anyp = { |
83 | NID_inhibit_any_policy, 0, ASN1_ITEM_ref(ASN1_INTEGER), | 88 | NID_inhibit_any_policy, 0, ASN1_ITEM_ref(ASN1_INTEGER), |
84 | 0,0,0,0, | 89 | 0, 0, 0, 0, |
85 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, | 90 | (X509V3_EXT_I2S)i2s_ASN1_INTEGER, |
86 | (X509V3_EXT_S2I)s2i_asn1_int, | 91 | (X509V3_EXT_S2I)s2i_asn1_int, |
87 | 0,0,0,0, NULL}; | 92 | 0, 0, 0, 0, |
88 | 93 | NULL | |
89 | 94 | }; | |
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_lib.c b/src/lib/libssl/src/crypto/x509v3/v3_lib.c index 8d5e6ee911..3f610cdaa3 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_lib.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_lib.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -67,74 +67,87 @@ | |||
67 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; | 67 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; |
68 | 68 | ||
69 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, | 69 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, |
70 | const X509V3_EXT_METHOD * const *b); | 70 | const X509V3_EXT_METHOD * const *b); |
71 | static void ext_list_free(X509V3_EXT_METHOD *ext); | 71 | static void ext_list_free(X509V3_EXT_METHOD *ext); |
72 | 72 | ||
73 | int X509V3_EXT_add(X509V3_EXT_METHOD *ext) | 73 | int |
74 | X509V3_EXT_add(X509V3_EXT_METHOD *ext) | ||
74 | { | 75 | { |
75 | if(!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_cmp))) { | 76 | if (!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_cmp))) { |
76 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 77 | X509V3err(X509V3_F_X509V3_EXT_ADD, ERR_R_MALLOC_FAILURE); |
77 | return 0; | 78 | return 0; |
78 | } | 79 | } |
79 | if(!sk_X509V3_EXT_METHOD_push(ext_list, ext)) { | 80 | if (!sk_X509V3_EXT_METHOD_push(ext_list, ext)) { |
80 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 81 | X509V3err(X509V3_F_X509V3_EXT_ADD, ERR_R_MALLOC_FAILURE); |
81 | return 0; | 82 | return 0; |
82 | } | 83 | } |
83 | return 1; | 84 | return 1; |
84 | } | 85 | } |
85 | 86 | ||
86 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, | 87 | static int |
87 | const X509V3_EXT_METHOD * const *b) | 88 | ext_cmp(const X509V3_EXT_METHOD * const *a, const X509V3_EXT_METHOD * const *b) |
88 | { | 89 | { |
89 | return ((*a)->ext_nid - (*b)->ext_nid); | 90 | return ((*a)->ext_nid - (*b)->ext_nid); |
90 | } | 91 | } |
91 | 92 | ||
92 | DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, const X509V3_EXT_METHOD *, | 93 | DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, |
93 | ext); | 94 | const X509V3_EXT_METHOD *, ext); |
94 | IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, | 95 | IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, |
95 | const X509V3_EXT_METHOD *, ext); | 96 | const X509V3_EXT_METHOD *, ext); |
96 | 97 | ||
97 | const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid) | 98 | const X509V3_EXT_METHOD * |
99 | X509V3_EXT_get_nid(int nid) | ||
98 | { | 100 | { |
99 | X509V3_EXT_METHOD tmp; | 101 | X509V3_EXT_METHOD tmp; |
100 | const X509V3_EXT_METHOD *t = &tmp, * const *ret; | 102 | const X509V3_EXT_METHOD *t = &tmp, * const *ret; |
101 | int idx; | 103 | int idx; |
102 | if(nid < 0) return NULL; | 104 | |
105 | if (nid < 0) | ||
106 | return NULL; | ||
103 | tmp.ext_nid = nid; | 107 | tmp.ext_nid = nid; |
104 | ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT); | 108 | ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT); |
105 | if(ret) return *ret; | 109 | if (ret) |
106 | if(!ext_list) return NULL; | 110 | return *ret; |
111 | if (!ext_list) | ||
112 | return NULL; | ||
107 | idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); | 113 | idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); |
108 | if(idx == -1) return NULL; | 114 | if (idx == -1) |
115 | return NULL; | ||
109 | return sk_X509V3_EXT_METHOD_value(ext_list, idx); | 116 | return sk_X509V3_EXT_METHOD_value(ext_list, idx); |
110 | } | 117 | } |
111 | 118 | ||
112 | const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) | 119 | const X509V3_EXT_METHOD * |
120 | X509V3_EXT_get(X509_EXTENSION *ext) | ||
113 | { | 121 | { |
114 | int nid; | 122 | int nid; |
115 | if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL; | 123 | |
124 | if ((nid = OBJ_obj2nid(ext->object)) == NID_undef) | ||
125 | return NULL; | ||
116 | return X509V3_EXT_get_nid(nid); | 126 | return X509V3_EXT_get_nid(nid); |
117 | } | 127 | } |
118 | 128 | ||
119 | 129 | int | |
120 | int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) | 130 | X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) |
121 | { | 131 | { |
122 | for(;extlist->ext_nid!=-1;extlist++) | 132 | for (; extlist->ext_nid!=-1; extlist++) |
123 | if(!X509V3_EXT_add(extlist)) return 0; | 133 | if (!X509V3_EXT_add(extlist)) |
134 | return 0; | ||
124 | return 1; | 135 | return 1; |
125 | } | 136 | } |
126 | 137 | ||
127 | int X509V3_EXT_add_alias(int nid_to, int nid_from) | 138 | int |
139 | X509V3_EXT_add_alias(int nid_to, int nid_from) | ||
128 | { | 140 | { |
129 | const X509V3_EXT_METHOD *ext; | 141 | const X509V3_EXT_METHOD *ext; |
130 | X509V3_EXT_METHOD *tmpext; | 142 | X509V3_EXT_METHOD *tmpext; |
131 | 143 | ||
132 | if(!(ext = X509V3_EXT_get_nid(nid_from))) { | 144 | if (!(ext = X509V3_EXT_get_nid(nid_from))) { |
133 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); | 145 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS, |
146 | X509V3_R_EXTENSION_NOT_FOUND); | ||
134 | return 0; | 147 | return 0; |
135 | } | 148 | } |
136 | if(!(tmpext = malloc(sizeof(X509V3_EXT_METHOD)))) { | 149 | if (!(tmpext = malloc(sizeof(X509V3_EXT_METHOD)))) { |
137 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,ERR_R_MALLOC_FAILURE); | 150 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS, ERR_R_MALLOC_FAILURE); |
138 | return 0; | 151 | return 0; |
139 | } | 152 | } |
140 | *tmpext = *ext; | 153 | *tmpext = *ext; |
@@ -143,36 +156,44 @@ int X509V3_EXT_add_alias(int nid_to, int nid_from) | |||
143 | return X509V3_EXT_add(tmpext); | 156 | return X509V3_EXT_add(tmpext); |
144 | } | 157 | } |
145 | 158 | ||
146 | void X509V3_EXT_cleanup(void) | 159 | void |
160 | X509V3_EXT_cleanup(void) | ||
147 | { | 161 | { |
148 | sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free); | 162 | sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free); |
149 | ext_list = NULL; | 163 | ext_list = NULL; |
150 | } | 164 | } |
151 | 165 | ||
152 | static void ext_list_free(X509V3_EXT_METHOD *ext) | 166 | static void |
167 | ext_list_free(X509V3_EXT_METHOD *ext) | ||
153 | { | 168 | { |
154 | if(ext->ext_flags & X509V3_EXT_DYNAMIC) free(ext); | 169 | if (ext->ext_flags & X509V3_EXT_DYNAMIC) |
170 | free(ext); | ||
155 | } | 171 | } |
156 | 172 | ||
157 | /* Legacy function: we don't need to add standard extensions | 173 | /* Legacy function: we don't need to add standard extensions |
158 | * any more because they are now kept in ext_dat.h. | 174 | * any more because they are now kept in ext_dat.h. |
159 | */ | 175 | */ |
160 | 176 | ||
161 | int X509V3_add_standard_extensions(void) | 177 | int |
178 | X509V3_add_standard_extensions(void) | ||
162 | { | 179 | { |
163 | return 1; | 180 | return 1; |
164 | } | 181 | } |
165 | 182 | ||
166 | /* Return an extension internal structure */ | 183 | /* Return an extension internal structure */ |
167 | 184 | ||
168 | void *X509V3_EXT_d2i(X509_EXTENSION *ext) | 185 | void * |
186 | X509V3_EXT_d2i(X509_EXTENSION *ext) | ||
169 | { | 187 | { |
170 | const X509V3_EXT_METHOD *method; | 188 | const X509V3_EXT_METHOD *method; |
171 | const unsigned char *p; | 189 | const unsigned char *p; |
172 | 190 | ||
173 | if(!(method = X509V3_EXT_get(ext))) return NULL; | 191 | if (!(method = X509V3_EXT_get(ext))) |
192 | return NULL; | ||
174 | p = ext->value->data; | 193 | p = ext->value->data; |
175 | if(method->it) return ASN1_item_d2i(NULL, &p, ext->value->length, ASN1_ITEM_ptr(method->it)); | 194 | if (method->it) |
195 | return ASN1_item_d2i(NULL, &p, ext->value->length, | ||
196 | ASN1_ITEM_ptr(method->it)); | ||
176 | return method->d2i(NULL, &p, ext->value->length); | 197 | return method->d2i(NULL, &p, ext->value->length); |
177 | } | 198 | } |
178 | 199 | ||
@@ -191,43 +212,53 @@ void *X509V3_EXT_d2i(X509_EXTENSION *ext) | |||
191 | * -2 extension occurs more than once. | 212 | * -2 extension occurs more than once. |
192 | */ | 213 | */ |
193 | 214 | ||
194 | void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | 215 | void * |
216 | X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | ||
195 | { | 217 | { |
196 | int lastpos, i; | 218 | int lastpos, i; |
197 | X509_EXTENSION *ex, *found_ex = NULL; | 219 | X509_EXTENSION *ex, *found_ex = NULL; |
198 | if(!x) { | 220 | |
199 | if(idx) *idx = -1; | 221 | if (!x) { |
200 | if(crit) *crit = -1; | 222 | if (idx) |
223 | *idx = -1; | ||
224 | if (crit) | ||
225 | *crit = -1; | ||
201 | return NULL; | 226 | return NULL; |
202 | } | 227 | } |
203 | if(idx) lastpos = *idx + 1; | 228 | if (idx) |
204 | else lastpos = 0; | 229 | lastpos = *idx + 1; |
205 | if(lastpos < 0) lastpos = 0; | 230 | else |
206 | for(i = lastpos; i < sk_X509_EXTENSION_num(x); i++) | 231 | lastpos = 0; |
207 | { | 232 | if (lastpos < 0) |
233 | lastpos = 0; | ||
234 | for (i = lastpos; i < sk_X509_EXTENSION_num(x); i++) { | ||
208 | ex = sk_X509_EXTENSION_value(x, i); | 235 | ex = sk_X509_EXTENSION_value(x, i); |
209 | if(OBJ_obj2nid(ex->object) == nid) { | 236 | if (OBJ_obj2nid(ex->object) == nid) { |
210 | if(idx) { | 237 | if (idx) { |
211 | *idx = i; | 238 | *idx = i; |
212 | found_ex = ex; | 239 | found_ex = ex; |
213 | break; | 240 | break; |
214 | } else if(found_ex) { | 241 | } else if (found_ex) { |
215 | /* Found more than one */ | 242 | /* Found more than one */ |
216 | if(crit) *crit = -2; | 243 | if (crit) |
244 | *crit = -2; | ||
217 | return NULL; | 245 | return NULL; |
218 | } | 246 | } |
219 | found_ex = ex; | 247 | found_ex = ex; |
220 | } | 248 | } |
221 | } | 249 | } |
222 | if(found_ex) { | 250 | if (found_ex) { |
223 | /* Found it */ | 251 | /* Found it */ |
224 | if(crit) *crit = X509_EXTENSION_get_critical(found_ex); | 252 | if (crit) |
253 | *crit = X509_EXTENSION_get_critical(found_ex); | ||
225 | return X509V3_EXT_d2i(found_ex); | 254 | return X509V3_EXT_d2i(found_ex); |
226 | } | 255 | } |
227 | 256 | ||
228 | /* Extension not found */ | 257 | /* Extension not found */ |
229 | if(idx) *idx = -1; | 258 | if (idx) |
230 | if(crit) *crit = -1; | 259 | *idx = -1; |
260 | if (crit) | ||
261 | *crit = -1; | ||
231 | return NULL; | 262 | return NULL; |
232 | } | 263 | } |
233 | 264 | ||
@@ -236,8 +267,9 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | |||
236 | * 'value' arguments (if relevant) are the extensions internal structure. | 267 | * 'value' arguments (if relevant) are the extensions internal structure. |
237 | */ | 268 | */ |
238 | 269 | ||
239 | int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | 270 | int |
240 | int crit, unsigned long flags) | 271 | X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, |
272 | int crit, unsigned long flags) | ||
241 | { | 273 | { |
242 | int extidx = -1; | 274 | int extidx = -1; |
243 | int errcode; | 275 | int errcode; |
@@ -247,30 +279,31 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | |||
247 | /* If appending we don't care if it exists, otherwise | 279 | /* If appending we don't care if it exists, otherwise |
248 | * look for existing extension. | 280 | * look for existing extension. |
249 | */ | 281 | */ |
250 | if(ext_op != X509V3_ADD_APPEND) | 282 | if (ext_op != X509V3_ADD_APPEND) |
251 | extidx = X509v3_get_ext_by_NID(*x, nid, -1); | 283 | extidx = X509v3_get_ext_by_NID(*x, nid, -1); |
252 | 284 | ||
253 | /* See if extension exists */ | 285 | /* See if extension exists */ |
254 | if(extidx >= 0) { | 286 | if (extidx >= 0) { |
255 | /* If keep existing, nothing to do */ | 287 | /* If keep existing, nothing to do */ |
256 | if(ext_op == X509V3_ADD_KEEP_EXISTING) | 288 | if (ext_op == X509V3_ADD_KEEP_EXISTING) |
257 | return 1; | 289 | return 1; |
258 | /* If default then its an error */ | 290 | /* If default then its an error */ |
259 | if(ext_op == X509V3_ADD_DEFAULT) { | 291 | if (ext_op == X509V3_ADD_DEFAULT) { |
260 | errcode = X509V3_R_EXTENSION_EXISTS; | 292 | errcode = X509V3_R_EXTENSION_EXISTS; |
261 | goto err; | 293 | goto err; |
262 | } | 294 | } |
263 | /* If delete, just delete it */ | 295 | /* If delete, just delete it */ |
264 | if(ext_op == X509V3_ADD_DELETE) { | 296 | if (ext_op == X509V3_ADD_DELETE) { |
265 | if(!sk_X509_EXTENSION_delete(*x, extidx)) return -1; | 297 | if (!sk_X509_EXTENSION_delete(*x, extidx)) |
298 | return -1; | ||
266 | return 1; | 299 | return 1; |
267 | } | 300 | } |
268 | } else { | 301 | } else { |
269 | /* If replace existing or delete, error since | 302 | /* If replace existing or delete, error since |
270 | * extension must exist | 303 | * extension must exist |
271 | */ | 304 | */ |
272 | if((ext_op == X509V3_ADD_REPLACE_EXISTING) || | 305 | if ((ext_op == X509V3_ADD_REPLACE_EXISTING) || |
273 | (ext_op == X509V3_ADD_DELETE)) { | 306 | (ext_op == X509V3_ADD_DELETE)) { |
274 | errcode = X509V3_R_EXTENSION_NOT_FOUND; | 307 | errcode = X509V3_R_EXTENSION_NOT_FOUND; |
275 | goto err; | 308 | goto err; |
276 | } | 309 | } |
@@ -282,26 +315,30 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, | |||
282 | 315 | ||
283 | ext = X509V3_EXT_i2d(nid, crit, value); | 316 | ext = X509V3_EXT_i2d(nid, crit, value); |
284 | 317 | ||
285 | if(!ext) { | 318 | if (!ext) { |
286 | X509V3err(X509V3_F_X509V3_ADD1_I2D, X509V3_R_ERROR_CREATING_EXTENSION); | 319 | X509V3err(X509V3_F_X509V3_ADD1_I2D, |
320 | X509V3_R_ERROR_CREATING_EXTENSION); | ||
287 | return 0; | 321 | return 0; |
288 | } | 322 | } |
289 | 323 | ||
290 | /* If extension exists replace it.. */ | 324 | /* If extension exists replace it.. */ |
291 | if(extidx >= 0) { | 325 | if (extidx >= 0) { |
292 | extmp = sk_X509_EXTENSION_value(*x, extidx); | 326 | extmp = sk_X509_EXTENSION_value(*x, extidx); |
293 | X509_EXTENSION_free(extmp); | 327 | X509_EXTENSION_free(extmp); |
294 | if(!sk_X509_EXTENSION_set(*x, extidx, ext)) return -1; | 328 | if (!sk_X509_EXTENSION_set(*x, extidx, ext)) |
329 | return -1; | ||
295 | return 1; | 330 | return 1; |
296 | } | 331 | } |
297 | 332 | ||
298 | if(!*x && !(*x = sk_X509_EXTENSION_new_null())) return -1; | 333 | if (!*x && !(*x = sk_X509_EXTENSION_new_null())) |
299 | if(!sk_X509_EXTENSION_push(*x, ext)) return -1; | 334 | return -1; |
335 | if (!sk_X509_EXTENSION_push(*x, ext)) | ||
336 | return -1; | ||
300 | 337 | ||
301 | return 1; | 338 | return 1; |
302 | 339 | ||
303 | err: | 340 | err: |
304 | if(!(flags & X509V3_ADD_SILENT)) | 341 | if (!(flags & X509V3_ADD_SILENT)) |
305 | X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode); | 342 | X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode); |
306 | return 0; | 343 | return 0; |
307 | } | 344 | } |
diff --git a/src/lib/libssl/src/crypto/x509v3/v3conf.c b/src/lib/libssl/src/crypto/x509v3/v3conf.c index a9e6ca3542..cfa5fce75c 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3conf.c +++ b/src/lib/libssl/src/crypto/x509v3/v3conf.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -66,7 +66,8 @@ | |||
66 | 66 | ||
67 | /* Test application to add extensions from a config file */ | 67 | /* Test application to add extensions from a config file */ |
68 | 68 | ||
69 | int main(int argc, char **argv) | 69 | int |
70 | main(int argc, char **argv) | ||
70 | { | 71 | { |
71 | LHASH *conf; | 72 | LHASH *conf; |
72 | X509 *cert; | 73 | X509 *cert; |
@@ -75,28 +76,30 @@ int main(int argc, char **argv) | |||
75 | int i; | 76 | int i; |
76 | int count; | 77 | int count; |
77 | X509_EXTENSION *ext; | 78 | X509_EXTENSION *ext; |
79 | |||
78 | X509V3_add_standard_extensions(); | 80 | X509V3_add_standard_extensions(); |
79 | ERR_load_crypto_strings(); | 81 | ERR_load_crypto_strings(); |
80 | if(!argv[1]) { | 82 | if (!argv[1]) { |
81 | fprintf(stderr, "Usage: v3conf cert.pem [file.cnf]\n"); | 83 | fprintf(stderr, "Usage: v3conf cert.pem [file.cnf]\n"); |
82 | exit(1); | 84 | exit(1); |
83 | } | 85 | } |
84 | conf_file = argv[2]; | 86 | conf_file = argv[2]; |
85 | if(!conf_file) conf_file = "test.cnf"; | 87 | if (!conf_file) |
88 | conf_file = "test.cnf"; | ||
86 | conf = CONF_load(NULL, "test.cnf", NULL); | 89 | conf = CONF_load(NULL, "test.cnf", NULL); |
87 | if(!conf) { | 90 | if (!conf) { |
88 | fprintf(stderr, "Error opening Config file %s\n", conf_file); | 91 | fprintf(stderr, "Error opening Config file %s\n", conf_file); |
89 | ERR_print_errors_fp(stderr); | 92 | ERR_print_errors_fp(stderr); |
90 | exit(1); | 93 | exit(1); |
91 | } | 94 | } |
92 | 95 | ||
93 | inf = fopen(argv[1], "r"); | 96 | inf = fopen(argv[1], "r"); |
94 | if(!inf) { | 97 | if (!inf) { |
95 | fprintf(stderr, "Can't open certificate file %s\n", argv[1]); | 98 | fprintf(stderr, "Can't open certificate file %s\n", argv[1]); |
96 | exit(1); | 99 | exit(1); |
97 | } | 100 | } |
98 | cert = PEM_read_X509(inf, NULL, NULL); | 101 | cert = PEM_read_X509(inf, NULL, NULL); |
99 | if(!cert) { | 102 | if (!cert) { |
100 | fprintf(stderr, "Error reading certificate file %s\n", argv[1]); | 103 | fprintf(stderr, "Error reading certificate file %s\n", argv[1]); |
101 | exit(1); | 104 | exit(1); |
102 | } | 105 | } |
@@ -105,7 +108,7 @@ int main(int argc, char **argv) | |||
105 | sk_pop_free(cert->cert_info->extensions, X509_EXTENSION_free); | 108 | sk_pop_free(cert->cert_info->extensions, X509_EXTENSION_free); |
106 | cert->cert_info->extensions = NULL; | 109 | cert->cert_info->extensions = NULL; |
107 | 110 | ||
108 | if(!X509V3_EXT_add_conf(conf, NULL, "test_section", cert)) { | 111 | if (!X509V3_EXT_add_conf(conf, NULL, "test_section", cert)) { |
109 | fprintf(stderr, "Error adding extensions\n"); | 112 | fprintf(stderr, "Error adding extensions\n"); |
110 | ERR_print_errors_fp(stderr); | 113 | ERR_print_errors_fp(stderr); |
111 | exit(1); | 114 | exit(1); |
@@ -113,15 +116,16 @@ int main(int argc, char **argv) | |||
113 | 116 | ||
114 | count = X509_get_ext_count(cert); | 117 | count = X509_get_ext_count(cert); |
115 | printf("%d extensions\n", count); | 118 | printf("%d extensions\n", count); |
116 | for(i = 0; i < count; i++) { | 119 | for (i = 0; i < count; i++) { |
117 | ext = X509_get_ext(cert, i); | 120 | ext = X509_get_ext(cert, i); |
118 | printf("%s", OBJ_nid2ln(OBJ_obj2nid(ext->object))); | 121 | printf("%s", OBJ_nid2ln(OBJ_obj2nid(ext->object))); |
119 | if(ext->critical) printf(",critical:\n"); | 122 | if (ext->critical) |
120 | else printf(":\n"); | 123 | printf(",critical:\n"); |
124 | else | ||
125 | printf(":\n"); | ||
121 | X509V3_EXT_print_fp(stdout, ext, 0, 0); | 126 | X509V3_EXT_print_fp(stdout, ext, 0, 0); |
122 | printf("\n"); | 127 | printf("\n"); |
123 | 128 | ||
124 | } | 129 | } |
125 | return 0; | 130 | return 0; |
126 | } | 131 | } |
127 | |||
diff --git a/src/lib/libssl/src/crypto/x509v3/v3err.c b/src/lib/libssl/src/crypto/x509v3/v3err.c index f9f6f1f91f..c0b8b0e262 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3err.c +++ b/src/lib/libssl/src/crypto/x509v3/v3err.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * are met: | 7 | * are met: |
8 | * | 8 | * |
9 | * 1. Redistributions of source code must retain the above copyright | 9 | * 1. Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. | 10 | * notice, this list of conditions and the following disclaimer. |
11 | * | 11 | * |
12 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in | 13 | * notice, this list of conditions and the following disclaimer in |
@@ -68,159 +68,156 @@ | |||
68 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509V3,func,0) | 68 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509V3,func,0) |
69 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509V3,0,reason) | 69 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509V3,0,reason) |
70 | 70 | ||
71 | static ERR_STRING_DATA X509V3_str_functs[]= | 71 | static ERR_STRING_DATA X509V3_str_functs[] = { |
72 | { | 72 | {ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"}, |
73 | {ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"}, | 73 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"}, |
74 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"}, | 74 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"}, |
75 | {ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"}, | 75 | {ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, |
76 | {ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, | 76 | {ERR_FUNC(X509V3_F_COPY_ISSUER), "COPY_ISSUER"}, |
77 | {ERR_FUNC(X509V3_F_COPY_ISSUER), "COPY_ISSUER"}, | 77 | {ERR_FUNC(X509V3_F_DO_DIRNAME), "DO_DIRNAME"}, |
78 | {ERR_FUNC(X509V3_F_DO_DIRNAME), "DO_DIRNAME"}, | 78 | {ERR_FUNC(X509V3_F_DO_EXT_CONF), "DO_EXT_CONF"}, |
79 | {ERR_FUNC(X509V3_F_DO_EXT_CONF), "DO_EXT_CONF"}, | 79 | {ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, |
80 | {ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, | 80 | {ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"}, |
81 | {ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"}, | 81 | {ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"}, |
82 | {ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"}, | 82 | {ERR_FUNC(X509V3_F_GNAMES_FROM_SECTNAME), "GNAMES_FROM_SECTNAME"}, |
83 | {ERR_FUNC(X509V3_F_GNAMES_FROM_SECTNAME), "GNAMES_FROM_SECTNAME"}, | 83 | {ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, |
84 | {ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, | 84 | {ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, |
85 | {ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, | 85 | {ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, |
86 | {ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, | 86 | {ERR_FUNC(X509V3_F_I2S_ASN1_INTEGER), "i2s_ASN1_INTEGER"}, |
87 | {ERR_FUNC(X509V3_F_I2S_ASN1_INTEGER), "i2s_ASN1_INTEGER"}, | 87 | {ERR_FUNC(X509V3_F_I2V_AUTHORITY_INFO_ACCESS), "I2V_AUTHORITY_INFO_ACCESS"}, |
88 | {ERR_FUNC(X509V3_F_I2V_AUTHORITY_INFO_ACCESS), "I2V_AUTHORITY_INFO_ACCESS"}, | 88 | {ERR_FUNC(X509V3_F_NOTICE_SECTION), "NOTICE_SECTION"}, |
89 | {ERR_FUNC(X509V3_F_NOTICE_SECTION), "NOTICE_SECTION"}, | 89 | {ERR_FUNC(X509V3_F_NREF_NOS), "NREF_NOS"}, |
90 | {ERR_FUNC(X509V3_F_NREF_NOS), "NREF_NOS"}, | 90 | {ERR_FUNC(X509V3_F_POLICY_SECTION), "POLICY_SECTION"}, |
91 | {ERR_FUNC(X509V3_F_POLICY_SECTION), "POLICY_SECTION"}, | 91 | {ERR_FUNC(X509V3_F_PROCESS_PCI_VALUE), "PROCESS_PCI_VALUE"}, |
92 | {ERR_FUNC(X509V3_F_PROCESS_PCI_VALUE), "PROCESS_PCI_VALUE"}, | 92 | {ERR_FUNC(X509V3_F_R2I_CERTPOL), "R2I_CERTPOL"}, |
93 | {ERR_FUNC(X509V3_F_R2I_CERTPOL), "R2I_CERTPOL"}, | 93 | {ERR_FUNC(X509V3_F_R2I_PCI), "R2I_PCI"}, |
94 | {ERR_FUNC(X509V3_F_R2I_PCI), "R2I_PCI"}, | 94 | {ERR_FUNC(X509V3_F_S2I_ASN1_IA5STRING), "S2I_ASN1_IA5STRING"}, |
95 | {ERR_FUNC(X509V3_F_S2I_ASN1_IA5STRING), "S2I_ASN1_IA5STRING"}, | 95 | {ERR_FUNC(X509V3_F_S2I_ASN1_INTEGER), "s2i_ASN1_INTEGER"}, |
96 | {ERR_FUNC(X509V3_F_S2I_ASN1_INTEGER), "s2i_ASN1_INTEGER"}, | 96 | {ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, |
97 | {ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, | 97 | {ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, |
98 | {ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, | 98 | {ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"}, |
99 | {ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"}, | 99 | {ERR_FUNC(X509V3_F_SET_DIST_POINT_NAME), "SET_DIST_POINT_NAME"}, |
100 | {ERR_FUNC(X509V3_F_SET_DIST_POINT_NAME), "SET_DIST_POINT_NAME"}, | 100 | {ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, |
101 | {ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, | 101 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"}, |
102 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"}, | 102 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, |
103 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, | 103 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ULONG), "SXNET_add_id_ulong"}, |
104 | {ERR_FUNC(X509V3_F_SXNET_ADD_ID_ULONG), "SXNET_add_id_ulong"}, | 104 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ASC), "SXNET_get_id_asc"}, |
105 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ASC), "SXNET_get_id_asc"}, | 105 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ULONG), "SXNET_get_id_ulong"}, |
106 | {ERR_FUNC(X509V3_F_SXNET_GET_ID_ULONG), "SXNET_get_id_ulong"}, | 106 | {ERR_FUNC(X509V3_F_V2I_ASIDENTIFIERS), "V2I_ASIDENTIFIERS"}, |
107 | {ERR_FUNC(X509V3_F_V2I_ASIDENTIFIERS), "V2I_ASIDENTIFIERS"}, | 107 | {ERR_FUNC(X509V3_F_V2I_ASN1_BIT_STRING), "v2i_ASN1_BIT_STRING"}, |
108 | {ERR_FUNC(X509V3_F_V2I_ASN1_BIT_STRING), "v2i_ASN1_BIT_STRING"}, | 108 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_INFO_ACCESS), "V2I_AUTHORITY_INFO_ACCESS"}, |
109 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_INFO_ACCESS), "V2I_AUTHORITY_INFO_ACCESS"}, | 109 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_KEYID), "V2I_AUTHORITY_KEYID"}, |
110 | {ERR_FUNC(X509V3_F_V2I_AUTHORITY_KEYID), "V2I_AUTHORITY_KEYID"}, | 110 | {ERR_FUNC(X509V3_F_V2I_BASIC_CONSTRAINTS), "V2I_BASIC_CONSTRAINTS"}, |
111 | {ERR_FUNC(X509V3_F_V2I_BASIC_CONSTRAINTS), "V2I_BASIC_CONSTRAINTS"}, | 111 | {ERR_FUNC(X509V3_F_V2I_CRLD), "V2I_CRLD"}, |
112 | {ERR_FUNC(X509V3_F_V2I_CRLD), "V2I_CRLD"}, | 112 | {ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"}, |
113 | {ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"}, | 113 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, |
114 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, | 114 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"}, |
115 | {ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"}, | 115 | {ERR_FUNC(X509V3_F_V2I_IDP), "V2I_IDP"}, |
116 | {ERR_FUNC(X509V3_F_V2I_IDP), "V2I_IDP"}, | 116 | {ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"}, |
117 | {ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"}, | 117 | {ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"}, |
118 | {ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"}, | 118 | {ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"}, |
119 | {ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"}, | 119 | {ERR_FUNC(X509V3_F_V2I_POLICY_CONSTRAINTS), "V2I_POLICY_CONSTRAINTS"}, |
120 | {ERR_FUNC(X509V3_F_V2I_POLICY_CONSTRAINTS), "V2I_POLICY_CONSTRAINTS"}, | 120 | {ERR_FUNC(X509V3_F_V2I_POLICY_MAPPINGS), "V2I_POLICY_MAPPINGS"}, |
121 | {ERR_FUNC(X509V3_F_V2I_POLICY_MAPPINGS), "V2I_POLICY_MAPPINGS"}, | 121 | {ERR_FUNC(X509V3_F_V2I_SUBJECT_ALT), "V2I_SUBJECT_ALT"}, |
122 | {ERR_FUNC(X509V3_F_V2I_SUBJECT_ALT), "V2I_SUBJECT_ALT"}, | 122 | {ERR_FUNC(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL), "V3_ADDR_VALIDATE_PATH_INTERNAL"}, |
123 | {ERR_FUNC(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL), "V3_ADDR_VALIDATE_PATH_INTERNAL"}, | 123 | {ERR_FUNC(X509V3_F_V3_GENERIC_EXTENSION), "V3_GENERIC_EXTENSION"}, |
124 | {ERR_FUNC(X509V3_F_V3_GENERIC_EXTENSION), "V3_GENERIC_EXTENSION"}, | 124 | {ERR_FUNC(X509V3_F_X509V3_ADD1_I2D), "X509V3_add1_i2d"}, |
125 | {ERR_FUNC(X509V3_F_X509V3_ADD1_I2D), "X509V3_add1_i2d"}, | 125 | {ERR_FUNC(X509V3_F_X509V3_ADD_VALUE), "X509V3_add_value"}, |
126 | {ERR_FUNC(X509V3_F_X509V3_ADD_VALUE), "X509V3_add_value"}, | 126 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"}, |
127 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"}, | 127 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"}, |
128 | {ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"}, | 128 | {ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"}, |
129 | {ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"}, | 129 | {ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"}, |
130 | {ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"}, | 130 | {ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"}, |
131 | {ERR_FUNC(X509V3_F_X509V3_EXT_NCONF), "X509V3_EXT_nconf"}, | 131 | {ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"}, |
132 | {ERR_FUNC(X509V3_F_X509V3_GET_SECTION), "X509V3_get_section"}, | 132 | {ERR_FUNC(X509V3_F_X509V3_GET_STRING), "X509V3_get_string"}, |
133 | {ERR_FUNC(X509V3_F_X509V3_GET_STRING), "X509V3_get_string"}, | 133 | {ERR_FUNC(X509V3_F_X509V3_GET_VALUE_BOOL), "X509V3_get_value_bool"}, |
134 | {ERR_FUNC(X509V3_F_X509V3_GET_VALUE_BOOL), "X509V3_get_value_bool"}, | 134 | {ERR_FUNC(X509V3_F_X509V3_PARSE_LIST), "X509V3_parse_list"}, |
135 | {ERR_FUNC(X509V3_F_X509V3_PARSE_LIST), "X509V3_parse_list"}, | 135 | {ERR_FUNC(X509V3_F_X509_PURPOSE_ADD), "X509_PURPOSE_add"}, |
136 | {ERR_FUNC(X509V3_F_X509_PURPOSE_ADD), "X509_PURPOSE_add"}, | 136 | {ERR_FUNC(X509V3_F_X509_PURPOSE_SET), "X509_PURPOSE_set"}, |
137 | {ERR_FUNC(X509V3_F_X509_PURPOSE_SET), "X509_PURPOSE_set"}, | 137 | {0, NULL} |
138 | {0,NULL} | 138 | }; |
139 | }; | ||
140 | 139 | ||
141 | static ERR_STRING_DATA X509V3_str_reasons[]= | 140 | static ERR_STRING_DATA X509V3_str_reasons[] = { |
142 | { | 141 | {ERR_REASON(X509V3_R_BAD_IP_ADDRESS) , "bad ip address"}, |
143 | {ERR_REASON(X509V3_R_BAD_IP_ADDRESS) ,"bad ip address"}, | 142 | {ERR_REASON(X509V3_R_BAD_OBJECT) , "bad object"}, |
144 | {ERR_REASON(X509V3_R_BAD_OBJECT) ,"bad object"}, | 143 | {ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) , "bn dec2bn error"}, |
145 | {ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"}, | 144 | {ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR), "bn to asn1 integer error"}, |
146 | {ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"}, | 145 | {ERR_REASON(X509V3_R_DIRNAME_ERROR) , "dirname error"}, |
147 | {ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"}, | 146 | {ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET), "distpoint already set"}, |
148 | {ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET),"distpoint already set"}, | 147 | {ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) , "duplicate zone id"}, |
149 | {ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"}, | 148 | {ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE), "error converting zone"}, |
150 | {ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE),"error converting zone"}, | 149 | {ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION), "error creating extension"}, |
151 | {ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION),"error creating extension"}, | 150 | {ERR_REASON(X509V3_R_ERROR_IN_EXTENSION) , "error in extension"}, |
152 | {ERR_REASON(X509V3_R_ERROR_IN_EXTENSION) ,"error in extension"}, | 151 | {ERR_REASON(X509V3_R_EXPECTED_A_SECTION_NAME), "expected a section name"}, |
153 | {ERR_REASON(X509V3_R_EXPECTED_A_SECTION_NAME),"expected a section name"}, | 152 | {ERR_REASON(X509V3_R_EXTENSION_EXISTS) , "extension exists"}, |
154 | {ERR_REASON(X509V3_R_EXTENSION_EXISTS) ,"extension exists"}, | 153 | {ERR_REASON(X509V3_R_EXTENSION_NAME_ERROR), "extension name error"}, |
155 | {ERR_REASON(X509V3_R_EXTENSION_NAME_ERROR),"extension name error"}, | 154 | {ERR_REASON(X509V3_R_EXTENSION_NOT_FOUND), "extension not found"}, |
156 | {ERR_REASON(X509V3_R_EXTENSION_NOT_FOUND),"extension not found"}, | 155 | {ERR_REASON(X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED), "extension setting not supported"}, |
157 | {ERR_REASON(X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED),"extension setting not supported"}, | 156 | {ERR_REASON(X509V3_R_EXTENSION_VALUE_ERROR), "extension value error"}, |
158 | {ERR_REASON(X509V3_R_EXTENSION_VALUE_ERROR),"extension value error"}, | 157 | {ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION), "illegal empty extension"}, |
159 | {ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"}, | 158 | {ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) , "illegal hex digit"}, |
160 | {ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"}, | 159 | {ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG), "incorrect policy syntax tag"}, |
161 | {ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"}, | 160 | {ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS), "invalid multiple rdns"}, |
162 | {ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS),"invalid multiple rdns"}, | 161 | {ERR_REASON(X509V3_R_INVALID_ASNUMBER) , "invalid asnumber"}, |
163 | {ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"}, | 162 | {ERR_REASON(X509V3_R_INVALID_ASRANGE) , "invalid asrange"}, |
164 | {ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"}, | 163 | {ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING), "invalid boolean string"}, |
165 | {ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"}, | 164 | {ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING), "invalid extension string"}, |
166 | {ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING),"invalid extension string"}, | 165 | {ERR_REASON(X509V3_R_INVALID_INHERITANCE), "invalid inheritance"}, |
167 | {ERR_REASON(X509V3_R_INVALID_INHERITANCE),"invalid inheritance"}, | 166 | {ERR_REASON(X509V3_R_INVALID_IPADDRESS) , "invalid ipaddress"}, |
168 | {ERR_REASON(X509V3_R_INVALID_IPADDRESS) ,"invalid ipaddress"}, | 167 | {ERR_REASON(X509V3_R_INVALID_NAME) , "invalid name"}, |
169 | {ERR_REASON(X509V3_R_INVALID_NAME) ,"invalid name"}, | 168 | {ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT), "invalid null argument"}, |
170 | {ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT),"invalid null argument"}, | 169 | {ERR_REASON(X509V3_R_INVALID_NULL_NAME) , "invalid null name"}, |
171 | {ERR_REASON(X509V3_R_INVALID_NULL_NAME) ,"invalid null name"}, | 170 | {ERR_REASON(X509V3_R_INVALID_NULL_VALUE) , "invalid null value"}, |
172 | {ERR_REASON(X509V3_R_INVALID_NULL_VALUE) ,"invalid null value"}, | 171 | {ERR_REASON(X509V3_R_INVALID_NUMBER) , "invalid number"}, |
173 | {ERR_REASON(X509V3_R_INVALID_NUMBER) ,"invalid number"}, | 172 | {ERR_REASON(X509V3_R_INVALID_NUMBERS) , "invalid numbers"}, |
174 | {ERR_REASON(X509V3_R_INVALID_NUMBERS) ,"invalid numbers"}, | 173 | {ERR_REASON(X509V3_R_INVALID_OBJECT_IDENTIFIER), "invalid object identifier"}, |
175 | {ERR_REASON(X509V3_R_INVALID_OBJECT_IDENTIFIER),"invalid object identifier"}, | 174 | {ERR_REASON(X509V3_R_INVALID_OPTION) , "invalid option"}, |
176 | {ERR_REASON(X509V3_R_INVALID_OPTION) ,"invalid option"}, | 175 | {ERR_REASON(X509V3_R_INVALID_POLICY_IDENTIFIER), "invalid policy identifier"}, |
177 | {ERR_REASON(X509V3_R_INVALID_POLICY_IDENTIFIER),"invalid policy identifier"}, | 176 | {ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_SETTING), "invalid proxy policy setting"}, |
178 | {ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_SETTING),"invalid proxy policy setting"}, | 177 | {ERR_REASON(X509V3_R_INVALID_PURPOSE) , "invalid purpose"}, |
179 | {ERR_REASON(X509V3_R_INVALID_PURPOSE) ,"invalid purpose"}, | 178 | {ERR_REASON(X509V3_R_INVALID_SAFI) , "invalid safi"}, |
180 | {ERR_REASON(X509V3_R_INVALID_SAFI) ,"invalid safi"}, | 179 | {ERR_REASON(X509V3_R_INVALID_SECTION) , "invalid section"}, |
181 | {ERR_REASON(X509V3_R_INVALID_SECTION) ,"invalid section"}, | 180 | {ERR_REASON(X509V3_R_INVALID_SYNTAX) , "invalid syntax"}, |
182 | {ERR_REASON(X509V3_R_INVALID_SYNTAX) ,"invalid syntax"}, | 181 | {ERR_REASON(X509V3_R_ISSUER_DECODE_ERROR), "issuer decode error"}, |
183 | {ERR_REASON(X509V3_R_ISSUER_DECODE_ERROR),"issuer decode error"}, | 182 | {ERR_REASON(X509V3_R_MISSING_VALUE) , "missing value"}, |
184 | {ERR_REASON(X509V3_R_MISSING_VALUE) ,"missing value"}, | 183 | {ERR_REASON(X509V3_R_NEED_ORGANIZATION_AND_NUMBERS), "need organization and numbers"}, |
185 | {ERR_REASON(X509V3_R_NEED_ORGANIZATION_AND_NUMBERS),"need organization and numbers"}, | 184 | {ERR_REASON(X509V3_R_NO_CONFIG_DATABASE) , "no config database"}, |
186 | {ERR_REASON(X509V3_R_NO_CONFIG_DATABASE) ,"no config database"}, | 185 | {ERR_REASON(X509V3_R_NO_ISSUER_CERTIFICATE), "no issuer certificate"}, |
187 | {ERR_REASON(X509V3_R_NO_ISSUER_CERTIFICATE),"no issuer certificate"}, | 186 | {ERR_REASON(X509V3_R_NO_ISSUER_DETAILS) , "no issuer details"}, |
188 | {ERR_REASON(X509V3_R_NO_ISSUER_DETAILS) ,"no issuer details"}, | 187 | {ERR_REASON(X509V3_R_NO_POLICY_IDENTIFIER), "no policy identifier"}, |
189 | {ERR_REASON(X509V3_R_NO_POLICY_IDENTIFIER),"no policy identifier"}, | 188 | {ERR_REASON(X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED), "no proxy cert policy language defined"}, |
190 | {ERR_REASON(X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED),"no proxy cert policy language defined"}, | 189 | {ERR_REASON(X509V3_R_NO_PUBLIC_KEY) , "no public key"}, |
191 | {ERR_REASON(X509V3_R_NO_PUBLIC_KEY) ,"no public key"}, | 190 | {ERR_REASON(X509V3_R_NO_SUBJECT_DETAILS) , "no subject details"}, |
192 | {ERR_REASON(X509V3_R_NO_SUBJECT_DETAILS) ,"no subject details"}, | 191 | {ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS), "odd number of digits"}, |
193 | {ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS),"odd number of digits"}, | 192 | {ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED), "operation not defined"}, |
194 | {ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED),"operation not defined"}, | 193 | {ERR_REASON(X509V3_R_OTHERNAME_ERROR) , "othername error"}, |
195 | {ERR_REASON(X509V3_R_OTHERNAME_ERROR) ,"othername error"}, | 194 | {ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED), "policy language already defined"}, |
196 | {ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED),"policy language already defined"}, | 195 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) , "policy path length"}, |
197 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) ,"policy path length"}, | 196 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED), "policy path length already defined"}, |
198 | {ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED),"policy path length already defined"}, | 197 | {ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED), "policy syntax not currently supported"}, |
199 | {ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED),"policy syntax not currently supported"}, | 198 | {ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY), "policy when proxy language requires no policy"}, |
200 | {ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY),"policy when proxy language requires no policy"}, | 199 | {ERR_REASON(X509V3_R_SECTION_NOT_FOUND) , "section not found"}, |
201 | {ERR_REASON(X509V3_R_SECTION_NOT_FOUND) ,"section not found"}, | 200 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS), "unable to get issuer details"}, |
202 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS),"unable to get issuer details"}, | 201 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_KEYID), "unable to get issuer keyid"}, |
203 | {ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_KEYID),"unable to get issuer keyid"}, | 202 | {ERR_REASON(X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT), "unknown bit string argument"}, |
204 | {ERR_REASON(X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT),"unknown bit string argument"}, | 203 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION) , "unknown extension"}, |
205 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION) ,"unknown extension"}, | 204 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME), "unknown extension name"}, |
206 | {ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME),"unknown extension name"}, | 205 | {ERR_REASON(X509V3_R_UNKNOWN_OPTION) , "unknown option"}, |
207 | {ERR_REASON(X509V3_R_UNKNOWN_OPTION) ,"unknown option"}, | 206 | {ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) , "unsupported option"}, |
208 | {ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) ,"unsupported option"}, | 207 | {ERR_REASON(X509V3_R_UNSUPPORTED_TYPE) , "unsupported type"}, |
209 | {ERR_REASON(X509V3_R_UNSUPPORTED_TYPE) ,"unsupported type"}, | 208 | {ERR_REASON(X509V3_R_USER_TOO_LONG) , "user too long"}, |
210 | {ERR_REASON(X509V3_R_USER_TOO_LONG) ,"user too long"}, | 209 | {0, NULL} |
211 | {0,NULL} | 210 | }; |
212 | }; | ||
213 | 211 | ||
214 | #endif | 212 | #endif |
215 | 213 | ||
216 | void ERR_load_X509V3_strings(void) | 214 | void |
217 | { | 215 | ERR_load_X509V3_strings(void) |
216 | { | ||
218 | #ifndef OPENSSL_NO_ERR | 217 | #ifndef OPENSSL_NO_ERR |
219 | 218 | if (ERR_func_error_string(X509V3_str_functs[0].error) == NULL) { | |
220 | if (ERR_func_error_string(X509V3_str_functs[0].error) == NULL) | 219 | ERR_load_strings(0, X509V3_str_functs); |
221 | { | 220 | ERR_load_strings(0, X509V3_str_reasons); |
222 | ERR_load_strings(0,X509V3_str_functs); | ||
223 | ERR_load_strings(0,X509V3_str_reasons); | ||
224 | } | ||
225 | #endif | ||
226 | } | 221 | } |
222 | #endif | ||
223 | } | ||
diff --git a/src/lib/libssl/src/crypto/x509v3/v3prin.c b/src/lib/libssl/src/crypto/x509v3/v3prin.c index d5ff268296..da701de132 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3prin.c +++ b/src/lib/libssl/src/crypto/x509v3/v3prin.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -56,31 +56,31 @@ | |||
56 | * | 56 | * |
57 | */ | 57 | */ |
58 | 58 | ||
59 | |||
60 | |||
61 | #include <stdio.h> | 59 | #include <stdio.h> |
62 | #include <openssl/asn1.h> | 60 | #include <openssl/asn1.h> |
63 | #include <openssl/conf.h> | 61 | #include <openssl/conf.h> |
64 | #include <openssl/x509.h> | 62 | #include <openssl/x509.h> |
65 | #include <openssl/x509v3.h> | 63 | #include <openssl/x509v3.h> |
66 | 64 | ||
67 | int main(int argc, char **argv) | 65 | int |
66 | main(int argc, char **argv) | ||
68 | { | 67 | { |
69 | X509 *cert; | 68 | X509 *cert; |
70 | FILE *inf; | 69 | FILE *inf; |
71 | int i, count; | 70 | int i, count; |
72 | X509_EXTENSION *ext; | 71 | X509_EXTENSION *ext; |
72 | |||
73 | X509V3_add_standard_extensions(); | 73 | X509V3_add_standard_extensions(); |
74 | ERR_load_crypto_strings(); | 74 | ERR_load_crypto_strings(); |
75 | if(!argv[1]) { | 75 | if (!argv[1]) { |
76 | fprintf(stderr, "Usage v3prin cert.pem\n"); | 76 | fprintf(stderr, "Usage v3prin cert.pem\n"); |
77 | exit(1); | 77 | exit(1); |
78 | } | 78 | } |
79 | if(!(inf = fopen(argv[1], "r"))) { | 79 | if (!(inf = fopen(argv[1], "r"))) { |
80 | fprintf(stderr, "Can't open %s\n", argv[1]); | 80 | fprintf(stderr, "Can't open %s\n", argv[1]); |
81 | exit(1); | 81 | exit(1); |
82 | } | 82 | } |
83 | if(!(cert = PEM_read_X509(inf, NULL, NULL))) { | 83 | if (!(cert = PEM_read_X509(inf, NULL, NULL))) { |
84 | fprintf(stderr, "Can't read certificate %s\n", argv[1]); | 84 | fprintf(stderr, "Can't read certificate %s\n", argv[1]); |
85 | ERR_print_errors_fp(stderr); | 85 | ERR_print_errors_fp(stderr); |
86 | exit(1); | 86 | exit(1); |
@@ -88,12 +88,13 @@ int main(int argc, char **argv) | |||
88 | fclose(inf); | 88 | fclose(inf); |
89 | count = X509_get_ext_count(cert); | 89 | count = X509_get_ext_count(cert); |
90 | printf("%d extensions\n", count); | 90 | printf("%d extensions\n", count); |
91 | for(i = 0; i < count; i++) { | 91 | for (i = 0; i < count; i++) { |
92 | ext = X509_get_ext(cert, i); | 92 | ext = X509_get_ext(cert, i); |
93 | printf("%s\n", OBJ_nid2ln(OBJ_obj2nid(ext->object))); | 93 | printf("%s\n", OBJ_nid2ln(OBJ_obj2nid(ext->object))); |
94 | if(!X509V3_EXT_print_fp(stdout, ext, 0, 0)) ERR_print_errors_fp(stderr); | 94 | if (!X509V3_EXT_print_fp(stdout, ext, 0, 0)) |
95 | ERR_print_errors_fp(stderr); | ||
95 | printf("\n"); | 96 | printf("\n"); |
96 | 97 | ||
97 | } | 98 | } |
98 | return 0; | 99 | return 0; |
99 | } | 100 | } |