diff options
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_cpols.c')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_cpols.c | 190 |
1 files changed, 163 insertions, 27 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_cpols.c b/src/lib/libcrypto/x509v3/v3_cpols.c index 61e6b3ba47..4244f03851 100644 --- a/src/lib/libcrypto/x509v3/v3_cpols.c +++ b/src/lib/libcrypto/x509v3/v3_cpols.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: v3_cpols.c,v 1.20 2015/07/15 17:00:35 miod Exp $ */ | 1 | /* $OpenBSD: v3_cpols.c,v 1.21 2015/07/25 16:00:14 jsing Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -92,10 +92,23 @@ const X509V3_EXT_METHOD v3_cpols = { | |||
92 | NULL | 92 | NULL |
93 | }; | 93 | }; |
94 | 94 | ||
95 | ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = | 95 | static const ASN1_TEMPLATE CERTIFICATEPOLICIES_item_tt = { |
96 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, | 96 | .flags = ASN1_TFLG_SEQUENCE_OF, |
97 | POLICYINFO) | 97 | .tag = 0, |
98 | ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES) | 98 | .offset = 0, |
99 | .field_name = "CERTIFICATEPOLICIES", | ||
100 | .item = &POLICYINFO_it, | ||
101 | }; | ||
102 | |||
103 | const ASN1_ITEM CERTIFICATEPOLICIES_it = { | ||
104 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
105 | .utype = -1, | ||
106 | .templates = &CERTIFICATEPOLICIES_item_tt, | ||
107 | .tcount = 0, | ||
108 | .funcs = NULL, | ||
109 | .size = 0, | ||
110 | .sname = "CERTIFICATEPOLICIES", | ||
111 | }; | ||
99 | 112 | ||
100 | 113 | ||
101 | CERTIFICATEPOLICIES * | 114 | CERTIFICATEPOLICIES * |
@@ -123,10 +136,32 @@ CERTIFICATEPOLICIES_free(CERTIFICATEPOLICIES *a) | |||
123 | ASN1_item_free((ASN1_VALUE *)a, &CERTIFICATEPOLICIES_it); | 136 | ASN1_item_free((ASN1_VALUE *)a, &CERTIFICATEPOLICIES_it); |
124 | } | 137 | } |
125 | 138 | ||
126 | ASN1_SEQUENCE(POLICYINFO) = { | 139 | static const ASN1_TEMPLATE POLICYINFO_seq_tt[] = { |
127 | ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT), | 140 | { |
128 | ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO) | 141 | .flags = 0, |
129 | } ASN1_SEQUENCE_END(POLICYINFO) | 142 | .tag = 0, |
143 | .offset = offsetof(POLICYINFO, policyid), | ||
144 | .field_name = "policyid", | ||
145 | .item = &ASN1_OBJECT_it, | ||
146 | }, | ||
147 | { | ||
148 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
149 | .tag = 0, | ||
150 | .offset = offsetof(POLICYINFO, qualifiers), | ||
151 | .field_name = "qualifiers", | ||
152 | .item = &POLICYQUALINFO_it, | ||
153 | }, | ||
154 | }; | ||
155 | |||
156 | const ASN1_ITEM POLICYINFO_it = { | ||
157 | .itype = ASN1_ITYPE_SEQUENCE, | ||
158 | .utype = V_ASN1_SEQUENCE, | ||
159 | .templates = POLICYINFO_seq_tt, | ||
160 | .tcount = sizeof(POLICYINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
161 | .funcs = NULL, | ||
162 | .size = sizeof(POLICYINFO), | ||
163 | .sname = "POLICYINFO", | ||
164 | }; | ||
130 | 165 | ||
131 | 166 | ||
132 | POLICYINFO * | 167 | POLICYINFO * |
@@ -154,18 +189,75 @@ POLICYINFO_free(POLICYINFO *a) | |||
154 | ASN1_item_free((ASN1_VALUE *)a, &POLICYINFO_it); | 189 | ASN1_item_free((ASN1_VALUE *)a, &POLICYINFO_it); |
155 | } | 190 | } |
156 | 191 | ||
157 | ASN1_ADB_TEMPLATE(policydefault) = | 192 | static const ASN1_TEMPLATE policydefault_tt = { |
158 | ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY); | 193 | .flags = 0, |
194 | .tag = 0, | ||
195 | .offset = offsetof(POLICYQUALINFO, d.other), | ||
196 | .field_name = "d.other", | ||
197 | .item = &ASN1_ANY_it, | ||
198 | }; | ||
159 | 199 | ||
160 | ASN1_ADB(POLICYQUALINFO) = { | 200 | static const ASN1_ADB_TABLE POLICYQUALINFO_adbtbl[] = { |
161 | ADB_ENTRY(NID_id_qt_cps, ASN1_SIMPLE(POLICYQUALINFO, d.cpsuri, ASN1_IA5STRING)), | 201 | { |
162 | ADB_ENTRY(NID_id_qt_unotice, ASN1_SIMPLE(POLICYQUALINFO, d.usernotice, USERNOTICE)) | 202 | .value = NID_id_qt_cps, |
163 | } ASN1_ADB_END(POLICYQUALINFO, 0, pqualid, 0, &policydefault_tt, NULL); | 203 | .tt = { |
204 | .flags = 0, | ||
205 | .tag = 0, | ||
206 | .offset = offsetof(POLICYQUALINFO, d.cpsuri), | ||
207 | .field_name = "d.cpsuri", | ||
208 | .item = &ASN1_IA5STRING_it, | ||
209 | }, | ||
210 | |||
211 | }, | ||
212 | { | ||
213 | .value = NID_id_qt_unotice, | ||
214 | .tt = { | ||
215 | .flags = 0, | ||
216 | .tag = 0, | ||
217 | .offset = offsetof(POLICYQUALINFO, d.usernotice), | ||
218 | .field_name = "d.usernotice", | ||
219 | .item = &USERNOTICE_it, | ||
220 | }, | ||
221 | |||
222 | }, | ||
223 | }; | ||
164 | 224 | ||
165 | ASN1_SEQUENCE(POLICYQUALINFO) = { | 225 | static const ASN1_ADB POLICYQUALINFO_adb = { |
166 | ASN1_SIMPLE(POLICYQUALINFO, pqualid, ASN1_OBJECT), | 226 | .flags = 0, |
167 | ASN1_ADB_OBJECT(POLICYQUALINFO) | 227 | .offset = offsetof(POLICYQUALINFO, pqualid), |
168 | } ASN1_SEQUENCE_END(POLICYQUALINFO) | 228 | .app_items = 0, |
229 | .tbl = POLICYQUALINFO_adbtbl, | ||
230 | .tblcount = sizeof(POLICYQUALINFO_adbtbl) / sizeof(ASN1_ADB_TABLE), | ||
231 | .default_tt = &policydefault_tt, | ||
232 | .null_tt = NULL, | ||
233 | }; | ||
234 | |||
235 | static const ASN1_TEMPLATE POLICYQUALINFO_seq_tt[] = { | ||
236 | { | ||
237 | .flags = 0, | ||
238 | .tag = 0, | ||
239 | .offset = offsetof(POLICYQUALINFO, pqualid), | ||
240 | .field_name = "pqualid", | ||
241 | .item = &ASN1_OBJECT_it, | ||
242 | }, | ||
243 | { | ||
244 | .flags = ASN1_TFLG_ADB_OID, | ||
245 | .tag = -1, | ||
246 | .offset = 0, | ||
247 | .field_name = "POLICYQUALINFO", | ||
248 | .item = (const ASN1_ITEM *)&POLICYQUALINFO_adb, | ||
249 | }, | ||
250 | }; | ||
251 | |||
252 | const ASN1_ITEM POLICYQUALINFO_it = { | ||
253 | .itype = ASN1_ITYPE_SEQUENCE, | ||
254 | .utype = V_ASN1_SEQUENCE, | ||
255 | .templates = POLICYQUALINFO_seq_tt, | ||
256 | .tcount = sizeof(POLICYQUALINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
257 | .funcs = NULL, | ||
258 | .size = sizeof(POLICYQUALINFO), | ||
259 | .sname = "POLICYQUALINFO", | ||
260 | }; | ||
169 | 261 | ||
170 | 262 | ||
171 | POLICYQUALINFO * | 263 | POLICYQUALINFO * |
@@ -193,10 +285,32 @@ POLICYQUALINFO_free(POLICYQUALINFO *a) | |||
193 | ASN1_item_free((ASN1_VALUE *)a, &POLICYQUALINFO_it); | 285 | ASN1_item_free((ASN1_VALUE *)a, &POLICYQUALINFO_it); |
194 | } | 286 | } |
195 | 287 | ||
196 | ASN1_SEQUENCE(USERNOTICE) = { | 288 | static const ASN1_TEMPLATE USERNOTICE_seq_tt[] = { |
197 | ASN1_OPT(USERNOTICE, noticeref, NOTICEREF), | 289 | { |
198 | ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT) | 290 | .flags = ASN1_TFLG_OPTIONAL, |
199 | } ASN1_SEQUENCE_END(USERNOTICE) | 291 | .tag = 0, |
292 | .offset = offsetof(USERNOTICE, noticeref), | ||
293 | .field_name = "noticeref", | ||
294 | .item = &NOTICEREF_it, | ||
295 | }, | ||
296 | { | ||
297 | .flags = ASN1_TFLG_OPTIONAL, | ||
298 | .tag = 0, | ||
299 | .offset = offsetof(USERNOTICE, exptext), | ||
300 | .field_name = "exptext", | ||
301 | .item = &DISPLAYTEXT_it, | ||
302 | }, | ||
303 | }; | ||
304 | |||
305 | const ASN1_ITEM USERNOTICE_it = { | ||
306 | .itype = ASN1_ITYPE_SEQUENCE, | ||
307 | .utype = V_ASN1_SEQUENCE, | ||
308 | .templates = USERNOTICE_seq_tt, | ||
309 | .tcount = sizeof(USERNOTICE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
310 | .funcs = NULL, | ||
311 | .size = sizeof(USERNOTICE), | ||
312 | .sname = "USERNOTICE", | ||
313 | }; | ||
200 | 314 | ||
201 | 315 | ||
202 | USERNOTICE * | 316 | USERNOTICE * |
@@ -224,10 +338,32 @@ USERNOTICE_free(USERNOTICE *a) | |||
224 | ASN1_item_free((ASN1_VALUE *)a, &USERNOTICE_it); | 338 | ASN1_item_free((ASN1_VALUE *)a, &USERNOTICE_it); |
225 | } | 339 | } |
226 | 340 | ||
227 | ASN1_SEQUENCE(NOTICEREF) = { | 341 | static const ASN1_TEMPLATE NOTICEREF_seq_tt[] = { |
228 | ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT), | 342 | { |
229 | ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER) | 343 | .flags = 0, |
230 | } ASN1_SEQUENCE_END(NOTICEREF) | 344 | .tag = 0, |
345 | .offset = offsetof(NOTICEREF, organization), | ||
346 | .field_name = "organization", | ||
347 | .item = &DISPLAYTEXT_it, | ||
348 | }, | ||
349 | { | ||
350 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
351 | .tag = 0, | ||
352 | .offset = offsetof(NOTICEREF, noticenos), | ||
353 | .field_name = "noticenos", | ||
354 | .item = &ASN1_INTEGER_it, | ||
355 | }, | ||
356 | }; | ||
357 | |||
358 | const ASN1_ITEM NOTICEREF_it = { | ||
359 | .itype = ASN1_ITYPE_SEQUENCE, | ||
360 | .utype = V_ASN1_SEQUENCE, | ||
361 | .templates = NOTICEREF_seq_tt, | ||
362 | .tcount = sizeof(NOTICEREF_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
363 | .funcs = NULL, | ||
364 | .size = sizeof(NOTICEREF), | ||
365 | .sname = "NOTICEREF", | ||
366 | }; | ||
231 | 367 | ||
232 | 368 | ||
233 | NOTICEREF * | 369 | NOTICEREF * |