diff options
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_pmaps.c')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_pmaps.c | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_pmaps.c b/src/lib/libcrypto/x509v3/v3_pmaps.c index 865bcd3980..bf5f291877 100644 --- a/src/lib/libcrypto/x509v3/v3_pmaps.c +++ b/src/lib/libcrypto/x509v3/v3_pmaps.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 | ||
66 | static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, | 66 | static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, |
67 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 67 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
68 | static STACK_OF(CONF_VALUE) * | 68 | static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS( |
69 | i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *pmps, | 69 | const X509V3_EXT_METHOD *method, void *pmps, STACK_OF(CONF_VALUE) *extlist); |
70 | STACK_OF(CONF_VALUE) *extlist); | ||
71 | 70 | ||
72 | const X509V3_EXT_METHOD v3_policy_mappings = { | 71 | const X509V3_EXT_METHOD v3_policy_mappings = { |
73 | NID_policy_mappings, 0, | 72 | NID_policy_mappings, 0, |
74 | ASN1_ITEM_ref(POLICY_MAPPINGS), | 73 | ASN1_ITEM_ref(POLICY_MAPPINGS), |
75 | 0,0,0,0, | 74 | 0, 0, 0, 0, |
76 | 0,0, | 75 | 0, 0, |
77 | i2v_POLICY_MAPPINGS, | 76 | i2v_POLICY_MAPPINGS, |
78 | v2i_POLICY_MAPPINGS, | 77 | v2i_POLICY_MAPPINGS, |
79 | 0,0, | 78 | 0, 0, |
80 | NULL | 79 | NULL |
81 | }; | 80 | }; |
82 | 81 | ||
@@ -85,24 +84,24 @@ ASN1_SEQUENCE(POLICY_MAPPING) = { | |||
85 | ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) | 84 | ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) |
86 | } ASN1_SEQUENCE_END(POLICY_MAPPING) | 85 | } ASN1_SEQUENCE_END(POLICY_MAPPING) |
87 | 86 | ||
88 | ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = | 87 | ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = |
89 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, | 88 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, |
90 | POLICY_MAPPING) | 89 | POLICY_MAPPING) |
91 | ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) | 90 | ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) |
92 | 91 | ||
93 | IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) | 92 | IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) |
94 | 93 | ||
95 | |||
96 | static STACK_OF(CONF_VALUE) * | 94 | static STACK_OF(CONF_VALUE) * |
97 | i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *a, | 95 | i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *a, |
98 | STACK_OF(CONF_VALUE) *ext_list) | 96 | STACK_OF(CONF_VALUE) *ext_list) |
99 | { | 97 | { |
100 | POLICY_MAPPINGS *pmaps = a; | 98 | POLICY_MAPPINGS *pmaps = a; |
101 | POLICY_MAPPING *pmap; | 99 | POLICY_MAPPING *pmap; |
102 | int i; | 100 | int i; |
103 | char obj_tmp1[80]; | 101 | char obj_tmp1[80]; |
104 | char obj_tmp2[80]; | 102 | char obj_tmp2[80]; |
105 | for(i = 0; i < sk_POLICY_MAPPING_num(pmaps); i++) { | 103 | |
104 | for (i = 0; i < sk_POLICY_MAPPING_num(pmaps); i++) { | ||
106 | pmap = sk_POLICY_MAPPING_value(pmaps, i); | 105 | pmap = sk_POLICY_MAPPING_value(pmaps, i); |
107 | i2t_ASN1_OBJECT(obj_tmp1, 80, pmap->issuerDomainPolicy); | 106 | i2t_ASN1_OBJECT(obj_tmp1, 80, pmap->issuerDomainPolicy); |
108 | i2t_ASN1_OBJECT(obj_tmp2, 80, pmap->subjectDomainPolicy); | 107 | i2t_ASN1_OBJECT(obj_tmp2, 80, pmap->subjectDomainPolicy); |
@@ -111,8 +110,9 @@ i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *a, | |||
111 | return ext_list; | 110 | return ext_list; |
112 | } | 111 | } |
113 | 112 | ||
114 | static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, | 113 | static void * |
115 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) | 114 | v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, |
115 | STACK_OF(CONF_VALUE) *nval) | ||
116 | { | 116 | { |
117 | POLICY_MAPPINGS *pmaps; | 117 | POLICY_MAPPINGS *pmaps; |
118 | POLICY_MAPPING *pmap; | 118 | POLICY_MAPPING *pmap; |
@@ -120,31 +120,34 @@ static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, | |||
120 | CONF_VALUE *val; | 120 | CONF_VALUE *val; |
121 | int i; | 121 | int i; |
122 | 122 | ||
123 | if(!(pmaps = sk_POLICY_MAPPING_new_null())) { | 123 | if (!(pmaps = sk_POLICY_MAPPING_new_null())) { |
124 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAILURE); | 124 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, ERR_R_MALLOC_FAILURE); |
125 | return NULL; | 125 | return NULL; |
126 | } | 126 | } |
127 | 127 | ||
128 | for(i = 0; i < sk_CONF_VALUE_num(nval); i++) { | 128 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { |
129 | val = sk_CONF_VALUE_value(nval, i); | 129 | val = sk_CONF_VALUE_value(nval, i); |
130 | if(!val->value || !val->name) { | 130 | if (!val->value || !val->name) { |
131 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); | 131 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); |
132 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,X509V3_R_INVALID_OBJECT_IDENTIFIER); | 132 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, |
133 | X509V3_R_INVALID_OBJECT_IDENTIFIER); | ||
133 | X509V3_conf_err(val); | 134 | X509V3_conf_err(val); |
134 | return NULL; | 135 | return NULL; |
135 | } | 136 | } |
136 | obj1 = OBJ_txt2obj(val->name, 0); | 137 | obj1 = OBJ_txt2obj(val->name, 0); |
137 | obj2 = OBJ_txt2obj(val->value, 0); | 138 | obj2 = OBJ_txt2obj(val->value, 0); |
138 | if(!obj1 || !obj2) { | 139 | if (!obj1 || !obj2) { |
139 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); | 140 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); |
140 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,X509V3_R_INVALID_OBJECT_IDENTIFIER); | 141 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, |
142 | X509V3_R_INVALID_OBJECT_IDENTIFIER); | ||
141 | X509V3_conf_err(val); | 143 | X509V3_conf_err(val); |
142 | return NULL; | 144 | return NULL; |
143 | } | 145 | } |
144 | pmap = POLICY_MAPPING_new(); | 146 | pmap = POLICY_MAPPING_new(); |
145 | if (!pmap) { | 147 | if (!pmap) { |
146 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); | 148 | sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); |
147 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAILURE); | 149 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, |
150 | ERR_R_MALLOC_FAILURE); | ||
148 | return NULL; | 151 | return NULL; |
149 | } | 152 | } |
150 | pmap->issuerDomainPolicy = obj1; | 153 | pmap->issuerDomainPolicy = obj1; |