summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509v3/v3_extku.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_extku.c')
-rw-r--r--src/lib/libcrypto/x509v3/v3_extku.c56
1 files changed, 31 insertions, 25 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_extku.c b/src/lib/libcrypto/x509v3/v3_extku.c
index 1c66532757..30d800d3ab 100644
--- a/src/lib/libcrypto/x509v3/v3_extku.c
+++ b/src/lib/libcrypto/x509v3/v3_extku.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,19 +64,18 @@
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, 66static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
67 X509V3_CTX *ctx, 67 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
68 STACK_OF(CONF_VALUE) *nval); 68static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(
69static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, 69 const X509V3_EXT_METHOD *method, void *eku, STACK_OF(CONF_VALUE) *extlist);
70 void *eku, STACK_OF(CONF_VALUE) *extlist);
71 70
72const X509V3_EXT_METHOD v3_ext_ku = { 71const X509V3_EXT_METHOD v3_ext_ku = {
73 NID_ext_key_usage, 0, 72 NID_ext_key_usage, 0,
74 ASN1_ITEM_ref(EXTENDED_KEY_USAGE), 73 ASN1_ITEM_ref(EXTENDED_KEY_USAGE),
75 0,0,0,0, 74 0, 0, 0, 0,
76 0,0, 75 0, 0,
77 i2v_EXTENDED_KEY_USAGE, 76 i2v_EXTENDED_KEY_USAGE,
78 v2i_EXTENDED_KEY_USAGE, 77 v2i_EXTENDED_KEY_USAGE,
79 0,0, 78 0, 0,
80 NULL 79 NULL
81}; 80};
82 81
@@ -84,29 +83,31 @@ const X509V3_EXT_METHOD v3_ext_ku = {
84const X509V3_EXT_METHOD v3_ocsp_accresp = { 83const X509V3_EXT_METHOD v3_ocsp_accresp = {
85 NID_id_pkix_OCSP_acceptableResponses, 0, 84 NID_id_pkix_OCSP_acceptableResponses, 0,
86 ASN1_ITEM_ref(EXTENDED_KEY_USAGE), 85 ASN1_ITEM_ref(EXTENDED_KEY_USAGE),
87 0,0,0,0, 86 0, 0, 0, 0,
88 0,0, 87 0, 0,
89 i2v_EXTENDED_KEY_USAGE, 88 i2v_EXTENDED_KEY_USAGE,
90 v2i_EXTENDED_KEY_USAGE, 89 v2i_EXTENDED_KEY_USAGE,
91 0,0, 90 0, 0,
92 NULL 91 NULL
93}; 92};
94 93
95ASN1_ITEM_TEMPLATE(EXTENDED_KEY_USAGE) = 94ASN1_ITEM_TEMPLATE(EXTENDED_KEY_USAGE) =
96 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, EXTENDED_KEY_USAGE, ASN1_OBJECT) 95 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, EXTENDED_KEY_USAGE,
96 ASN1_OBJECT)
97ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE) 97ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE)
98 98
99IMPLEMENT_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) 99IMPLEMENT_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
100 100
101static STACK_OF(CONF_VALUE) * 101static STACK_OF(CONF_VALUE) *
102 i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a, 102i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a,
103 STACK_OF(CONF_VALUE) *ext_list) 103 STACK_OF(CONF_VALUE) *ext_list)
104{ 104{
105 EXTENDED_KEY_USAGE *eku = a; 105 EXTENDED_KEY_USAGE *eku = a;
106 int i; 106 int i;
107 ASN1_OBJECT *obj; 107 ASN1_OBJECT *obj;
108 char obj_tmp[80]; 108 char obj_tmp[80];
109 for(i = 0; i < sk_ASN1_OBJECT_num(eku); i++) { 109
110 for (i = 0; i < sk_ASN1_OBJECT_num(eku); i++) {
110 obj = sk_ASN1_OBJECT_value(eku, i); 111 obj = sk_ASN1_OBJECT_value(eku, i);
111 i2t_ASN1_OBJECT(obj_tmp, 80, obj); 112 i2t_ASN1_OBJECT(obj_tmp, 80, obj);
112 X509V3_add_value(NULL, obj_tmp, &ext_list); 113 X509V3_add_value(NULL, obj_tmp, &ext_list);
@@ -114,8 +115,9 @@ static STACK_OF(CONF_VALUE) *
114 return ext_list; 115 return ext_list;
115} 116}
116 117
117static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, 118static void *
118 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) 119v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
120 STACK_OF(CONF_VALUE) *nval)
119{ 121{
120 EXTENDED_KEY_USAGE *extku; 122 EXTENDED_KEY_USAGE *extku;
121 char *extval; 123 char *extval;
@@ -123,18 +125,22 @@ static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
123 CONF_VALUE *val; 125 CONF_VALUE *val;
124 int i; 126 int i;
125 127
126 if(!(extku = sk_ASN1_OBJECT_new_null())) { 128 if (!(extku = sk_ASN1_OBJECT_new_null())) {
127 X509V3err(X509V3_F_V2I_EXTENDED_KEY_USAGE,ERR_R_MALLOC_FAILURE); 129 X509V3err(X509V3_F_V2I_EXTENDED_KEY_USAGE,
130 ERR_R_MALLOC_FAILURE);
128 return NULL; 131 return NULL;
129 } 132 }
130 133
131 for(i = 0; i < sk_CONF_VALUE_num(nval); i++) { 134 for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
132 val = sk_CONF_VALUE_value(nval, i); 135 val = sk_CONF_VALUE_value(nval, i);
133 if(val->value) extval = val->value; 136 if (val->value)
134 else extval = val->name; 137 extval = val->value;
135 if(!(objtmp = OBJ_txt2obj(extval, 0))) { 138 else
139 extval = val->name;
140 if (!(objtmp = OBJ_txt2obj(extval, 0))) {
136 sk_ASN1_OBJECT_pop_free(extku, ASN1_OBJECT_free); 141 sk_ASN1_OBJECT_pop_free(extku, ASN1_OBJECT_free);
137 X509V3err(X509V3_F_V2I_EXTENDED_KEY_USAGE,X509V3_R_INVALID_OBJECT_IDENTIFIER); 142 X509V3err(X509V3_F_V2I_EXTENDED_KEY_USAGE,
143 X509V3_R_INVALID_OBJECT_IDENTIFIER);
138 X509V3_conf_err(val); 144 X509V3_conf_err(val);
139 return NULL; 145 return NULL;
140 } 146 }