summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2015-07-25 16:00:14 +0000
committerjsing <>2015-07-25 16:00:14 +0000
commit9a71de96c8bcf60011a8623c652b850b80caa03f (patch)
treecd45d65e112b344fe18207993fd6fe834040b515 /src/lib
parent2065a85e8046724356556ea49150db9e5c0e42c6 (diff)
downloadopenbsd-9a71de96c8bcf60011a8623c652b850b80caa03f.tar.gz
openbsd-9a71de96c8bcf60011a8623c652b850b80caa03f.tar.bz2
openbsd-9a71de96c8bcf60011a8623c652b850b80caa03f.zip
Expand ASN.1 template macros - the generated assembly only differs by
changes to line numbers.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509v3/v3_akeya.c40
-rw-r--r--src/lib/libcrypto/x509v3/v3_bcons.c32
-rw-r--r--src/lib/libcrypto/x509v3/v3_cpols.c190
-rw-r--r--src/lib/libcrypto/x509v3/v3_crld.c153
-rw-r--r--src/lib/libcrypto/x509v3/v3_extku.c23
-rw-r--r--src/lib/libcrypto/x509v3/v3_genn.c168
-rw-r--r--src/lib/libcrypto/x509v3/v3_info.c53
-rw-r--r--src/lib/libcrypto/x509v3/v3_ncons.c54
-rw-r--r--src/lib/libcrypto/x509v3/v3_pcia.c63
-rw-r--r--src/lib/libcrypto/x509v3/v3_pcons.c24
-rw-r--r--src/lib/libcrypto/x509v3/v3_pku.c32
-rw-r--r--src/lib/libcrypto/x509v3/v3_pmaps.c53
-rw-r--r--src/lib/libcrypto/x509v3/v3_sxnet.c62
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_akeya.c40
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_bcons.c32
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_cpols.c190
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_crld.c153
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_extku.c23
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_genn.c168
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_info.c53
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_ncons.c54
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_pcia.c63
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_pcons.c24
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_pku.c32
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_pmaps.c53
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_sxnet.c62
26 files changed, 1612 insertions, 282 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_akeya.c b/src/lib/libcrypto/x509v3/v3_akeya.c
index 1848c0911e..83ef1b5838 100644
--- a/src/lib/libcrypto/x509v3/v3_akeya.c
+++ b/src/lib/libcrypto/x509v3/v3_akeya.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_akeya.c,v 1.6 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_akeya.c,v 1.7 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 */
@@ -63,11 +63,39 @@
63#include <openssl/conf.h> 63#include <openssl/conf.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66ASN1_SEQUENCE(AUTHORITY_KEYID) = { 66static const ASN1_TEMPLATE AUTHORITY_KEYID_seq_tt[] = {
67 ASN1_IMP_OPT(AUTHORITY_KEYID, keyid, ASN1_OCTET_STRING, 0), 67 {
68 ASN1_IMP_SEQUENCE_OF_OPT(AUTHORITY_KEYID, issuer, GENERAL_NAME, 1), 68 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
69 ASN1_IMP_OPT(AUTHORITY_KEYID, serial, ASN1_INTEGER, 2) 69 .tag = 0,
70} ASN1_SEQUENCE_END(AUTHORITY_KEYID) 70 .offset = offsetof(AUTHORITY_KEYID, keyid),
71 .field_name = "keyid",
72 .item = &ASN1_OCTET_STRING_it,
73 },
74 {
75 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
76 .tag = 1,
77 .offset = offsetof(AUTHORITY_KEYID, issuer),
78 .field_name = "issuer",
79 .item = &GENERAL_NAME_it,
80 },
81 {
82 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
83 .tag = 2,
84 .offset = offsetof(AUTHORITY_KEYID, serial),
85 .field_name = "serial",
86 .item = &ASN1_INTEGER_it,
87 },
88};
89
90const ASN1_ITEM AUTHORITY_KEYID_it = {
91 .itype = ASN1_ITYPE_SEQUENCE,
92 .utype = V_ASN1_SEQUENCE,
93 .templates = AUTHORITY_KEYID_seq_tt,
94 .tcount = sizeof(AUTHORITY_KEYID_seq_tt) / sizeof(ASN1_TEMPLATE),
95 .funcs = NULL,
96 .size = sizeof(AUTHORITY_KEYID),
97 .sname = "AUTHORITY_KEYID",
98};
71 99
72 100
73AUTHORITY_KEYID * 101AUTHORITY_KEYID *
diff --git a/src/lib/libcrypto/x509v3/v3_bcons.c b/src/lib/libcrypto/x509v3/v3_bcons.c
index fb3f6c7619..eea63b760a 100644
--- a/src/lib/libcrypto/x509v3/v3_bcons.c
+++ b/src/lib/libcrypto/x509v3/v3_bcons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_bcons.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_bcons.c,v 1.12 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 */
@@ -81,10 +81,32 @@ const X509V3_EXT_METHOD v3_bcons = {
81 NULL 81 NULL
82}; 82};
83 83
84ASN1_SEQUENCE(BASIC_CONSTRAINTS) = { 84static const ASN1_TEMPLATE BASIC_CONSTRAINTS_seq_tt[] = {
85 ASN1_OPT(BASIC_CONSTRAINTS, ca, ASN1_FBOOLEAN), 85 {
86 ASN1_OPT(BASIC_CONSTRAINTS, pathlen, ASN1_INTEGER) 86 .flags = ASN1_TFLG_OPTIONAL,
87} ASN1_SEQUENCE_END(BASIC_CONSTRAINTS) 87 .tag = 0,
88 .offset = offsetof(BASIC_CONSTRAINTS, ca),
89 .field_name = "ca",
90 .item = &ASN1_FBOOLEAN_it,
91 },
92 {
93 .flags = ASN1_TFLG_OPTIONAL,
94 .tag = 0,
95 .offset = offsetof(BASIC_CONSTRAINTS, pathlen),
96 .field_name = "pathlen",
97 .item = &ASN1_INTEGER_it,
98 },
99};
100
101const ASN1_ITEM BASIC_CONSTRAINTS_it = {
102 .itype = ASN1_ITYPE_SEQUENCE,
103 .utype = V_ASN1_SEQUENCE,
104 .templates = BASIC_CONSTRAINTS_seq_tt,
105 .tcount = sizeof(BASIC_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
106 .funcs = NULL,
107 .size = sizeof(BASIC_CONSTRAINTS),
108 .sname = "BASIC_CONSTRAINTS",
109};
88 110
89 111
90BASIC_CONSTRAINTS * 112BASIC_CONSTRAINTS *
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 *
diff --git a/src/lib/libcrypto/x509v3/v3_crld.c b/src/lib/libcrypto/x509v3/v3_crld.c
index b2e4370658..9c4017968d 100644
--- a/src/lib/libcrypto/x509v3/v3_crld.c
+++ b/src/lib/libcrypto/x509v3/v3_crld.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_crld.c,v 1.16 2015/02/14 15:19:04 miod Exp $ */ 1/* $OpenBSD: v3_crld.c,v 1.17 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 */
@@ -374,10 +374,34 @@ dpn_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
374} 374}
375 375
376 376
377ASN1_CHOICE_cb(DIST_POINT_NAME, dpn_cb) = { 377static const ASN1_AUX DIST_POINT_NAME_aux = {
378 ASN1_IMP_SEQUENCE_OF(DIST_POINT_NAME, name.fullname, GENERAL_NAME, 0), 378 .app_data = NULL,
379 .flags = 0,
380 .ref_offset = 0,
381 .ref_lock = 0,
382 .asn1_cb = dpn_cb,
383 .enc_offset = 0,
384};
385static const ASN1_TEMPLATE DIST_POINT_NAME_ch_tt[] = {
386 {
387 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF,
388 .tag = 0,
389 .offset = offsetof(DIST_POINT_NAME, name.fullname),
390 .field_name = "name.fullname",
391 .item = &GENERAL_NAME_it,
392 },
379 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1) 393 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1)
380} ASN1_CHOICE_END_cb(DIST_POINT_NAME, DIST_POINT_NAME, type) 394};
395
396const ASN1_ITEM DIST_POINT_NAME_it = {
397 .itype = ASN1_ITYPE_CHOICE,
398 .utype = offsetof(DIST_POINT_NAME, type),
399 .templates = DIST_POINT_NAME_ch_tt,
400 .tcount = sizeof(DIST_POINT_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
401 .funcs = &DIST_POINT_NAME_aux,
402 .size = sizeof(DIST_POINT_NAME),
403 .sname = "DIST_POINT_NAME",
404};
381 405
382 406
383 407
@@ -406,11 +430,39 @@ DIST_POINT_NAME_free(DIST_POINT_NAME *a)
406 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it); 430 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it);
407} 431}
408 432
409ASN1_SEQUENCE(DIST_POINT) = { 433static const ASN1_TEMPLATE DIST_POINT_seq_tt[] = {
410 ASN1_EXP_OPT(DIST_POINT, distpoint, DIST_POINT_NAME, 0), 434 {
411 ASN1_IMP_OPT(DIST_POINT, reasons, ASN1_BIT_STRING, 1), 435 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
412 ASN1_IMP_SEQUENCE_OF_OPT(DIST_POINT, CRLissuer, GENERAL_NAME, 2) 436 .tag = 0,
413} ASN1_SEQUENCE_END(DIST_POINT) 437 .offset = offsetof(DIST_POINT, distpoint),
438 .field_name = "distpoint",
439 .item = &DIST_POINT_NAME_it,
440 },
441 {
442 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
443 .tag = 1,
444 .offset = offsetof(DIST_POINT, reasons),
445 .field_name = "reasons",
446 .item = &ASN1_BIT_STRING_it,
447 },
448 {
449 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
450 .tag = 2,
451 .offset = offsetof(DIST_POINT, CRLissuer),
452 .field_name = "CRLissuer",
453 .item = &GENERAL_NAME_it,
454 },
455};
456
457const ASN1_ITEM DIST_POINT_it = {
458 .itype = ASN1_ITYPE_SEQUENCE,
459 .utype = V_ASN1_SEQUENCE,
460 .templates = DIST_POINT_seq_tt,
461 .tcount = sizeof(DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
462 .funcs = NULL,
463 .size = sizeof(DIST_POINT),
464 .sname = "DIST_POINT",
465};
414 466
415 467
416DIST_POINT * 468DIST_POINT *
@@ -438,10 +490,23 @@ DIST_POINT_free(DIST_POINT *a)
438 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it); 490 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it);
439} 491}
440 492
441ASN1_ITEM_TEMPLATE(CRL_DIST_POINTS) = 493static const ASN1_TEMPLATE CRL_DIST_POINTS_item_tt = {
442 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CRLDistributionPoints, 494 .flags = ASN1_TFLG_SEQUENCE_OF,
443 DIST_POINT) 495 .tag = 0,
444ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS) 496 .offset = 0,
497 .field_name = "CRLDistributionPoints",
498 .item = &DIST_POINT_it,
499};
500
501const ASN1_ITEM CRL_DIST_POINTS_it = {
502 .itype = ASN1_ITYPE_PRIMITIVE,
503 .utype = -1,
504 .templates = &CRL_DIST_POINTS_item_tt,
505 .tcount = 0,
506 .funcs = NULL,
507 .size = 0,
508 .sname = "CRL_DIST_POINTS",
509};
445 510
446 511
447CRL_DIST_POINTS * 512CRL_DIST_POINTS *
@@ -469,14 +534,60 @@ CRL_DIST_POINTS_free(CRL_DIST_POINTS *a)
469 ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it); 534 ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it);
470} 535}
471 536
472ASN1_SEQUENCE(ISSUING_DIST_POINT) = { 537static const ASN1_TEMPLATE ISSUING_DIST_POINT_seq_tt[] = {
473 ASN1_EXP_OPT(ISSUING_DIST_POINT, distpoint, DIST_POINT_NAME, 0), 538 {
474 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyuser, ASN1_FBOOLEAN, 1), 539 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
475 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyCA, ASN1_FBOOLEAN, 2), 540 .tag = 0,
476 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlysomereasons, ASN1_BIT_STRING, 3), 541 .offset = offsetof(ISSUING_DIST_POINT, distpoint),
477 ASN1_IMP_OPT(ISSUING_DIST_POINT, indirectCRL, ASN1_FBOOLEAN, 4), 542 .field_name = "distpoint",
478 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyattr, ASN1_FBOOLEAN, 5) 543 .item = &DIST_POINT_NAME_it,
479} ASN1_SEQUENCE_END(ISSUING_DIST_POINT) 544 },
545 {
546 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
547 .tag = 1,
548 .offset = offsetof(ISSUING_DIST_POINT, onlyuser),
549 .field_name = "onlyuser",
550 .item = &ASN1_FBOOLEAN_it,
551 },
552 {
553 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
554 .tag = 2,
555 .offset = offsetof(ISSUING_DIST_POINT, onlyCA),
556 .field_name = "onlyCA",
557 .item = &ASN1_FBOOLEAN_it,
558 },
559 {
560 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
561 .tag = 3,
562 .offset = offsetof(ISSUING_DIST_POINT, onlysomereasons),
563 .field_name = "onlysomereasons",
564 .item = &ASN1_BIT_STRING_it,
565 },
566 {
567 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
568 .tag = 4,
569 .offset = offsetof(ISSUING_DIST_POINT, indirectCRL),
570 .field_name = "indirectCRL",
571 .item = &ASN1_FBOOLEAN_it,
572 },
573 {
574 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
575 .tag = 5,
576 .offset = offsetof(ISSUING_DIST_POINT, onlyattr),
577 .field_name = "onlyattr",
578 .item = &ASN1_FBOOLEAN_it,
579 },
580};
581
582const ASN1_ITEM ISSUING_DIST_POINT_it = {
583 .itype = ASN1_ITYPE_SEQUENCE,
584 .utype = V_ASN1_SEQUENCE,
585 .templates = ISSUING_DIST_POINT_seq_tt,
586 .tcount = sizeof(ISSUING_DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
587 .funcs = NULL,
588 .size = sizeof(ISSUING_DIST_POINT),
589 .sname = "ISSUING_DIST_POINT",
590};
480 591
481 592
482ISSUING_DIST_POINT * 593ISSUING_DIST_POINT *
diff --git a/src/lib/libcrypto/x509v3/v3_extku.c b/src/lib/libcrypto/x509v3/v3_extku.c
index c37b65f7a5..2ee7594fed 100644
--- a/src/lib/libcrypto/x509v3/v3_extku.c
+++ b/src/lib/libcrypto/x509v3/v3_extku.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_extku.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_extku.c,v 1.12 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 */
@@ -91,10 +91,23 @@ const X509V3_EXT_METHOD v3_ocsp_accresp = {
91 NULL 91 NULL
92}; 92};
93 93
94ASN1_ITEM_TEMPLATE(EXTENDED_KEY_USAGE) = 94static const ASN1_TEMPLATE EXTENDED_KEY_USAGE_item_tt = {
95 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, EXTENDED_KEY_USAGE, 95 .flags = ASN1_TFLG_SEQUENCE_OF,
96 ASN1_OBJECT) 96 .tag = 0,
97ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE) 97 .offset = 0,
98 .field_name = "EXTENDED_KEY_USAGE",
99 .item = &ASN1_OBJECT_it,
100};
101
102const ASN1_ITEM EXTENDED_KEY_USAGE_it = {
103 .itype = ASN1_ITYPE_PRIMITIVE,
104 .utype = -1,
105 .templates = &EXTENDED_KEY_USAGE_item_tt,
106 .tcount = 0,
107 .funcs = NULL,
108 .size = 0,
109 .sname = "EXTENDED_KEY_USAGE",
110};
98 111
99 112
100EXTENDED_KEY_USAGE * 113EXTENDED_KEY_USAGE *
diff --git a/src/lib/libcrypto/x509v3/v3_genn.c b/src/lib/libcrypto/x509v3/v3_genn.c
index 25d7f447d2..9943fd33d2 100644
--- a/src/lib/libcrypto/x509v3/v3_genn.c
+++ b/src/lib/libcrypto/x509v3/v3_genn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_genn.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_genn.c,v 1.11 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 */
@@ -63,11 +63,33 @@
63#include <openssl/conf.h> 63#include <openssl/conf.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66ASN1_SEQUENCE(OTHERNAME) = { 66static const ASN1_TEMPLATE OTHERNAME_seq_tt[] = {
67 ASN1_SIMPLE(OTHERNAME, type_id, ASN1_OBJECT), 67 {
68 .flags = 0,
69 .tag = 0,
70 .offset = offsetof(OTHERNAME, type_id),
71 .field_name = "type_id",
72 .item = &ASN1_OBJECT_it,
73 },
68 /* Maybe have a true ANY DEFINED BY later */ 74 /* Maybe have a true ANY DEFINED BY later */
69 ASN1_EXP(OTHERNAME, value, ASN1_ANY, 0) 75 {
70} ASN1_SEQUENCE_END(OTHERNAME) 76 .flags = ASN1_TFLG_EXPLICIT,
77 .tag = 0,
78 .offset = offsetof(OTHERNAME, value),
79 .field_name = "value",
80 .item = &ASN1_ANY_it,
81 },
82};
83
84const ASN1_ITEM OTHERNAME_it = {
85 .itype = ASN1_ITYPE_SEQUENCE,
86 .utype = V_ASN1_SEQUENCE,
87 .templates = OTHERNAME_seq_tt,
88 .tcount = sizeof(OTHERNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
89 .funcs = NULL,
90 .size = sizeof(OTHERNAME),
91 .sname = "OTHERNAME",
92};
71 93
72 94
73OTHERNAME * 95OTHERNAME *
@@ -95,10 +117,32 @@ OTHERNAME_free(OTHERNAME *a)
95 ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it); 117 ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it);
96} 118}
97 119
98ASN1_SEQUENCE(EDIPARTYNAME) = { 120static const ASN1_TEMPLATE EDIPARTYNAME_seq_tt[] = {
99 ASN1_IMP_OPT(EDIPARTYNAME, nameAssigner, DIRECTORYSTRING, 0), 121 {
100 ASN1_IMP_OPT(EDIPARTYNAME, partyName, DIRECTORYSTRING, 1) 122 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
101} ASN1_SEQUENCE_END(EDIPARTYNAME) 123 .tag = 0,
124 .offset = offsetof(EDIPARTYNAME, nameAssigner),
125 .field_name = "nameAssigner",
126 .item = &DIRECTORYSTRING_it,
127 },
128 {
129 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
130 .tag = 1,
131 .offset = offsetof(EDIPARTYNAME, partyName),
132 .field_name = "partyName",
133 .item = &DIRECTORYSTRING_it,
134 },
135};
136
137const ASN1_ITEM EDIPARTYNAME_it = {
138 .itype = ASN1_ITYPE_SEQUENCE,
139 .utype = V_ASN1_SEQUENCE,
140 .templates = EDIPARTYNAME_seq_tt,
141 .tcount = sizeof(EDIPARTYNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
142 .funcs = NULL,
143 .size = sizeof(EDIPARTYNAME),
144 .sname = "EDIPARTYNAME",
145};
102 146
103 147
104EDIPARTYNAME * 148EDIPARTYNAME *
@@ -126,19 +170,83 @@ EDIPARTYNAME_free(EDIPARTYNAME *a)
126 ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it); 170 ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it);
127} 171}
128 172
129ASN1_CHOICE(GENERAL_NAME) = { 173static const ASN1_TEMPLATE GENERAL_NAME_ch_tt[] = {
130 ASN1_IMP(GENERAL_NAME, d.otherName, OTHERNAME, GEN_OTHERNAME), 174 {
131 ASN1_IMP(GENERAL_NAME, d.rfc822Name, ASN1_IA5STRING, GEN_EMAIL), 175 .flags = ASN1_TFLG_IMPLICIT,
132 ASN1_IMP(GENERAL_NAME, d.dNSName, ASN1_IA5STRING, GEN_DNS), 176 .tag = GEN_OTHERNAME,
177 .offset = offsetof(GENERAL_NAME, d.otherName),
178 .field_name = "d.otherName",
179 .item = &OTHERNAME_it,
180 },
181 {
182 .flags = ASN1_TFLG_IMPLICIT,
183 .tag = GEN_EMAIL,
184 .offset = offsetof(GENERAL_NAME, d.rfc822Name),
185 .field_name = "d.rfc822Name",
186 .item = &ASN1_IA5STRING_it,
187 },
188 {
189 .flags = ASN1_TFLG_IMPLICIT,
190 .tag = GEN_DNS,
191 .offset = offsetof(GENERAL_NAME, d.dNSName),
192 .field_name = "d.dNSName",
193 .item = &ASN1_IA5STRING_it,
194 },
133 /* Don't decode this */ 195 /* Don't decode this */
134 ASN1_IMP(GENERAL_NAME, d.x400Address, ASN1_SEQUENCE, GEN_X400), 196 {
197 .flags = ASN1_TFLG_IMPLICIT,
198 .tag = GEN_X400,
199 .offset = offsetof(GENERAL_NAME, d.x400Address),
200 .field_name = "d.x400Address",
201 .item = &ASN1_SEQUENCE_it,
202 },
135 /* X509_NAME is a CHOICE type so use EXPLICIT */ 203 /* X509_NAME is a CHOICE type so use EXPLICIT */
136 ASN1_EXP(GENERAL_NAME, d.directoryName, X509_NAME, GEN_DIRNAME), 204 {
137 ASN1_IMP(GENERAL_NAME, d.ediPartyName, EDIPARTYNAME, GEN_EDIPARTY), 205 .flags = ASN1_TFLG_EXPLICIT,
138 ASN1_IMP(GENERAL_NAME, d.uniformResourceIdentifier, ASN1_IA5STRING, GEN_URI), 206 .tag = GEN_DIRNAME,
139 ASN1_IMP(GENERAL_NAME, d.iPAddress, ASN1_OCTET_STRING, GEN_IPADD), 207 .offset = offsetof(GENERAL_NAME, d.directoryName),
140 ASN1_IMP(GENERAL_NAME, d.registeredID, ASN1_OBJECT, GEN_RID) 208 .field_name = "d.directoryName",
141} ASN1_CHOICE_END(GENERAL_NAME) 209 .item = &X509_NAME_it,
210 },
211 {
212 .flags = ASN1_TFLG_IMPLICIT,
213 .tag = GEN_EDIPARTY,
214 .offset = offsetof(GENERAL_NAME, d.ediPartyName),
215 .field_name = "d.ediPartyName",
216 .item = &EDIPARTYNAME_it,
217 },
218 {
219 .flags = ASN1_TFLG_IMPLICIT,
220 .tag = GEN_URI,
221 .offset = offsetof(GENERAL_NAME, d.uniformResourceIdentifier),
222 .field_name = "d.uniformResourceIdentifier",
223 .item = &ASN1_IA5STRING_it,
224 },
225 {
226 .flags = ASN1_TFLG_IMPLICIT,
227 .tag = GEN_IPADD,
228 .offset = offsetof(GENERAL_NAME, d.iPAddress),
229 .field_name = "d.iPAddress",
230 .item = &ASN1_OCTET_STRING_it,
231 },
232 {
233 .flags = ASN1_TFLG_IMPLICIT,
234 .tag = GEN_RID,
235 .offset = offsetof(GENERAL_NAME, d.registeredID),
236 .field_name = "d.registeredID",
237 .item = &ASN1_OBJECT_it,
238 },
239};
240
241const ASN1_ITEM GENERAL_NAME_it = {
242 .itype = ASN1_ITYPE_CHOICE,
243 .utype = offsetof(GENERAL_NAME, type),
244 .templates = GENERAL_NAME_ch_tt,
245 .tcount = sizeof(GENERAL_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
246 .funcs = NULL,
247 .size = sizeof(GENERAL_NAME),
248 .sname = "GENERAL_NAME",
249};
142 250
143 251
144GENERAL_NAME * 252GENERAL_NAME *
@@ -166,9 +274,23 @@ GENERAL_NAME_free(GENERAL_NAME *a)
166 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it); 274 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it);
167} 275}
168 276
169ASN1_ITEM_TEMPLATE(GENERAL_NAMES) = 277static const ASN1_TEMPLATE GENERAL_NAMES_item_tt = {
170 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, GENERAL_NAME) 278 .flags = ASN1_TFLG_SEQUENCE_OF,
171ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES) 279 .tag = 0,
280 .offset = 0,
281 .field_name = "GeneralNames",
282 .item = &GENERAL_NAME_it,
283};
284
285const ASN1_ITEM GENERAL_NAMES_it = {
286 .itype = ASN1_ITYPE_PRIMITIVE,
287 .utype = -1,
288 .templates = &GENERAL_NAMES_item_tt,
289 .tcount = 0,
290 .funcs = NULL,
291 .size = 0,
292 .sname = "GENERAL_NAMES",
293};
172 294
173 295
174GENERAL_NAMES * 296GENERAL_NAMES *
diff --git a/src/lib/libcrypto/x509v3/v3_info.c b/src/lib/libcrypto/x509v3/v3_info.c
index d9fa133308..795a7bb6ff 100644
--- a/src/lib/libcrypto/x509v3/v3_info.c
+++ b/src/lib/libcrypto/x509v3/v3_info.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_info.c,v 1.21 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_info.c,v 1.22 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 */
@@ -93,10 +93,32 @@ const X509V3_EXT_METHOD v3_sinfo = {
93 NULL 93 NULL
94}; 94};
95 95
96ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { 96static const ASN1_TEMPLATE ACCESS_DESCRIPTION_seq_tt[] = {
97 ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), 97 {
98 ASN1_SIMPLE(ACCESS_DESCRIPTION, location, GENERAL_NAME) 98 .flags = 0,
99} ASN1_SEQUENCE_END(ACCESS_DESCRIPTION) 99 .tag = 0,
100 .offset = offsetof(ACCESS_DESCRIPTION, method),
101 .field_name = "method",
102 .item = &ASN1_OBJECT_it,
103 },
104 {
105 .flags = 0,
106 .tag = 0,
107 .offset = offsetof(ACCESS_DESCRIPTION, location),
108 .field_name = "location",
109 .item = &GENERAL_NAME_it,
110 },
111};
112
113const ASN1_ITEM ACCESS_DESCRIPTION_it = {
114 .itype = ASN1_ITYPE_SEQUENCE,
115 .utype = V_ASN1_SEQUENCE,
116 .templates = ACCESS_DESCRIPTION_seq_tt,
117 .tcount = sizeof(ACCESS_DESCRIPTION_seq_tt) / sizeof(ASN1_TEMPLATE),
118 .funcs = NULL,
119 .size = sizeof(ACCESS_DESCRIPTION),
120 .sname = "ACCESS_DESCRIPTION",
121};
100 122
101 123
102ACCESS_DESCRIPTION * 124ACCESS_DESCRIPTION *
@@ -124,10 +146,23 @@ ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a)
124 ASN1_item_free((ASN1_VALUE *)a, &ACCESS_DESCRIPTION_it); 146 ASN1_item_free((ASN1_VALUE *)a, &ACCESS_DESCRIPTION_it);
125} 147}
126 148
127ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = 149static const ASN1_TEMPLATE AUTHORITY_INFO_ACCESS_item_tt = {
128 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, 150 .flags = ASN1_TFLG_SEQUENCE_OF,
129 ACCESS_DESCRIPTION) 151 .tag = 0,
130ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) 152 .offset = 0,
153 .field_name = "GeneralNames",
154 .item = &ACCESS_DESCRIPTION_it,
155};
156
157const ASN1_ITEM AUTHORITY_INFO_ACCESS_it = {
158 .itype = ASN1_ITYPE_PRIMITIVE,
159 .utype = -1,
160 .templates = &AUTHORITY_INFO_ACCESS_item_tt,
161 .tcount = 0,
162 .funcs = NULL,
163 .size = 0,
164 .sname = "AUTHORITY_INFO_ACCESS",
165};
131 166
132 167
133AUTHORITY_INFO_ACCESS * 168AUTHORITY_INFO_ACCESS *
diff --git a/src/lib/libcrypto/x509v3/v3_ncons.c b/src/lib/libcrypto/x509v3/v3_ncons.c
index 7cb272a58f..e154b6ba18 100644
--- a/src/lib/libcrypto/x509v3/v3_ncons.c
+++ b/src/lib/libcrypto/x509v3/v3_ncons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_ncons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ 1/* $OpenBSD: v3_ncons.c,v 1.7 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. 3 * project.
4 */ 4 */
@@ -89,18 +89,56 @@ const X509V3_EXT_METHOD v3_name_constraints = {
89 NULL 89 NULL
90}; 90};
91 91
92ASN1_SEQUENCE(GENERAL_SUBTREE) = { 92static const ASN1_TEMPLATE GENERAL_SUBTREE_seq_tt[] = {
93 ASN1_SIMPLE(GENERAL_SUBTREE, base, GENERAL_NAME), 93 {
94 ASN1_IMP_OPT(GENERAL_SUBTREE, minimum, ASN1_INTEGER, 0), 94 .flags = 0,
95 ASN1_IMP_OPT(GENERAL_SUBTREE, maximum, ASN1_INTEGER, 1) 95 .tag = 0,
96} ASN1_SEQUENCE_END(GENERAL_SUBTREE) 96 .offset = offsetof(GENERAL_SUBTREE, base),
97 .field_name = "base",
98 .item = &GENERAL_NAME_it,
99 },
100 {
101 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
102 .tag = 0,
103 .offset = offsetof(GENERAL_SUBTREE, minimum),
104 .field_name = "minimum",
105 .item = &ASN1_INTEGER_it,
106 },
107 {
108 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
109 .tag = 1,
110 .offset = offsetof(GENERAL_SUBTREE, maximum),
111 .field_name = "maximum",
112 .item = &ASN1_INTEGER_it,
113 },
114};
115
116const ASN1_ITEM GENERAL_SUBTREE_it = {
117 .itype = ASN1_ITYPE_SEQUENCE,
118 .utype = V_ASN1_SEQUENCE,
119 .templates = GENERAL_SUBTREE_seq_tt,
120 .tcount = sizeof(GENERAL_SUBTREE_seq_tt) / sizeof(ASN1_TEMPLATE),
121 .funcs = NULL,
122 .size = sizeof(GENERAL_SUBTREE),
123 .sname = "GENERAL_SUBTREE",
124};
97 125
98ASN1_SEQUENCE(NAME_CONSTRAINTS) = { 126static const ASN1_TEMPLATE NAME_CONSTRAINTS_seq_tt[] = {
99 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees, 127 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees,
100 GENERAL_SUBTREE, 0), 128 GENERAL_SUBTREE, 0),
101 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees, 129 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees,
102 GENERAL_SUBTREE, 1), 130 GENERAL_SUBTREE, 1),
103} ASN1_SEQUENCE_END(NAME_CONSTRAINTS) 131};
132
133const ASN1_ITEM NAME_CONSTRAINTS_it = {
134 .itype = ASN1_ITYPE_SEQUENCE,
135 .utype = V_ASN1_SEQUENCE,
136 .templates = NAME_CONSTRAINTS_seq_tt,
137 .tcount = sizeof(NAME_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
138 .funcs = NULL,
139 .size = sizeof(NAME_CONSTRAINTS),
140 .sname = "NAME_CONSTRAINTS",
141};
104 142
105 143
106 144
diff --git a/src/lib/libcrypto/x509v3/v3_pcia.c b/src/lib/libcrypto/x509v3/v3_pcia.c
index 07e294e633..f9ec02c00a 100644
--- a/src/lib/libcrypto/x509v3/v3_pcia.c
+++ b/src/lib/libcrypto/x509v3/v3_pcia.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pcia.c,v 1.5 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_pcia.c,v 1.6 2015/07/25 16:00:14 jsing Exp $ */
2/* Contributed to the OpenSSL Project 2004 2/* Contributed to the OpenSSL Project 2004
3 * by Richard Levitte (richard@levitte.org) 3 * by Richard Levitte (richard@levitte.org)
4 */ 4 */
@@ -38,10 +38,32 @@
38#include <openssl/asn1t.h> 38#include <openssl/asn1t.h>
39#include <openssl/x509v3.h> 39#include <openssl/x509v3.h>
40 40
41ASN1_SEQUENCE(PROXY_POLICY) = { 41static const ASN1_TEMPLATE PROXY_POLICY_seq_tt[] = {
42 ASN1_SIMPLE(PROXY_POLICY, policyLanguage, ASN1_OBJECT), 42 {
43 ASN1_OPT(PROXY_POLICY, policy, ASN1_OCTET_STRING) 43 .flags = 0,
44} ASN1_SEQUENCE_END(PROXY_POLICY) 44 .tag = 0,
45 .offset = offsetof(PROXY_POLICY, policyLanguage),
46 .field_name = "policyLanguage",
47 .item = &ASN1_OBJECT_it,
48 },
49 {
50 .flags = ASN1_TFLG_OPTIONAL,
51 .tag = 0,
52 .offset = offsetof(PROXY_POLICY, policy),
53 .field_name = "policy",
54 .item = &ASN1_OCTET_STRING_it,
55 },
56};
57
58const ASN1_ITEM PROXY_POLICY_it = {
59 .itype = ASN1_ITYPE_SEQUENCE,
60 .utype = V_ASN1_SEQUENCE,
61 .templates = PROXY_POLICY_seq_tt,
62 .tcount = sizeof(PROXY_POLICY_seq_tt) / sizeof(ASN1_TEMPLATE),
63 .funcs = NULL,
64 .size = sizeof(PROXY_POLICY),
65 .sname = "PROXY_POLICY",
66};
45 67
46 68
47PROXY_POLICY * 69PROXY_POLICY *
@@ -69,11 +91,32 @@ PROXY_POLICY_free(PROXY_POLICY *a)
69 ASN1_item_free((ASN1_VALUE *)a, &PROXY_POLICY_it); 91 ASN1_item_free((ASN1_VALUE *)a, &PROXY_POLICY_it);
70} 92}
71 93
72ASN1_SEQUENCE(PROXY_CERT_INFO_EXTENSION) = { 94static const ASN1_TEMPLATE PROXY_CERT_INFO_EXTENSION_seq_tt[] = {
73 ASN1_OPT(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint, 95 {
74 ASN1_INTEGER), 96 .flags = ASN1_TFLG_OPTIONAL,
75 ASN1_SIMPLE(PROXY_CERT_INFO_EXTENSION, proxyPolicy, PROXY_POLICY) 97 .tag = 0,
76} ASN1_SEQUENCE_END(PROXY_CERT_INFO_EXTENSION) 98 .offset = offsetof(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint),
99 .field_name = "pcPathLengthConstraint",
100 .item = &ASN1_INTEGER_it,
101 },
102 {
103 .flags = 0,
104 .tag = 0,
105 .offset = offsetof(PROXY_CERT_INFO_EXTENSION, proxyPolicy),
106 .field_name = "proxyPolicy",
107 .item = &PROXY_POLICY_it,
108 },
109};
110
111const ASN1_ITEM PROXY_CERT_INFO_EXTENSION_it = {
112 .itype = ASN1_ITYPE_SEQUENCE,
113 .utype = V_ASN1_SEQUENCE,
114 .templates = PROXY_CERT_INFO_EXTENSION_seq_tt,
115 .tcount = sizeof(PROXY_CERT_INFO_EXTENSION_seq_tt) / sizeof(ASN1_TEMPLATE),
116 .funcs = NULL,
117 .size = sizeof(PROXY_CERT_INFO_EXTENSION),
118 .sname = "PROXY_CERT_INFO_EXTENSION",
119};
77 120
78 121
79PROXY_CERT_INFO_EXTENSION * 122PROXY_CERT_INFO_EXTENSION *
diff --git a/src/lib/libcrypto/x509v3/v3_pcons.c b/src/lib/libcrypto/x509v3/v3_pcons.c
index 075efd8851..7bece06271 100644
--- a/src/lib/libcrypto/x509v3/v3_pcons.c
+++ b/src/lib/libcrypto/x509v3/v3_pcons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pcons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ 1/* $OpenBSD: v3_pcons.c,v 1.7 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. 3 * project.
4 */ 4 */
@@ -82,11 +82,27 @@ const X509V3_EXT_METHOD v3_policy_constraints = {
82 NULL 82 NULL
83}; 83};
84 84
85ASN1_SEQUENCE(POLICY_CONSTRAINTS) = { 85static const ASN1_TEMPLATE POLICY_CONSTRAINTS_seq_tt[] = {
86 ASN1_IMP_OPT(POLICY_CONSTRAINTS, requireExplicitPolicy, 86 ASN1_IMP_OPT(POLICY_CONSTRAINTS, requireExplicitPolicy,
87 ASN1_INTEGER, 0), 87 ASN1_INTEGER, 0),
88 ASN1_IMP_OPT(POLICY_CONSTRAINTS, inhibitPolicyMapping, ASN1_INTEGER, 1) 88 {
89} ASN1_SEQUENCE_END(POLICY_CONSTRAINTS) 89 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
90 .tag = 1,
91 .offset = offsetof(POLICY_CONSTRAINTS, inhibitPolicyMapping),
92 .field_name = "inhibitPolicyMapping",
93 .item = &ASN1_INTEGER_it,
94 },
95};
96
97const ASN1_ITEM POLICY_CONSTRAINTS_it = {
98 .itype = ASN1_ITYPE_SEQUENCE,
99 .utype = V_ASN1_SEQUENCE,
100 .templates = POLICY_CONSTRAINTS_seq_tt,
101 .tcount = sizeof(POLICY_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
102 .funcs = NULL,
103 .size = sizeof(POLICY_CONSTRAINTS),
104 .sname = "POLICY_CONSTRAINTS",
105};
90 106
91 107
92POLICY_CONSTRAINTS * 108POLICY_CONSTRAINTS *
diff --git a/src/lib/libcrypto/x509v3/v3_pku.c b/src/lib/libcrypto/x509v3/v3_pku.c
index 4bce07f09c..360e3daa58 100644
--- a/src/lib/libcrypto/x509v3/v3_pku.c
+++ b/src/lib/libcrypto/x509v3/v3_pku.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pku.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_pku.c,v 1.11 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 */
@@ -75,10 +75,32 @@ const X509V3_EXT_METHOD v3_pkey_usage_period = {
75 NULL 75 NULL
76}; 76};
77 77
78ASN1_SEQUENCE(PKEY_USAGE_PERIOD) = { 78static const ASN1_TEMPLATE PKEY_USAGE_PERIOD_seq_tt[] = {
79 ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notBefore, ASN1_GENERALIZEDTIME, 0), 79 {
80 ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notAfter, ASN1_GENERALIZEDTIME, 1) 80 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
81} ASN1_SEQUENCE_END(PKEY_USAGE_PERIOD) 81 .tag = 0,
82 .offset = offsetof(PKEY_USAGE_PERIOD, notBefore),
83 .field_name = "notBefore",
84 .item = &ASN1_GENERALIZEDTIME_it,
85 },
86 {
87 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
88 .tag = 1,
89 .offset = offsetof(PKEY_USAGE_PERIOD, notAfter),
90 .field_name = "notAfter",
91 .item = &ASN1_GENERALIZEDTIME_it,
92 },
93};
94
95const ASN1_ITEM PKEY_USAGE_PERIOD_it = {
96 .itype = ASN1_ITYPE_SEQUENCE,
97 .utype = V_ASN1_SEQUENCE,
98 .templates = PKEY_USAGE_PERIOD_seq_tt,
99 .tcount = sizeof(PKEY_USAGE_PERIOD_seq_tt) / sizeof(ASN1_TEMPLATE),
100 .funcs = NULL,
101 .size = sizeof(PKEY_USAGE_PERIOD),
102 .sname = "PKEY_USAGE_PERIOD",
103};
82 104
83 105
84PKEY_USAGE_PERIOD * 106PKEY_USAGE_PERIOD *
diff --git a/src/lib/libcrypto/x509v3/v3_pmaps.c b/src/lib/libcrypto/x509v3/v3_pmaps.c
index e8099d7f12..32ab04eda9 100644
--- a/src/lib/libcrypto/x509v3/v3_pmaps.c
+++ b/src/lib/libcrypto/x509v3/v3_pmaps.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pmaps.c,v 1.7 2015/02/13 01:16:26 beck Exp $ */ 1/* $OpenBSD: v3_pmaps.c,v 1.8 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. 3 * project.
4 */ 4 */
@@ -80,15 +80,50 @@ const X509V3_EXT_METHOD v3_policy_mappings = {
80 NULL 80 NULL
81}; 81};
82 82
83ASN1_SEQUENCE(POLICY_MAPPING) = { 83static const ASN1_TEMPLATE POLICY_MAPPING_seq_tt[] = {
84 ASN1_SIMPLE(POLICY_MAPPING, issuerDomainPolicy, ASN1_OBJECT), 84 {
85 ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) 85 .flags = 0,
86} ASN1_SEQUENCE_END(POLICY_MAPPING) 86 .tag = 0,
87 .offset = offsetof(POLICY_MAPPING, issuerDomainPolicy),
88 .field_name = "issuerDomainPolicy",
89 .item = &ASN1_OBJECT_it,
90 },
91 {
92 .flags = 0,
93 .tag = 0,
94 .offset = offsetof(POLICY_MAPPING, subjectDomainPolicy),
95 .field_name = "subjectDomainPolicy",
96 .item = &ASN1_OBJECT_it,
97 },
98};
99
100const ASN1_ITEM POLICY_MAPPING_it = {
101 .itype = ASN1_ITYPE_SEQUENCE,
102 .utype = V_ASN1_SEQUENCE,
103 .templates = POLICY_MAPPING_seq_tt,
104 .tcount = sizeof(POLICY_MAPPING_seq_tt) / sizeof(ASN1_TEMPLATE),
105 .funcs = NULL,
106 .size = sizeof(POLICY_MAPPING),
107 .sname = "POLICY_MAPPING",
108};
87 109
88ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = 110static const ASN1_TEMPLATE POLICY_MAPPINGS_item_tt = {
89ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, 111 .flags = ASN1_TFLG_SEQUENCE_OF,
90 POLICY_MAPPING) 112 .tag = 0,
91ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) 113 .offset = 0,
114 .field_name = "POLICY_MAPPINGS",
115 .item = &POLICY_MAPPING_it,
116};
117
118const ASN1_ITEM POLICY_MAPPINGS_it = {
119 .itype = ASN1_ITYPE_PRIMITIVE,
120 .utype = -1,
121 .templates = &POLICY_MAPPINGS_item_tt,
122 .tcount = 0,
123 .funcs = NULL,
124 .size = 0,
125 .sname = "POLICY_MAPPINGS",
126};
92 127
93 128
94POLICY_MAPPING * 129POLICY_MAPPING *
diff --git a/src/lib/libcrypto/x509v3/v3_sxnet.c b/src/lib/libcrypto/x509v3/v3_sxnet.c
index 7029aad916..d87dd34339 100644
--- a/src/lib/libcrypto/x509v3/v3_sxnet.c
+++ b/src/lib/libcrypto/x509v3/v3_sxnet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_sxnet.c,v 1.13 2015/02/10 08:33:10 jsing Exp $ */ 1/* $OpenBSD: v3_sxnet.c,v 1.14 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 */
@@ -90,10 +90,32 @@ const X509V3_EXT_METHOD v3_sxnet = {
90 NULL 90 NULL
91}; 91};
92 92
93ASN1_SEQUENCE(SXNETID) = { 93static const ASN1_TEMPLATE SXNETID_seq_tt[] = {
94 ASN1_SIMPLE(SXNETID, zone, ASN1_INTEGER), 94 {
95 ASN1_SIMPLE(SXNETID, user, ASN1_OCTET_STRING) 95 .flags = 0,
96} ASN1_SEQUENCE_END(SXNETID) 96 .tag = 0,
97 .offset = offsetof(SXNETID, zone),
98 .field_name = "zone",
99 .item = &ASN1_INTEGER_it,
100 },
101 {
102 .flags = 0,
103 .tag = 0,
104 .offset = offsetof(SXNETID, user),
105 .field_name = "user",
106 .item = &ASN1_OCTET_STRING_it,
107 },
108};
109
110const ASN1_ITEM SXNETID_it = {
111 .itype = ASN1_ITYPE_SEQUENCE,
112 .utype = V_ASN1_SEQUENCE,
113 .templates = SXNETID_seq_tt,
114 .tcount = sizeof(SXNETID_seq_tt) / sizeof(ASN1_TEMPLATE),
115 .funcs = NULL,
116 .size = sizeof(SXNETID),
117 .sname = "SXNETID",
118};
97 119
98 120
99SXNETID * 121SXNETID *
@@ -121,10 +143,32 @@ SXNETID_free(SXNETID *a)
121 ASN1_item_free((ASN1_VALUE *)a, &SXNETID_it); 143 ASN1_item_free((ASN1_VALUE *)a, &SXNETID_it);
122} 144}
123 145
124ASN1_SEQUENCE(SXNET) = { 146static const ASN1_TEMPLATE SXNET_seq_tt[] = {
125 ASN1_SIMPLE(SXNET, version, ASN1_INTEGER), 147 {
126 ASN1_SEQUENCE_OF(SXNET, ids, SXNETID) 148 .flags = 0,
127} ASN1_SEQUENCE_END(SXNET) 149 .tag = 0,
150 .offset = offsetof(SXNET, version),
151 .field_name = "version",
152 .item = &ASN1_INTEGER_it,
153 },
154 {
155 .flags = ASN1_TFLG_SEQUENCE_OF,
156 .tag = 0,
157 .offset = offsetof(SXNET, ids),
158 .field_name = "ids",
159 .item = &SXNETID_it,
160 },
161};
162
163const ASN1_ITEM SXNET_it = {
164 .itype = ASN1_ITYPE_SEQUENCE,
165 .utype = V_ASN1_SEQUENCE,
166 .templates = SXNET_seq_tt,
167 .tcount = sizeof(SXNET_seq_tt) / sizeof(ASN1_TEMPLATE),
168 .funcs = NULL,
169 .size = sizeof(SXNET),
170 .sname = "SXNET",
171};
128 172
129 173
130SXNET * 174SXNET *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_akeya.c b/src/lib/libssl/src/crypto/x509v3/v3_akeya.c
index 1848c0911e..83ef1b5838 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_akeya.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_akeya.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_akeya.c,v 1.6 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_akeya.c,v 1.7 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 */
@@ -63,11 +63,39 @@
63#include <openssl/conf.h> 63#include <openssl/conf.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66ASN1_SEQUENCE(AUTHORITY_KEYID) = { 66static const ASN1_TEMPLATE AUTHORITY_KEYID_seq_tt[] = {
67 ASN1_IMP_OPT(AUTHORITY_KEYID, keyid, ASN1_OCTET_STRING, 0), 67 {
68 ASN1_IMP_SEQUENCE_OF_OPT(AUTHORITY_KEYID, issuer, GENERAL_NAME, 1), 68 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
69 ASN1_IMP_OPT(AUTHORITY_KEYID, serial, ASN1_INTEGER, 2) 69 .tag = 0,
70} ASN1_SEQUENCE_END(AUTHORITY_KEYID) 70 .offset = offsetof(AUTHORITY_KEYID, keyid),
71 .field_name = "keyid",
72 .item = &ASN1_OCTET_STRING_it,
73 },
74 {
75 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
76 .tag = 1,
77 .offset = offsetof(AUTHORITY_KEYID, issuer),
78 .field_name = "issuer",
79 .item = &GENERAL_NAME_it,
80 },
81 {
82 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
83 .tag = 2,
84 .offset = offsetof(AUTHORITY_KEYID, serial),
85 .field_name = "serial",
86 .item = &ASN1_INTEGER_it,
87 },
88};
89
90const ASN1_ITEM AUTHORITY_KEYID_it = {
91 .itype = ASN1_ITYPE_SEQUENCE,
92 .utype = V_ASN1_SEQUENCE,
93 .templates = AUTHORITY_KEYID_seq_tt,
94 .tcount = sizeof(AUTHORITY_KEYID_seq_tt) / sizeof(ASN1_TEMPLATE),
95 .funcs = NULL,
96 .size = sizeof(AUTHORITY_KEYID),
97 .sname = "AUTHORITY_KEYID",
98};
71 99
72 100
73AUTHORITY_KEYID * 101AUTHORITY_KEYID *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_bcons.c b/src/lib/libssl/src/crypto/x509v3/v3_bcons.c
index fb3f6c7619..eea63b760a 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_bcons.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_bcons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_bcons.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_bcons.c,v 1.12 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 */
@@ -81,10 +81,32 @@ const X509V3_EXT_METHOD v3_bcons = {
81 NULL 81 NULL
82}; 82};
83 83
84ASN1_SEQUENCE(BASIC_CONSTRAINTS) = { 84static const ASN1_TEMPLATE BASIC_CONSTRAINTS_seq_tt[] = {
85 ASN1_OPT(BASIC_CONSTRAINTS, ca, ASN1_FBOOLEAN), 85 {
86 ASN1_OPT(BASIC_CONSTRAINTS, pathlen, ASN1_INTEGER) 86 .flags = ASN1_TFLG_OPTIONAL,
87} ASN1_SEQUENCE_END(BASIC_CONSTRAINTS) 87 .tag = 0,
88 .offset = offsetof(BASIC_CONSTRAINTS, ca),
89 .field_name = "ca",
90 .item = &ASN1_FBOOLEAN_it,
91 },
92 {
93 .flags = ASN1_TFLG_OPTIONAL,
94 .tag = 0,
95 .offset = offsetof(BASIC_CONSTRAINTS, pathlen),
96 .field_name = "pathlen",
97 .item = &ASN1_INTEGER_it,
98 },
99};
100
101const ASN1_ITEM BASIC_CONSTRAINTS_it = {
102 .itype = ASN1_ITYPE_SEQUENCE,
103 .utype = V_ASN1_SEQUENCE,
104 .templates = BASIC_CONSTRAINTS_seq_tt,
105 .tcount = sizeof(BASIC_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
106 .funcs = NULL,
107 .size = sizeof(BASIC_CONSTRAINTS),
108 .sname = "BASIC_CONSTRAINTS",
109};
88 110
89 111
90BASIC_CONSTRAINTS * 112BASIC_CONSTRAINTS *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c b/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
index 61e6b3ba47..4244f03851 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
+++ b/src/lib/libssl/src/crypto/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 *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_crld.c b/src/lib/libssl/src/crypto/x509v3/v3_crld.c
index b2e4370658..9c4017968d 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_crld.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_crld.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_crld.c,v 1.16 2015/02/14 15:19:04 miod Exp $ */ 1/* $OpenBSD: v3_crld.c,v 1.17 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 */
@@ -374,10 +374,34 @@ dpn_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
374} 374}
375 375
376 376
377ASN1_CHOICE_cb(DIST_POINT_NAME, dpn_cb) = { 377static const ASN1_AUX DIST_POINT_NAME_aux = {
378 ASN1_IMP_SEQUENCE_OF(DIST_POINT_NAME, name.fullname, GENERAL_NAME, 0), 378 .app_data = NULL,
379 .flags = 0,
380 .ref_offset = 0,
381 .ref_lock = 0,
382 .asn1_cb = dpn_cb,
383 .enc_offset = 0,
384};
385static const ASN1_TEMPLATE DIST_POINT_NAME_ch_tt[] = {
386 {
387 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF,
388 .tag = 0,
389 .offset = offsetof(DIST_POINT_NAME, name.fullname),
390 .field_name = "name.fullname",
391 .item = &GENERAL_NAME_it,
392 },
379 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1) 393 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1)
380} ASN1_CHOICE_END_cb(DIST_POINT_NAME, DIST_POINT_NAME, type) 394};
395
396const ASN1_ITEM DIST_POINT_NAME_it = {
397 .itype = ASN1_ITYPE_CHOICE,
398 .utype = offsetof(DIST_POINT_NAME, type),
399 .templates = DIST_POINT_NAME_ch_tt,
400 .tcount = sizeof(DIST_POINT_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
401 .funcs = &DIST_POINT_NAME_aux,
402 .size = sizeof(DIST_POINT_NAME),
403 .sname = "DIST_POINT_NAME",
404};
381 405
382 406
383 407
@@ -406,11 +430,39 @@ DIST_POINT_NAME_free(DIST_POINT_NAME *a)
406 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it); 430 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it);
407} 431}
408 432
409ASN1_SEQUENCE(DIST_POINT) = { 433static const ASN1_TEMPLATE DIST_POINT_seq_tt[] = {
410 ASN1_EXP_OPT(DIST_POINT, distpoint, DIST_POINT_NAME, 0), 434 {
411 ASN1_IMP_OPT(DIST_POINT, reasons, ASN1_BIT_STRING, 1), 435 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
412 ASN1_IMP_SEQUENCE_OF_OPT(DIST_POINT, CRLissuer, GENERAL_NAME, 2) 436 .tag = 0,
413} ASN1_SEQUENCE_END(DIST_POINT) 437 .offset = offsetof(DIST_POINT, distpoint),
438 .field_name = "distpoint",
439 .item = &DIST_POINT_NAME_it,
440 },
441 {
442 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
443 .tag = 1,
444 .offset = offsetof(DIST_POINT, reasons),
445 .field_name = "reasons",
446 .item = &ASN1_BIT_STRING_it,
447 },
448 {
449 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
450 .tag = 2,
451 .offset = offsetof(DIST_POINT, CRLissuer),
452 .field_name = "CRLissuer",
453 .item = &GENERAL_NAME_it,
454 },
455};
456
457const ASN1_ITEM DIST_POINT_it = {
458 .itype = ASN1_ITYPE_SEQUENCE,
459 .utype = V_ASN1_SEQUENCE,
460 .templates = DIST_POINT_seq_tt,
461 .tcount = sizeof(DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
462 .funcs = NULL,
463 .size = sizeof(DIST_POINT),
464 .sname = "DIST_POINT",
465};
414 466
415 467
416DIST_POINT * 468DIST_POINT *
@@ -438,10 +490,23 @@ DIST_POINT_free(DIST_POINT *a)
438 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it); 490 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it);
439} 491}
440 492
441ASN1_ITEM_TEMPLATE(CRL_DIST_POINTS) = 493static const ASN1_TEMPLATE CRL_DIST_POINTS_item_tt = {
442 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CRLDistributionPoints, 494 .flags = ASN1_TFLG_SEQUENCE_OF,
443 DIST_POINT) 495 .tag = 0,
444ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS) 496 .offset = 0,
497 .field_name = "CRLDistributionPoints",
498 .item = &DIST_POINT_it,
499};
500
501const ASN1_ITEM CRL_DIST_POINTS_it = {
502 .itype = ASN1_ITYPE_PRIMITIVE,
503 .utype = -1,
504 .templates = &CRL_DIST_POINTS_item_tt,
505 .tcount = 0,
506 .funcs = NULL,
507 .size = 0,
508 .sname = "CRL_DIST_POINTS",
509};
445 510
446 511
447CRL_DIST_POINTS * 512CRL_DIST_POINTS *
@@ -469,14 +534,60 @@ CRL_DIST_POINTS_free(CRL_DIST_POINTS *a)
469 ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it); 534 ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it);
470} 535}
471 536
472ASN1_SEQUENCE(ISSUING_DIST_POINT) = { 537static const ASN1_TEMPLATE ISSUING_DIST_POINT_seq_tt[] = {
473 ASN1_EXP_OPT(ISSUING_DIST_POINT, distpoint, DIST_POINT_NAME, 0), 538 {
474 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyuser, ASN1_FBOOLEAN, 1), 539 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
475 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyCA, ASN1_FBOOLEAN, 2), 540 .tag = 0,
476 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlysomereasons, ASN1_BIT_STRING, 3), 541 .offset = offsetof(ISSUING_DIST_POINT, distpoint),
477 ASN1_IMP_OPT(ISSUING_DIST_POINT, indirectCRL, ASN1_FBOOLEAN, 4), 542 .field_name = "distpoint",
478 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyattr, ASN1_FBOOLEAN, 5) 543 .item = &DIST_POINT_NAME_it,
479} ASN1_SEQUENCE_END(ISSUING_DIST_POINT) 544 },
545 {
546 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
547 .tag = 1,
548 .offset = offsetof(ISSUING_DIST_POINT, onlyuser),
549 .field_name = "onlyuser",
550 .item = &ASN1_FBOOLEAN_it,
551 },
552 {
553 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
554 .tag = 2,
555 .offset = offsetof(ISSUING_DIST_POINT, onlyCA),
556 .field_name = "onlyCA",
557 .item = &ASN1_FBOOLEAN_it,
558 },
559 {
560 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
561 .tag = 3,
562 .offset = offsetof(ISSUING_DIST_POINT, onlysomereasons),
563 .field_name = "onlysomereasons",
564 .item = &ASN1_BIT_STRING_it,
565 },
566 {
567 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
568 .tag = 4,
569 .offset = offsetof(ISSUING_DIST_POINT, indirectCRL),
570 .field_name = "indirectCRL",
571 .item = &ASN1_FBOOLEAN_it,
572 },
573 {
574 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
575 .tag = 5,
576 .offset = offsetof(ISSUING_DIST_POINT, onlyattr),
577 .field_name = "onlyattr",
578 .item = &ASN1_FBOOLEAN_it,
579 },
580};
581
582const ASN1_ITEM ISSUING_DIST_POINT_it = {
583 .itype = ASN1_ITYPE_SEQUENCE,
584 .utype = V_ASN1_SEQUENCE,
585 .templates = ISSUING_DIST_POINT_seq_tt,
586 .tcount = sizeof(ISSUING_DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
587 .funcs = NULL,
588 .size = sizeof(ISSUING_DIST_POINT),
589 .sname = "ISSUING_DIST_POINT",
590};
480 591
481 592
482ISSUING_DIST_POINT * 593ISSUING_DIST_POINT *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_extku.c b/src/lib/libssl/src/crypto/x509v3/v3_extku.c
index c37b65f7a5..2ee7594fed 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_extku.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_extku.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_extku.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_extku.c,v 1.12 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 */
@@ -91,10 +91,23 @@ const X509V3_EXT_METHOD v3_ocsp_accresp = {
91 NULL 91 NULL
92}; 92};
93 93
94ASN1_ITEM_TEMPLATE(EXTENDED_KEY_USAGE) = 94static const ASN1_TEMPLATE EXTENDED_KEY_USAGE_item_tt = {
95 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, EXTENDED_KEY_USAGE, 95 .flags = ASN1_TFLG_SEQUENCE_OF,
96 ASN1_OBJECT) 96 .tag = 0,
97ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE) 97 .offset = 0,
98 .field_name = "EXTENDED_KEY_USAGE",
99 .item = &ASN1_OBJECT_it,
100};
101
102const ASN1_ITEM EXTENDED_KEY_USAGE_it = {
103 .itype = ASN1_ITYPE_PRIMITIVE,
104 .utype = -1,
105 .templates = &EXTENDED_KEY_USAGE_item_tt,
106 .tcount = 0,
107 .funcs = NULL,
108 .size = 0,
109 .sname = "EXTENDED_KEY_USAGE",
110};
98 111
99 112
100EXTENDED_KEY_USAGE * 113EXTENDED_KEY_USAGE *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_genn.c b/src/lib/libssl/src/crypto/x509v3/v3_genn.c
index 25d7f447d2..9943fd33d2 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_genn.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_genn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_genn.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_genn.c,v 1.11 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 */
@@ -63,11 +63,33 @@
63#include <openssl/conf.h> 63#include <openssl/conf.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66ASN1_SEQUENCE(OTHERNAME) = { 66static const ASN1_TEMPLATE OTHERNAME_seq_tt[] = {
67 ASN1_SIMPLE(OTHERNAME, type_id, ASN1_OBJECT), 67 {
68 .flags = 0,
69 .tag = 0,
70 .offset = offsetof(OTHERNAME, type_id),
71 .field_name = "type_id",
72 .item = &ASN1_OBJECT_it,
73 },
68 /* Maybe have a true ANY DEFINED BY later */ 74 /* Maybe have a true ANY DEFINED BY later */
69 ASN1_EXP(OTHERNAME, value, ASN1_ANY, 0) 75 {
70} ASN1_SEQUENCE_END(OTHERNAME) 76 .flags = ASN1_TFLG_EXPLICIT,
77 .tag = 0,
78 .offset = offsetof(OTHERNAME, value),
79 .field_name = "value",
80 .item = &ASN1_ANY_it,
81 },
82};
83
84const ASN1_ITEM OTHERNAME_it = {
85 .itype = ASN1_ITYPE_SEQUENCE,
86 .utype = V_ASN1_SEQUENCE,
87 .templates = OTHERNAME_seq_tt,
88 .tcount = sizeof(OTHERNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
89 .funcs = NULL,
90 .size = sizeof(OTHERNAME),
91 .sname = "OTHERNAME",
92};
71 93
72 94
73OTHERNAME * 95OTHERNAME *
@@ -95,10 +117,32 @@ OTHERNAME_free(OTHERNAME *a)
95 ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it); 117 ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it);
96} 118}
97 119
98ASN1_SEQUENCE(EDIPARTYNAME) = { 120static const ASN1_TEMPLATE EDIPARTYNAME_seq_tt[] = {
99 ASN1_IMP_OPT(EDIPARTYNAME, nameAssigner, DIRECTORYSTRING, 0), 121 {
100 ASN1_IMP_OPT(EDIPARTYNAME, partyName, DIRECTORYSTRING, 1) 122 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
101} ASN1_SEQUENCE_END(EDIPARTYNAME) 123 .tag = 0,
124 .offset = offsetof(EDIPARTYNAME, nameAssigner),
125 .field_name = "nameAssigner",
126 .item = &DIRECTORYSTRING_it,
127 },
128 {
129 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
130 .tag = 1,
131 .offset = offsetof(EDIPARTYNAME, partyName),
132 .field_name = "partyName",
133 .item = &DIRECTORYSTRING_it,
134 },
135};
136
137const ASN1_ITEM EDIPARTYNAME_it = {
138 .itype = ASN1_ITYPE_SEQUENCE,
139 .utype = V_ASN1_SEQUENCE,
140 .templates = EDIPARTYNAME_seq_tt,
141 .tcount = sizeof(EDIPARTYNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
142 .funcs = NULL,
143 .size = sizeof(EDIPARTYNAME),
144 .sname = "EDIPARTYNAME",
145};
102 146
103 147
104EDIPARTYNAME * 148EDIPARTYNAME *
@@ -126,19 +170,83 @@ EDIPARTYNAME_free(EDIPARTYNAME *a)
126 ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it); 170 ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it);
127} 171}
128 172
129ASN1_CHOICE(GENERAL_NAME) = { 173static const ASN1_TEMPLATE GENERAL_NAME_ch_tt[] = {
130 ASN1_IMP(GENERAL_NAME, d.otherName, OTHERNAME, GEN_OTHERNAME), 174 {
131 ASN1_IMP(GENERAL_NAME, d.rfc822Name, ASN1_IA5STRING, GEN_EMAIL), 175 .flags = ASN1_TFLG_IMPLICIT,
132 ASN1_IMP(GENERAL_NAME, d.dNSName, ASN1_IA5STRING, GEN_DNS), 176 .tag = GEN_OTHERNAME,
177 .offset = offsetof(GENERAL_NAME, d.otherName),
178 .field_name = "d.otherName",
179 .item = &OTHERNAME_it,
180 },
181 {
182 .flags = ASN1_TFLG_IMPLICIT,
183 .tag = GEN_EMAIL,
184 .offset = offsetof(GENERAL_NAME, d.rfc822Name),
185 .field_name = "d.rfc822Name",
186 .item = &ASN1_IA5STRING_it,
187 },
188 {
189 .flags = ASN1_TFLG_IMPLICIT,
190 .tag = GEN_DNS,
191 .offset = offsetof(GENERAL_NAME, d.dNSName),
192 .field_name = "d.dNSName",
193 .item = &ASN1_IA5STRING_it,
194 },
133 /* Don't decode this */ 195 /* Don't decode this */
134 ASN1_IMP(GENERAL_NAME, d.x400Address, ASN1_SEQUENCE, GEN_X400), 196 {
197 .flags = ASN1_TFLG_IMPLICIT,
198 .tag = GEN_X400,
199 .offset = offsetof(GENERAL_NAME, d.x400Address),
200 .field_name = "d.x400Address",
201 .item = &ASN1_SEQUENCE_it,
202 },
135 /* X509_NAME is a CHOICE type so use EXPLICIT */ 203 /* X509_NAME is a CHOICE type so use EXPLICIT */
136 ASN1_EXP(GENERAL_NAME, d.directoryName, X509_NAME, GEN_DIRNAME), 204 {
137 ASN1_IMP(GENERAL_NAME, d.ediPartyName, EDIPARTYNAME, GEN_EDIPARTY), 205 .flags = ASN1_TFLG_EXPLICIT,
138 ASN1_IMP(GENERAL_NAME, d.uniformResourceIdentifier, ASN1_IA5STRING, GEN_URI), 206 .tag = GEN_DIRNAME,
139 ASN1_IMP(GENERAL_NAME, d.iPAddress, ASN1_OCTET_STRING, GEN_IPADD), 207 .offset = offsetof(GENERAL_NAME, d.directoryName),
140 ASN1_IMP(GENERAL_NAME, d.registeredID, ASN1_OBJECT, GEN_RID) 208 .field_name = "d.directoryName",
141} ASN1_CHOICE_END(GENERAL_NAME) 209 .item = &X509_NAME_it,
210 },
211 {
212 .flags = ASN1_TFLG_IMPLICIT,
213 .tag = GEN_EDIPARTY,
214 .offset = offsetof(GENERAL_NAME, d.ediPartyName),
215 .field_name = "d.ediPartyName",
216 .item = &EDIPARTYNAME_it,
217 },
218 {
219 .flags = ASN1_TFLG_IMPLICIT,
220 .tag = GEN_URI,
221 .offset = offsetof(GENERAL_NAME, d.uniformResourceIdentifier),
222 .field_name = "d.uniformResourceIdentifier",
223 .item = &ASN1_IA5STRING_it,
224 },
225 {
226 .flags = ASN1_TFLG_IMPLICIT,
227 .tag = GEN_IPADD,
228 .offset = offsetof(GENERAL_NAME, d.iPAddress),
229 .field_name = "d.iPAddress",
230 .item = &ASN1_OCTET_STRING_it,
231 },
232 {
233 .flags = ASN1_TFLG_IMPLICIT,
234 .tag = GEN_RID,
235 .offset = offsetof(GENERAL_NAME, d.registeredID),
236 .field_name = "d.registeredID",
237 .item = &ASN1_OBJECT_it,
238 },
239};
240
241const ASN1_ITEM GENERAL_NAME_it = {
242 .itype = ASN1_ITYPE_CHOICE,
243 .utype = offsetof(GENERAL_NAME, type),
244 .templates = GENERAL_NAME_ch_tt,
245 .tcount = sizeof(GENERAL_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
246 .funcs = NULL,
247 .size = sizeof(GENERAL_NAME),
248 .sname = "GENERAL_NAME",
249};
142 250
143 251
144GENERAL_NAME * 252GENERAL_NAME *
@@ -166,9 +274,23 @@ GENERAL_NAME_free(GENERAL_NAME *a)
166 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it); 274 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it);
167} 275}
168 276
169ASN1_ITEM_TEMPLATE(GENERAL_NAMES) = 277static const ASN1_TEMPLATE GENERAL_NAMES_item_tt = {
170 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, GENERAL_NAME) 278 .flags = ASN1_TFLG_SEQUENCE_OF,
171ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES) 279 .tag = 0,
280 .offset = 0,
281 .field_name = "GeneralNames",
282 .item = &GENERAL_NAME_it,
283};
284
285const ASN1_ITEM GENERAL_NAMES_it = {
286 .itype = ASN1_ITYPE_PRIMITIVE,
287 .utype = -1,
288 .templates = &GENERAL_NAMES_item_tt,
289 .tcount = 0,
290 .funcs = NULL,
291 .size = 0,
292 .sname = "GENERAL_NAMES",
293};
172 294
173 295
174GENERAL_NAMES * 296GENERAL_NAMES *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_info.c b/src/lib/libssl/src/crypto/x509v3/v3_info.c
index d9fa133308..795a7bb6ff 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_info.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_info.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_info.c,v 1.21 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_info.c,v 1.22 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 */
@@ -93,10 +93,32 @@ const X509V3_EXT_METHOD v3_sinfo = {
93 NULL 93 NULL
94}; 94};
95 95
96ASN1_SEQUENCE(ACCESS_DESCRIPTION) = { 96static const ASN1_TEMPLATE ACCESS_DESCRIPTION_seq_tt[] = {
97 ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT), 97 {
98 ASN1_SIMPLE(ACCESS_DESCRIPTION, location, GENERAL_NAME) 98 .flags = 0,
99} ASN1_SEQUENCE_END(ACCESS_DESCRIPTION) 99 .tag = 0,
100 .offset = offsetof(ACCESS_DESCRIPTION, method),
101 .field_name = "method",
102 .item = &ASN1_OBJECT_it,
103 },
104 {
105 .flags = 0,
106 .tag = 0,
107 .offset = offsetof(ACCESS_DESCRIPTION, location),
108 .field_name = "location",
109 .item = &GENERAL_NAME_it,
110 },
111};
112
113const ASN1_ITEM ACCESS_DESCRIPTION_it = {
114 .itype = ASN1_ITYPE_SEQUENCE,
115 .utype = V_ASN1_SEQUENCE,
116 .templates = ACCESS_DESCRIPTION_seq_tt,
117 .tcount = sizeof(ACCESS_DESCRIPTION_seq_tt) / sizeof(ASN1_TEMPLATE),
118 .funcs = NULL,
119 .size = sizeof(ACCESS_DESCRIPTION),
120 .sname = "ACCESS_DESCRIPTION",
121};
100 122
101 123
102ACCESS_DESCRIPTION * 124ACCESS_DESCRIPTION *
@@ -124,10 +146,23 @@ ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a)
124 ASN1_item_free((ASN1_VALUE *)a, &ACCESS_DESCRIPTION_it); 146 ASN1_item_free((ASN1_VALUE *)a, &ACCESS_DESCRIPTION_it);
125} 147}
126 148
127ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) = 149static const ASN1_TEMPLATE AUTHORITY_INFO_ACCESS_item_tt = {
128 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, 150 .flags = ASN1_TFLG_SEQUENCE_OF,
129 ACCESS_DESCRIPTION) 151 .tag = 0,
130ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) 152 .offset = 0,
153 .field_name = "GeneralNames",
154 .item = &ACCESS_DESCRIPTION_it,
155};
156
157const ASN1_ITEM AUTHORITY_INFO_ACCESS_it = {
158 .itype = ASN1_ITYPE_PRIMITIVE,
159 .utype = -1,
160 .templates = &AUTHORITY_INFO_ACCESS_item_tt,
161 .tcount = 0,
162 .funcs = NULL,
163 .size = 0,
164 .sname = "AUTHORITY_INFO_ACCESS",
165};
131 166
132 167
133AUTHORITY_INFO_ACCESS * 168AUTHORITY_INFO_ACCESS *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_ncons.c b/src/lib/libssl/src/crypto/x509v3/v3_ncons.c
index 7cb272a58f..e154b6ba18 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_ncons.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_ncons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_ncons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ 1/* $OpenBSD: v3_ncons.c,v 1.7 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. 3 * project.
4 */ 4 */
@@ -89,18 +89,56 @@ const X509V3_EXT_METHOD v3_name_constraints = {
89 NULL 89 NULL
90}; 90};
91 91
92ASN1_SEQUENCE(GENERAL_SUBTREE) = { 92static const ASN1_TEMPLATE GENERAL_SUBTREE_seq_tt[] = {
93 ASN1_SIMPLE(GENERAL_SUBTREE, base, GENERAL_NAME), 93 {
94 ASN1_IMP_OPT(GENERAL_SUBTREE, minimum, ASN1_INTEGER, 0), 94 .flags = 0,
95 ASN1_IMP_OPT(GENERAL_SUBTREE, maximum, ASN1_INTEGER, 1) 95 .tag = 0,
96} ASN1_SEQUENCE_END(GENERAL_SUBTREE) 96 .offset = offsetof(GENERAL_SUBTREE, base),
97 .field_name = "base",
98 .item = &GENERAL_NAME_it,
99 },
100 {
101 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
102 .tag = 0,
103 .offset = offsetof(GENERAL_SUBTREE, minimum),
104 .field_name = "minimum",
105 .item = &ASN1_INTEGER_it,
106 },
107 {
108 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
109 .tag = 1,
110 .offset = offsetof(GENERAL_SUBTREE, maximum),
111 .field_name = "maximum",
112 .item = &ASN1_INTEGER_it,
113 },
114};
115
116const ASN1_ITEM GENERAL_SUBTREE_it = {
117 .itype = ASN1_ITYPE_SEQUENCE,
118 .utype = V_ASN1_SEQUENCE,
119 .templates = GENERAL_SUBTREE_seq_tt,
120 .tcount = sizeof(GENERAL_SUBTREE_seq_tt) / sizeof(ASN1_TEMPLATE),
121 .funcs = NULL,
122 .size = sizeof(GENERAL_SUBTREE),
123 .sname = "GENERAL_SUBTREE",
124};
97 125
98ASN1_SEQUENCE(NAME_CONSTRAINTS) = { 126static const ASN1_TEMPLATE NAME_CONSTRAINTS_seq_tt[] = {
99 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees, 127 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees,
100 GENERAL_SUBTREE, 0), 128 GENERAL_SUBTREE, 0),
101 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees, 129 ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees,
102 GENERAL_SUBTREE, 1), 130 GENERAL_SUBTREE, 1),
103} ASN1_SEQUENCE_END(NAME_CONSTRAINTS) 131};
132
133const ASN1_ITEM NAME_CONSTRAINTS_it = {
134 .itype = ASN1_ITYPE_SEQUENCE,
135 .utype = V_ASN1_SEQUENCE,
136 .templates = NAME_CONSTRAINTS_seq_tt,
137 .tcount = sizeof(NAME_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
138 .funcs = NULL,
139 .size = sizeof(NAME_CONSTRAINTS),
140 .sname = "NAME_CONSTRAINTS",
141};
104 142
105 143
106 144
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pcia.c b/src/lib/libssl/src/crypto/x509v3/v3_pcia.c
index 07e294e633..f9ec02c00a 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_pcia.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_pcia.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pcia.c,v 1.5 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_pcia.c,v 1.6 2015/07/25 16:00:14 jsing Exp $ */
2/* Contributed to the OpenSSL Project 2004 2/* Contributed to the OpenSSL Project 2004
3 * by Richard Levitte (richard@levitte.org) 3 * by Richard Levitte (richard@levitte.org)
4 */ 4 */
@@ -38,10 +38,32 @@
38#include <openssl/asn1t.h> 38#include <openssl/asn1t.h>
39#include <openssl/x509v3.h> 39#include <openssl/x509v3.h>
40 40
41ASN1_SEQUENCE(PROXY_POLICY) = { 41static const ASN1_TEMPLATE PROXY_POLICY_seq_tt[] = {
42 ASN1_SIMPLE(PROXY_POLICY, policyLanguage, ASN1_OBJECT), 42 {
43 ASN1_OPT(PROXY_POLICY, policy, ASN1_OCTET_STRING) 43 .flags = 0,
44} ASN1_SEQUENCE_END(PROXY_POLICY) 44 .tag = 0,
45 .offset = offsetof(PROXY_POLICY, policyLanguage),
46 .field_name = "policyLanguage",
47 .item = &ASN1_OBJECT_it,
48 },
49 {
50 .flags = ASN1_TFLG_OPTIONAL,
51 .tag = 0,
52 .offset = offsetof(PROXY_POLICY, policy),
53 .field_name = "policy",
54 .item = &ASN1_OCTET_STRING_it,
55 },
56};
57
58const ASN1_ITEM PROXY_POLICY_it = {
59 .itype = ASN1_ITYPE_SEQUENCE,
60 .utype = V_ASN1_SEQUENCE,
61 .templates = PROXY_POLICY_seq_tt,
62 .tcount = sizeof(PROXY_POLICY_seq_tt) / sizeof(ASN1_TEMPLATE),
63 .funcs = NULL,
64 .size = sizeof(PROXY_POLICY),
65 .sname = "PROXY_POLICY",
66};
45 67
46 68
47PROXY_POLICY * 69PROXY_POLICY *
@@ -69,11 +91,32 @@ PROXY_POLICY_free(PROXY_POLICY *a)
69 ASN1_item_free((ASN1_VALUE *)a, &PROXY_POLICY_it); 91 ASN1_item_free((ASN1_VALUE *)a, &PROXY_POLICY_it);
70} 92}
71 93
72ASN1_SEQUENCE(PROXY_CERT_INFO_EXTENSION) = { 94static const ASN1_TEMPLATE PROXY_CERT_INFO_EXTENSION_seq_tt[] = {
73 ASN1_OPT(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint, 95 {
74 ASN1_INTEGER), 96 .flags = ASN1_TFLG_OPTIONAL,
75 ASN1_SIMPLE(PROXY_CERT_INFO_EXTENSION, proxyPolicy, PROXY_POLICY) 97 .tag = 0,
76} ASN1_SEQUENCE_END(PROXY_CERT_INFO_EXTENSION) 98 .offset = offsetof(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint),
99 .field_name = "pcPathLengthConstraint",
100 .item = &ASN1_INTEGER_it,
101 },
102 {
103 .flags = 0,
104 .tag = 0,
105 .offset = offsetof(PROXY_CERT_INFO_EXTENSION, proxyPolicy),
106 .field_name = "proxyPolicy",
107 .item = &PROXY_POLICY_it,
108 },
109};
110
111const ASN1_ITEM PROXY_CERT_INFO_EXTENSION_it = {
112 .itype = ASN1_ITYPE_SEQUENCE,
113 .utype = V_ASN1_SEQUENCE,
114 .templates = PROXY_CERT_INFO_EXTENSION_seq_tt,
115 .tcount = sizeof(PROXY_CERT_INFO_EXTENSION_seq_tt) / sizeof(ASN1_TEMPLATE),
116 .funcs = NULL,
117 .size = sizeof(PROXY_CERT_INFO_EXTENSION),
118 .sname = "PROXY_CERT_INFO_EXTENSION",
119};
77 120
78 121
79PROXY_CERT_INFO_EXTENSION * 122PROXY_CERT_INFO_EXTENSION *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pcons.c b/src/lib/libssl/src/crypto/x509v3/v3_pcons.c
index 075efd8851..7bece06271 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_pcons.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_pcons.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pcons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ 1/* $OpenBSD: v3_pcons.c,v 1.7 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. 3 * project.
4 */ 4 */
@@ -82,11 +82,27 @@ const X509V3_EXT_METHOD v3_policy_constraints = {
82 NULL 82 NULL
83}; 83};
84 84
85ASN1_SEQUENCE(POLICY_CONSTRAINTS) = { 85static const ASN1_TEMPLATE POLICY_CONSTRAINTS_seq_tt[] = {
86 ASN1_IMP_OPT(POLICY_CONSTRAINTS, requireExplicitPolicy, 86 ASN1_IMP_OPT(POLICY_CONSTRAINTS, requireExplicitPolicy,
87 ASN1_INTEGER, 0), 87 ASN1_INTEGER, 0),
88 ASN1_IMP_OPT(POLICY_CONSTRAINTS, inhibitPolicyMapping, ASN1_INTEGER, 1) 88 {
89} ASN1_SEQUENCE_END(POLICY_CONSTRAINTS) 89 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
90 .tag = 1,
91 .offset = offsetof(POLICY_CONSTRAINTS, inhibitPolicyMapping),
92 .field_name = "inhibitPolicyMapping",
93 .item = &ASN1_INTEGER_it,
94 },
95};
96
97const ASN1_ITEM POLICY_CONSTRAINTS_it = {
98 .itype = ASN1_ITYPE_SEQUENCE,
99 .utype = V_ASN1_SEQUENCE,
100 .templates = POLICY_CONSTRAINTS_seq_tt,
101 .tcount = sizeof(POLICY_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
102 .funcs = NULL,
103 .size = sizeof(POLICY_CONSTRAINTS),
104 .sname = "POLICY_CONSTRAINTS",
105};
90 106
91 107
92POLICY_CONSTRAINTS * 108POLICY_CONSTRAINTS *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pku.c b/src/lib/libssl/src/crypto/x509v3/v3_pku.c
index 4bce07f09c..360e3daa58 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_pku.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_pku.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pku.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */ 1/* $OpenBSD: v3_pku.c,v 1.11 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 */
@@ -75,10 +75,32 @@ const X509V3_EXT_METHOD v3_pkey_usage_period = {
75 NULL 75 NULL
76}; 76};
77 77
78ASN1_SEQUENCE(PKEY_USAGE_PERIOD) = { 78static const ASN1_TEMPLATE PKEY_USAGE_PERIOD_seq_tt[] = {
79 ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notBefore, ASN1_GENERALIZEDTIME, 0), 79 {
80 ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notAfter, ASN1_GENERALIZEDTIME, 1) 80 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
81} ASN1_SEQUENCE_END(PKEY_USAGE_PERIOD) 81 .tag = 0,
82 .offset = offsetof(PKEY_USAGE_PERIOD, notBefore),
83 .field_name = "notBefore",
84 .item = &ASN1_GENERALIZEDTIME_it,
85 },
86 {
87 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
88 .tag = 1,
89 .offset = offsetof(PKEY_USAGE_PERIOD, notAfter),
90 .field_name = "notAfter",
91 .item = &ASN1_GENERALIZEDTIME_it,
92 },
93};
94
95const ASN1_ITEM PKEY_USAGE_PERIOD_it = {
96 .itype = ASN1_ITYPE_SEQUENCE,
97 .utype = V_ASN1_SEQUENCE,
98 .templates = PKEY_USAGE_PERIOD_seq_tt,
99 .tcount = sizeof(PKEY_USAGE_PERIOD_seq_tt) / sizeof(ASN1_TEMPLATE),
100 .funcs = NULL,
101 .size = sizeof(PKEY_USAGE_PERIOD),
102 .sname = "PKEY_USAGE_PERIOD",
103};
82 104
83 105
84PKEY_USAGE_PERIOD * 106PKEY_USAGE_PERIOD *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c b/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c
index e8099d7f12..32ab04eda9 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_pmaps.c,v 1.7 2015/02/13 01:16:26 beck Exp $ */ 1/* $OpenBSD: v3_pmaps.c,v 1.8 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. 3 * project.
4 */ 4 */
@@ -80,15 +80,50 @@ const X509V3_EXT_METHOD v3_policy_mappings = {
80 NULL 80 NULL
81}; 81};
82 82
83ASN1_SEQUENCE(POLICY_MAPPING) = { 83static const ASN1_TEMPLATE POLICY_MAPPING_seq_tt[] = {
84 ASN1_SIMPLE(POLICY_MAPPING, issuerDomainPolicy, ASN1_OBJECT), 84 {
85 ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) 85 .flags = 0,
86} ASN1_SEQUENCE_END(POLICY_MAPPING) 86 .tag = 0,
87 .offset = offsetof(POLICY_MAPPING, issuerDomainPolicy),
88 .field_name = "issuerDomainPolicy",
89 .item = &ASN1_OBJECT_it,
90 },
91 {
92 .flags = 0,
93 .tag = 0,
94 .offset = offsetof(POLICY_MAPPING, subjectDomainPolicy),
95 .field_name = "subjectDomainPolicy",
96 .item = &ASN1_OBJECT_it,
97 },
98};
99
100const ASN1_ITEM POLICY_MAPPING_it = {
101 .itype = ASN1_ITYPE_SEQUENCE,
102 .utype = V_ASN1_SEQUENCE,
103 .templates = POLICY_MAPPING_seq_tt,
104 .tcount = sizeof(POLICY_MAPPING_seq_tt) / sizeof(ASN1_TEMPLATE),
105 .funcs = NULL,
106 .size = sizeof(POLICY_MAPPING),
107 .sname = "POLICY_MAPPING",
108};
87 109
88ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = 110static const ASN1_TEMPLATE POLICY_MAPPINGS_item_tt = {
89ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, 111 .flags = ASN1_TFLG_SEQUENCE_OF,
90 POLICY_MAPPING) 112 .tag = 0,
91ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) 113 .offset = 0,
114 .field_name = "POLICY_MAPPINGS",
115 .item = &POLICY_MAPPING_it,
116};
117
118const ASN1_ITEM POLICY_MAPPINGS_it = {
119 .itype = ASN1_ITYPE_PRIMITIVE,
120 .utype = -1,
121 .templates = &POLICY_MAPPINGS_item_tt,
122 .tcount = 0,
123 .funcs = NULL,
124 .size = 0,
125 .sname = "POLICY_MAPPINGS",
126};
92 127
93 128
94POLICY_MAPPING * 129POLICY_MAPPING *
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_sxnet.c b/src/lib/libssl/src/crypto/x509v3/v3_sxnet.c
index 7029aad916..d87dd34339 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_sxnet.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_sxnet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_sxnet.c,v 1.13 2015/02/10 08:33:10 jsing Exp $ */ 1/* $OpenBSD: v3_sxnet.c,v 1.14 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 */
@@ -90,10 +90,32 @@ const X509V3_EXT_METHOD v3_sxnet = {
90 NULL 90 NULL
91}; 91};
92 92
93ASN1_SEQUENCE(SXNETID) = { 93static const ASN1_TEMPLATE SXNETID_seq_tt[] = {
94 ASN1_SIMPLE(SXNETID, zone, ASN1_INTEGER), 94 {
95 ASN1_SIMPLE(SXNETID, user, ASN1_OCTET_STRING) 95 .flags = 0,
96} ASN1_SEQUENCE_END(SXNETID) 96 .tag = 0,
97 .offset = offsetof(SXNETID, zone),
98 .field_name = "zone",
99 .item = &ASN1_INTEGER_it,
100 },
101 {
102 .flags = 0,
103 .tag = 0,
104 .offset = offsetof(SXNETID, user),
105 .field_name = "user",
106 .item = &ASN1_OCTET_STRING_it,
107 },
108};
109
110const ASN1_ITEM SXNETID_it = {
111 .itype = ASN1_ITYPE_SEQUENCE,
112 .utype = V_ASN1_SEQUENCE,
113 .templates = SXNETID_seq_tt,
114 .tcount = sizeof(SXNETID_seq_tt) / sizeof(ASN1_TEMPLATE),
115 .funcs = NULL,
116 .size = sizeof(SXNETID),
117 .sname = "SXNETID",
118};
97 119
98 120
99SXNETID * 121SXNETID *
@@ -121,10 +143,32 @@ SXNETID_free(SXNETID *a)
121 ASN1_item_free((ASN1_VALUE *)a, &SXNETID_it); 143 ASN1_item_free((ASN1_VALUE *)a, &SXNETID_it);
122} 144}
123 145
124ASN1_SEQUENCE(SXNET) = { 146static const ASN1_TEMPLATE SXNET_seq_tt[] = {
125 ASN1_SIMPLE(SXNET, version, ASN1_INTEGER), 147 {
126 ASN1_SEQUENCE_OF(SXNET, ids, SXNETID) 148 .flags = 0,
127} ASN1_SEQUENCE_END(SXNET) 149 .tag = 0,
150 .offset = offsetof(SXNET, version),
151 .field_name = "version",
152 .item = &ASN1_INTEGER_it,
153 },
154 {
155 .flags = ASN1_TFLG_SEQUENCE_OF,
156 .tag = 0,
157 .offset = offsetof(SXNET, ids),
158 .field_name = "ids",
159 .item = &SXNETID_it,
160 },
161};
162
163const ASN1_ITEM SXNET_it = {
164 .itype = ASN1_ITYPE_SEQUENCE,
165 .utype = V_ASN1_SEQUENCE,
166 .templates = SXNET_seq_tt,
167 .tcount = sizeof(SXNET_seq_tt) / sizeof(ASN1_TEMPLATE),
168 .funcs = NULL,
169 .size = sizeof(SXNET),
170 .sname = "SXNET",
171};
128 172
129 173
130SXNET * 174SXNET *