summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509v3/v3_cpols.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_cpols.c')
-rw-r--r--src/lib/libcrypto/x509v3/v3_cpols.c190
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
95ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = 95static 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,
98ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES) 98 .offset = 0,
99 .field_name = "CERTIFICATEPOLICIES",
100 .item = &POLICYINFO_it,
101};
102
103const 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
101CERTIFICATEPOLICIES * 114CERTIFICATEPOLICIES *
@@ -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
126ASN1_SEQUENCE(POLICYINFO) = { 139static 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
156const 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
132POLICYINFO * 167POLICYINFO *
@@ -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
157ASN1_ADB_TEMPLATE(policydefault) = 192static 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
160ASN1_ADB(POLICYQUALINFO) = { 200static 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
165ASN1_SEQUENCE(POLICYQUALINFO) = { 225static 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
235static 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
252const 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
171POLICYQUALINFO * 263POLICYQUALINFO *
@@ -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
196ASN1_SEQUENCE(USERNOTICE) = { 288static 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
305const 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
202USERNOTICE * 316USERNOTICE *
@@ -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
227ASN1_SEQUENCE(NOTICEREF) = { 341static 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
358const 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
233NOTICEREF * 369NOTICEREF *