summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2015-07-25 15:42:14 +0000
committerjsing <>2015-07-25 15:42:14 +0000
commit2065a85e8046724356556ea49150db9e5c0e42c6 (patch)
treecc8da54cd4e4e6859a1a5580aa4f7e939081a221 /src/lib
parent3b47726c6cd791dd175b2c1d0c3a4e4db48df0a6 (diff)
downloadopenbsd-2065a85e8046724356556ea49150db9e5c0e42c6.tar.gz
openbsd-2065a85e8046724356556ea49150db9e5c0e42c6.tar.bz2
openbsd-2065a85e8046724356556ea49150db9e5c0e42c6.zip
Expand ASN.1 template macros - no change in generated assembly.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/pkcs12/p12_asn.c350
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_asn.c350
2 files changed, 588 insertions, 112 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_asn.c b/src/lib/libcrypto/pkcs12/p12_asn.c
index 8e6ee29cb7..eb8e30cf47 100644
--- a/src/lib/libcrypto/pkcs12/p12_asn.c
+++ b/src/lib/libcrypto/pkcs12/p12_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_asn.c,v 1.7 2015/02/09 16:04:46 jsing Exp $ */ 1/* $OpenBSD: p12_asn.c,v 1.8 2015/07/25 15:42: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 63
64/* PKCS#12 ASN1 module */ 64/* PKCS#12 ASN1 module */
65 65
66ASN1_SEQUENCE(PKCS12) = { 66static const ASN1_TEMPLATE PKCS12_seq_tt[] = {
67 ASN1_SIMPLE(PKCS12, version, ASN1_INTEGER), 67 {
68 ASN1_SIMPLE(PKCS12, authsafes, PKCS7), 68 .flags = 0,
69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA) 69 .tag = 0,
70} ASN1_SEQUENCE_END(PKCS12) 70 .offset = offsetof(PKCS12, version),
71 .field_name = "version",
72 .item = &ASN1_INTEGER_it,
73 },
74 {
75 .flags = 0,
76 .tag = 0,
77 .offset = offsetof(PKCS12, authsafes),
78 .field_name = "authsafes",
79 .item = &PKCS7_it,
80 },
81 {
82 .flags = ASN1_TFLG_OPTIONAL,
83 .tag = 0,
84 .offset = offsetof(PKCS12, mac),
85 .field_name = "mac",
86 .item = &PKCS12_MAC_DATA_it,
87 },
88};
89
90const ASN1_ITEM PKCS12_it = {
91 .itype = ASN1_ITYPE_SEQUENCE,
92 .utype = V_ASN1_SEQUENCE,
93 .templates = PKCS12_seq_tt,
94 .tcount = sizeof(PKCS12_seq_tt) / sizeof(ASN1_TEMPLATE),
95 .funcs = NULL,
96 .size = sizeof(PKCS12),
97 .sname = "PKCS12",
98};
71 99
72 100
73PKCS12 * 101PKCS12 *
@@ -95,11 +123,39 @@ PKCS12_free(PKCS12 *a)
95 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it); 123 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it);
96} 124}
97 125
98ASN1_SEQUENCE(PKCS12_MAC_DATA) = { 126static const ASN1_TEMPLATE PKCS12_MAC_DATA_seq_tt[] = {
99 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG), 127 {
100 ASN1_SIMPLE(PKCS12_MAC_DATA, salt, ASN1_OCTET_STRING), 128 .flags = 0,
101 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER) 129 .tag = 0,
102} ASN1_SEQUENCE_END(PKCS12_MAC_DATA) 130 .offset = offsetof(PKCS12_MAC_DATA, dinfo),
131 .field_name = "dinfo",
132 .item = &X509_SIG_it,
133 },
134 {
135 .flags = 0,
136 .tag = 0,
137 .offset = offsetof(PKCS12_MAC_DATA, salt),
138 .field_name = "salt",
139 .item = &ASN1_OCTET_STRING_it,
140 },
141 {
142 .flags = ASN1_TFLG_OPTIONAL,
143 .tag = 0,
144 .offset = offsetof(PKCS12_MAC_DATA, iter),
145 .field_name = "iter",
146 .item = &ASN1_INTEGER_it,
147 },
148};
149
150const ASN1_ITEM PKCS12_MAC_DATA_it = {
151 .itype = ASN1_ITYPE_SEQUENCE,
152 .utype = V_ASN1_SEQUENCE,
153 .templates = PKCS12_MAC_DATA_seq_tt,
154 .tcount = sizeof(PKCS12_MAC_DATA_seq_tt) / sizeof(ASN1_TEMPLATE),
155 .funcs = NULL,
156 .size = sizeof(PKCS12_MAC_DATA),
157 .sname = "PKCS12_MAC_DATA",
158};
103 159
104 160
105PKCS12_MAC_DATA * 161PKCS12_MAC_DATA *
@@ -127,22 +183,86 @@ PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a)
127 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it); 183 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it);
128} 184}
129 185
130ASN1_ADB_TEMPLATE(bag_default) = 186static const ASN1_TEMPLATE bag_default_tt = {
131 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0); 187 .flags = ASN1_TFLG_EXPLICIT,
132 188 .tag = 0,
133ASN1_ADB(PKCS12_BAGS) = { 189 .offset = offsetof(PKCS12_BAGS, value.other),
134 ADB_ENTRY(NID_x509Certificate, 190 .field_name = "value.other",
135 ASN1_EXP(PKCS12_BAGS, value.x509cert, ASN1_OCTET_STRING, 0)), 191 .item = &ASN1_ANY_it,
136 ADB_ENTRY(NID_x509Crl, 192};
137 ASN1_EXP(PKCS12_BAGS, value.x509crl, ASN1_OCTET_STRING, 0)), 193
138 ADB_ENTRY(NID_sdsiCertificate, 194static const ASN1_ADB_TABLE PKCS12_BAGS_adbtbl[] = {
139 ASN1_EXP(PKCS12_BAGS, value.sdsicert, ASN1_IA5STRING, 0)), 195 {
140} ASN1_ADB_END(PKCS12_BAGS, 0, type, 0, &bag_default_tt, NULL); 196 .value = NID_x509Certificate,
141 197 .tt = {
142ASN1_SEQUENCE(PKCS12_BAGS) = { 198 .flags = ASN1_TFLG_EXPLICIT,
143 ASN1_SIMPLE(PKCS12_BAGS, type, ASN1_OBJECT), 199 .tag = 0,
144 ASN1_ADB_OBJECT(PKCS12_BAGS), 200 .offset = offsetof(PKCS12_BAGS, value.x509cert),
145} ASN1_SEQUENCE_END(PKCS12_BAGS) 201 .field_name = "value.x509cert",
202 .item = &ASN1_OCTET_STRING_it,
203 },
204
205 },
206 {
207 .value = NID_x509Crl,
208 .tt = {
209 .flags = ASN1_TFLG_EXPLICIT,
210 .tag = 0,
211 .offset = offsetof(PKCS12_BAGS, value.x509crl),
212 .field_name = "value.x509crl",
213 .item = &ASN1_OCTET_STRING_it,
214 },
215
216 },
217 {
218 .value = NID_sdsiCertificate,
219 .tt = {
220 .flags = ASN1_TFLG_EXPLICIT,
221 .tag = 0,
222 .offset = offsetof(PKCS12_BAGS, value.sdsicert),
223 .field_name = "value.sdsicert",
224 .item = &ASN1_IA5STRING_it,
225 },
226
227 },
228};
229
230static const ASN1_ADB PKCS12_BAGS_adb = {
231 .flags = 0,
232 .offset = offsetof(PKCS12_BAGS, type),
233 .app_items = 0,
234 .tbl = PKCS12_BAGS_adbtbl,
235 .tblcount = sizeof(PKCS12_BAGS_adbtbl) / sizeof(ASN1_ADB_TABLE),
236 .default_tt = &bag_default_tt,
237 .null_tt = NULL,
238};
239
240static const ASN1_TEMPLATE PKCS12_BAGS_seq_tt[] = {
241 {
242 .flags = 0,
243 .tag = 0,
244 .offset = offsetof(PKCS12_BAGS, type),
245 .field_name = "type",
246 .item = &ASN1_OBJECT_it,
247 },
248 {
249 .flags = ASN1_TFLG_ADB_OID,
250 .tag = -1,
251 .offset = 0,
252 .field_name = "PKCS12_BAGS",
253 .item = (const ASN1_ITEM *)&PKCS12_BAGS_adb,
254 },
255};
256
257const ASN1_ITEM PKCS12_BAGS_it = {
258 .itype = ASN1_ITYPE_SEQUENCE,
259 .utype = V_ASN1_SEQUENCE,
260 .templates = PKCS12_BAGS_seq_tt,
261 .tcount = sizeof(PKCS12_BAGS_seq_tt) / sizeof(ASN1_TEMPLATE),
262 .funcs = NULL,
263 .size = sizeof(PKCS12_BAGS),
264 .sname = "PKCS12_BAGS",
265};
146 266
147 267
148PKCS12_BAGS * 268PKCS12_BAGS *
@@ -170,29 +290,119 @@ PKCS12_BAGS_free(PKCS12_BAGS *a)
170 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it); 290 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it);
171} 291}
172 292
173ASN1_ADB_TEMPLATE(safebag_default) = 293static const ASN1_TEMPLATE safebag_default_tt = {
174 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0); 294 .flags = ASN1_TFLG_EXPLICIT,
175 295 .tag = 0,
176ASN1_ADB(PKCS12_SAFEBAG) = { 296 .offset = offsetof(PKCS12_SAFEBAG, value.other),
177 ADB_ENTRY(NID_keyBag, 297 .field_name = "value.other",
178 ASN1_EXP(PKCS12_SAFEBAG, value.keybag, PKCS8_PRIV_KEY_INFO, 0)), 298 .item = &ASN1_ANY_it,
179 ADB_ENTRY(NID_pkcs8ShroudedKeyBag, 299};
180 ASN1_EXP(PKCS12_SAFEBAG, value.shkeybag, X509_SIG, 0)), 300
181 ADB_ENTRY(NID_safeContentsBag, 301static const ASN1_ADB_TABLE PKCS12_SAFEBAG_adbtbl[] = {
182 ASN1_EXP_SET_OF(PKCS12_SAFEBAG, value.safes, PKCS12_SAFEBAG, 0)), 302 {
183 ADB_ENTRY(NID_certBag, 303 .value = NID_keyBag,
184 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)), 304 .tt = {
185 ADB_ENTRY(NID_crlBag, 305 .flags = ASN1_TFLG_EXPLICIT,
186 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)), 306 .tag = 0,
187 ADB_ENTRY(NID_secretBag, 307 .offset = offsetof(PKCS12_SAFEBAG, value.keybag),
188 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)) 308 .field_name = "value.keybag",
189} ASN1_ADB_END(PKCS12_SAFEBAG, 0, type, 0, &safebag_default_tt, NULL); 309 .item = &PKCS8_PRIV_KEY_INFO_it,
190 310 },
191ASN1_SEQUENCE(PKCS12_SAFEBAG) = { 311
192 ASN1_SIMPLE(PKCS12_SAFEBAG, type, ASN1_OBJECT), 312 },
193 ASN1_ADB_OBJECT(PKCS12_SAFEBAG), 313 {
194 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE) 314 .value = NID_pkcs8ShroudedKeyBag,
195} ASN1_SEQUENCE_END(PKCS12_SAFEBAG) 315 .tt = {
316 .flags = ASN1_TFLG_EXPLICIT,
317 .tag = 0,
318 .offset = offsetof(PKCS12_SAFEBAG, value.shkeybag),
319 .field_name = "value.shkeybag",
320 .item = &X509_SIG_it,
321 },
322
323 },
324 {
325 .value = NID_safeContentsBag,
326 .tt = ASN1_EXP_SET_OF(PKCS12_SAFEBAG, value.safes, PKCS12_SAFEBAG, 0)
327 },
328 {
329 .value = NID_certBag,
330 .tt = {
331 .flags = ASN1_TFLG_EXPLICIT,
332 .tag = 0,
333 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
334 .field_name = "value.bag",
335 .item = &PKCS12_BAGS_it,
336 },
337
338 },
339 {
340 .value = NID_crlBag,
341 .tt = {
342 .flags = ASN1_TFLG_EXPLICIT,
343 .tag = 0,
344 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
345 .field_name = "value.bag",
346 .item = &PKCS12_BAGS_it,
347 },
348
349 },
350 {
351 .value = NID_secretBag,
352 .tt = {
353 .flags = ASN1_TFLG_EXPLICIT,
354 .tag = 0,
355 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
356 .field_name = "value.bag",
357 .item = &PKCS12_BAGS_it,
358 },
359
360 },
361};
362
363static const ASN1_ADB PKCS12_SAFEBAG_adb = {
364 .flags = 0,
365 .offset = offsetof(PKCS12_SAFEBAG, type),
366 .app_items = 0,
367 .tbl = PKCS12_SAFEBAG_adbtbl,
368 .tblcount = sizeof(PKCS12_SAFEBAG_adbtbl) / sizeof(ASN1_ADB_TABLE),
369 .default_tt = &safebag_default_tt,
370 .null_tt = NULL,
371};
372
373static const ASN1_TEMPLATE PKCS12_SAFEBAG_seq_tt[] = {
374 {
375 .flags = 0,
376 .tag = 0,
377 .offset = offsetof(PKCS12_SAFEBAG, type),
378 .field_name = "type",
379 .item = &ASN1_OBJECT_it,
380 },
381 {
382 .flags = ASN1_TFLG_ADB_OID,
383 .tag = -1,
384 .offset = 0,
385 .field_name = "PKCS12_SAFEBAG",
386 .item = (const ASN1_ITEM *)&PKCS12_SAFEBAG_adb,
387 },
388 {
389 .flags = ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL,
390 .tag = 0,
391 .offset = offsetof(PKCS12_SAFEBAG, attrib),
392 .field_name = "attrib",
393 .item = &X509_ATTRIBUTE_it,
394 },
395};
396
397const ASN1_ITEM PKCS12_SAFEBAG_it = {
398 .itype = ASN1_ITYPE_SEQUENCE,
399 .utype = V_ASN1_SEQUENCE,
400 .templates = PKCS12_SAFEBAG_seq_tt,
401 .tcount = sizeof(PKCS12_SAFEBAG_seq_tt) / sizeof(ASN1_TEMPLATE),
402 .funcs = NULL,
403 .size = sizeof(PKCS12_SAFEBAG),
404 .sname = "PKCS12_SAFEBAG",
405};
196 406
197 407
198PKCS12_SAFEBAG * 408PKCS12_SAFEBAG *
@@ -221,12 +431,40 @@ PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a)
221} 431}
222 432
223/* SEQUENCE OF SafeBag */ 433/* SEQUENCE OF SafeBag */
224ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) = 434static const ASN1_TEMPLATE PKCS12_SAFEBAGS_item_tt = {
225ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, PKCS12_SAFEBAGS, PKCS12_SAFEBAG) 435 .flags = ASN1_TFLG_SEQUENCE_OF,
226ASN1_ITEM_TEMPLATE_END(PKCS12_SAFEBAGS) 436 .tag = 0,
437 .offset = 0,
438 .field_name = "PKCS12_SAFEBAGS",
439 .item = &PKCS12_SAFEBAG_it,
440};
441
442const ASN1_ITEM PKCS12_SAFEBAGS_it = {
443 .itype = ASN1_ITYPE_PRIMITIVE,
444 .utype = -1,
445 .templates = &PKCS12_SAFEBAGS_item_tt,
446 .tcount = 0,
447 .funcs = NULL,
448 .size = 0,
449 .sname = "PKCS12_SAFEBAGS",
450};
227 451
228/* Authsafes: SEQUENCE OF PKCS7 */ 452/* Authsafes: SEQUENCE OF PKCS7 */
229ASN1_ITEM_TEMPLATE(PKCS12_AUTHSAFES) = 453static const ASN1_TEMPLATE PKCS12_AUTHSAFES_item_tt = {
230ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, PKCS12_AUTHSAFES, PKCS7) 454 .flags = ASN1_TFLG_SEQUENCE_OF,
231ASN1_ITEM_TEMPLATE_END(PKCS12_AUTHSAFES) 455 .tag = 0,
456 .offset = 0,
457 .field_name = "PKCS12_AUTHSAFES",
458 .item = &PKCS7_it,
459};
460
461const ASN1_ITEM PKCS12_AUTHSAFES_it = {
462 .itype = ASN1_ITYPE_PRIMITIVE,
463 .utype = -1,
464 .templates = &PKCS12_AUTHSAFES_item_tt,
465 .tcount = 0,
466 .funcs = NULL,
467 .size = 0,
468 .sname = "PKCS12_AUTHSAFES",
469};
232 470
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_asn.c b/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
index 8e6ee29cb7..eb8e30cf47 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_asn.c,v 1.7 2015/02/09 16:04:46 jsing Exp $ */ 1/* $OpenBSD: p12_asn.c,v 1.8 2015/07/25 15:42: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 63
64/* PKCS#12 ASN1 module */ 64/* PKCS#12 ASN1 module */
65 65
66ASN1_SEQUENCE(PKCS12) = { 66static const ASN1_TEMPLATE PKCS12_seq_tt[] = {
67 ASN1_SIMPLE(PKCS12, version, ASN1_INTEGER), 67 {
68 ASN1_SIMPLE(PKCS12, authsafes, PKCS7), 68 .flags = 0,
69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA) 69 .tag = 0,
70} ASN1_SEQUENCE_END(PKCS12) 70 .offset = offsetof(PKCS12, version),
71 .field_name = "version",
72 .item = &ASN1_INTEGER_it,
73 },
74 {
75 .flags = 0,
76 .tag = 0,
77 .offset = offsetof(PKCS12, authsafes),
78 .field_name = "authsafes",
79 .item = &PKCS7_it,
80 },
81 {
82 .flags = ASN1_TFLG_OPTIONAL,
83 .tag = 0,
84 .offset = offsetof(PKCS12, mac),
85 .field_name = "mac",
86 .item = &PKCS12_MAC_DATA_it,
87 },
88};
89
90const ASN1_ITEM PKCS12_it = {
91 .itype = ASN1_ITYPE_SEQUENCE,
92 .utype = V_ASN1_SEQUENCE,
93 .templates = PKCS12_seq_tt,
94 .tcount = sizeof(PKCS12_seq_tt) / sizeof(ASN1_TEMPLATE),
95 .funcs = NULL,
96 .size = sizeof(PKCS12),
97 .sname = "PKCS12",
98};
71 99
72 100
73PKCS12 * 101PKCS12 *
@@ -95,11 +123,39 @@ PKCS12_free(PKCS12 *a)
95 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it); 123 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it);
96} 124}
97 125
98ASN1_SEQUENCE(PKCS12_MAC_DATA) = { 126static const ASN1_TEMPLATE PKCS12_MAC_DATA_seq_tt[] = {
99 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG), 127 {
100 ASN1_SIMPLE(PKCS12_MAC_DATA, salt, ASN1_OCTET_STRING), 128 .flags = 0,
101 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER) 129 .tag = 0,
102} ASN1_SEQUENCE_END(PKCS12_MAC_DATA) 130 .offset = offsetof(PKCS12_MAC_DATA, dinfo),
131 .field_name = "dinfo",
132 .item = &X509_SIG_it,
133 },
134 {
135 .flags = 0,
136 .tag = 0,
137 .offset = offsetof(PKCS12_MAC_DATA, salt),
138 .field_name = "salt",
139 .item = &ASN1_OCTET_STRING_it,
140 },
141 {
142 .flags = ASN1_TFLG_OPTIONAL,
143 .tag = 0,
144 .offset = offsetof(PKCS12_MAC_DATA, iter),
145 .field_name = "iter",
146 .item = &ASN1_INTEGER_it,
147 },
148};
149
150const ASN1_ITEM PKCS12_MAC_DATA_it = {
151 .itype = ASN1_ITYPE_SEQUENCE,
152 .utype = V_ASN1_SEQUENCE,
153 .templates = PKCS12_MAC_DATA_seq_tt,
154 .tcount = sizeof(PKCS12_MAC_DATA_seq_tt) / sizeof(ASN1_TEMPLATE),
155 .funcs = NULL,
156 .size = sizeof(PKCS12_MAC_DATA),
157 .sname = "PKCS12_MAC_DATA",
158};
103 159
104 160
105PKCS12_MAC_DATA * 161PKCS12_MAC_DATA *
@@ -127,22 +183,86 @@ PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a)
127 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it); 183 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it);
128} 184}
129 185
130ASN1_ADB_TEMPLATE(bag_default) = 186static const ASN1_TEMPLATE bag_default_tt = {
131 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0); 187 .flags = ASN1_TFLG_EXPLICIT,
132 188 .tag = 0,
133ASN1_ADB(PKCS12_BAGS) = { 189 .offset = offsetof(PKCS12_BAGS, value.other),
134 ADB_ENTRY(NID_x509Certificate, 190 .field_name = "value.other",
135 ASN1_EXP(PKCS12_BAGS, value.x509cert, ASN1_OCTET_STRING, 0)), 191 .item = &ASN1_ANY_it,
136 ADB_ENTRY(NID_x509Crl, 192};
137 ASN1_EXP(PKCS12_BAGS, value.x509crl, ASN1_OCTET_STRING, 0)), 193
138 ADB_ENTRY(NID_sdsiCertificate, 194static const ASN1_ADB_TABLE PKCS12_BAGS_adbtbl[] = {
139 ASN1_EXP(PKCS12_BAGS, value.sdsicert, ASN1_IA5STRING, 0)), 195 {
140} ASN1_ADB_END(PKCS12_BAGS, 0, type, 0, &bag_default_tt, NULL); 196 .value = NID_x509Certificate,
141 197 .tt = {
142ASN1_SEQUENCE(PKCS12_BAGS) = { 198 .flags = ASN1_TFLG_EXPLICIT,
143 ASN1_SIMPLE(PKCS12_BAGS, type, ASN1_OBJECT), 199 .tag = 0,
144 ASN1_ADB_OBJECT(PKCS12_BAGS), 200 .offset = offsetof(PKCS12_BAGS, value.x509cert),
145} ASN1_SEQUENCE_END(PKCS12_BAGS) 201 .field_name = "value.x509cert",
202 .item = &ASN1_OCTET_STRING_it,
203 },
204
205 },
206 {
207 .value = NID_x509Crl,
208 .tt = {
209 .flags = ASN1_TFLG_EXPLICIT,
210 .tag = 0,
211 .offset = offsetof(PKCS12_BAGS, value.x509crl),
212 .field_name = "value.x509crl",
213 .item = &ASN1_OCTET_STRING_it,
214 },
215
216 },
217 {
218 .value = NID_sdsiCertificate,
219 .tt = {
220 .flags = ASN1_TFLG_EXPLICIT,
221 .tag = 0,
222 .offset = offsetof(PKCS12_BAGS, value.sdsicert),
223 .field_name = "value.sdsicert",
224 .item = &ASN1_IA5STRING_it,
225 },
226
227 },
228};
229
230static const ASN1_ADB PKCS12_BAGS_adb = {
231 .flags = 0,
232 .offset = offsetof(PKCS12_BAGS, type),
233 .app_items = 0,
234 .tbl = PKCS12_BAGS_adbtbl,
235 .tblcount = sizeof(PKCS12_BAGS_adbtbl) / sizeof(ASN1_ADB_TABLE),
236 .default_tt = &bag_default_tt,
237 .null_tt = NULL,
238};
239
240static const ASN1_TEMPLATE PKCS12_BAGS_seq_tt[] = {
241 {
242 .flags = 0,
243 .tag = 0,
244 .offset = offsetof(PKCS12_BAGS, type),
245 .field_name = "type",
246 .item = &ASN1_OBJECT_it,
247 },
248 {
249 .flags = ASN1_TFLG_ADB_OID,
250 .tag = -1,
251 .offset = 0,
252 .field_name = "PKCS12_BAGS",
253 .item = (const ASN1_ITEM *)&PKCS12_BAGS_adb,
254 },
255};
256
257const ASN1_ITEM PKCS12_BAGS_it = {
258 .itype = ASN1_ITYPE_SEQUENCE,
259 .utype = V_ASN1_SEQUENCE,
260 .templates = PKCS12_BAGS_seq_tt,
261 .tcount = sizeof(PKCS12_BAGS_seq_tt) / sizeof(ASN1_TEMPLATE),
262 .funcs = NULL,
263 .size = sizeof(PKCS12_BAGS),
264 .sname = "PKCS12_BAGS",
265};
146 266
147 267
148PKCS12_BAGS * 268PKCS12_BAGS *
@@ -170,29 +290,119 @@ PKCS12_BAGS_free(PKCS12_BAGS *a)
170 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it); 290 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it);
171} 291}
172 292
173ASN1_ADB_TEMPLATE(safebag_default) = 293static const ASN1_TEMPLATE safebag_default_tt = {
174 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0); 294 .flags = ASN1_TFLG_EXPLICIT,
175 295 .tag = 0,
176ASN1_ADB(PKCS12_SAFEBAG) = { 296 .offset = offsetof(PKCS12_SAFEBAG, value.other),
177 ADB_ENTRY(NID_keyBag, 297 .field_name = "value.other",
178 ASN1_EXP(PKCS12_SAFEBAG, value.keybag, PKCS8_PRIV_KEY_INFO, 0)), 298 .item = &ASN1_ANY_it,
179 ADB_ENTRY(NID_pkcs8ShroudedKeyBag, 299};
180 ASN1_EXP(PKCS12_SAFEBAG, value.shkeybag, X509_SIG, 0)), 300
181 ADB_ENTRY(NID_safeContentsBag, 301static const ASN1_ADB_TABLE PKCS12_SAFEBAG_adbtbl[] = {
182 ASN1_EXP_SET_OF(PKCS12_SAFEBAG, value.safes, PKCS12_SAFEBAG, 0)), 302 {
183 ADB_ENTRY(NID_certBag, 303 .value = NID_keyBag,
184 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)), 304 .tt = {
185 ADB_ENTRY(NID_crlBag, 305 .flags = ASN1_TFLG_EXPLICIT,
186 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)), 306 .tag = 0,
187 ADB_ENTRY(NID_secretBag, 307 .offset = offsetof(PKCS12_SAFEBAG, value.keybag),
188 ASN1_EXP(PKCS12_SAFEBAG, value.bag, PKCS12_BAGS, 0)) 308 .field_name = "value.keybag",
189} ASN1_ADB_END(PKCS12_SAFEBAG, 0, type, 0, &safebag_default_tt, NULL); 309 .item = &PKCS8_PRIV_KEY_INFO_it,
190 310 },
191ASN1_SEQUENCE(PKCS12_SAFEBAG) = { 311
192 ASN1_SIMPLE(PKCS12_SAFEBAG, type, ASN1_OBJECT), 312 },
193 ASN1_ADB_OBJECT(PKCS12_SAFEBAG), 313 {
194 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE) 314 .value = NID_pkcs8ShroudedKeyBag,
195} ASN1_SEQUENCE_END(PKCS12_SAFEBAG) 315 .tt = {
316 .flags = ASN1_TFLG_EXPLICIT,
317 .tag = 0,
318 .offset = offsetof(PKCS12_SAFEBAG, value.shkeybag),
319 .field_name = "value.shkeybag",
320 .item = &X509_SIG_it,
321 },
322
323 },
324 {
325 .value = NID_safeContentsBag,
326 .tt = ASN1_EXP_SET_OF(PKCS12_SAFEBAG, value.safes, PKCS12_SAFEBAG, 0)
327 },
328 {
329 .value = NID_certBag,
330 .tt = {
331 .flags = ASN1_TFLG_EXPLICIT,
332 .tag = 0,
333 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
334 .field_name = "value.bag",
335 .item = &PKCS12_BAGS_it,
336 },
337
338 },
339 {
340 .value = NID_crlBag,
341 .tt = {
342 .flags = ASN1_TFLG_EXPLICIT,
343 .tag = 0,
344 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
345 .field_name = "value.bag",
346 .item = &PKCS12_BAGS_it,
347 },
348
349 },
350 {
351 .value = NID_secretBag,
352 .tt = {
353 .flags = ASN1_TFLG_EXPLICIT,
354 .tag = 0,
355 .offset = offsetof(PKCS12_SAFEBAG, value.bag),
356 .field_name = "value.bag",
357 .item = &PKCS12_BAGS_it,
358 },
359
360 },
361};
362
363static const ASN1_ADB PKCS12_SAFEBAG_adb = {
364 .flags = 0,
365 .offset = offsetof(PKCS12_SAFEBAG, type),
366 .app_items = 0,
367 .tbl = PKCS12_SAFEBAG_adbtbl,
368 .tblcount = sizeof(PKCS12_SAFEBAG_adbtbl) / sizeof(ASN1_ADB_TABLE),
369 .default_tt = &safebag_default_tt,
370 .null_tt = NULL,
371};
372
373static const ASN1_TEMPLATE PKCS12_SAFEBAG_seq_tt[] = {
374 {
375 .flags = 0,
376 .tag = 0,
377 .offset = offsetof(PKCS12_SAFEBAG, type),
378 .field_name = "type",
379 .item = &ASN1_OBJECT_it,
380 },
381 {
382 .flags = ASN1_TFLG_ADB_OID,
383 .tag = -1,
384 .offset = 0,
385 .field_name = "PKCS12_SAFEBAG",
386 .item = (const ASN1_ITEM *)&PKCS12_SAFEBAG_adb,
387 },
388 {
389 .flags = ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL,
390 .tag = 0,
391 .offset = offsetof(PKCS12_SAFEBAG, attrib),
392 .field_name = "attrib",
393 .item = &X509_ATTRIBUTE_it,
394 },
395};
396
397const ASN1_ITEM PKCS12_SAFEBAG_it = {
398 .itype = ASN1_ITYPE_SEQUENCE,
399 .utype = V_ASN1_SEQUENCE,
400 .templates = PKCS12_SAFEBAG_seq_tt,
401 .tcount = sizeof(PKCS12_SAFEBAG_seq_tt) / sizeof(ASN1_TEMPLATE),
402 .funcs = NULL,
403 .size = sizeof(PKCS12_SAFEBAG),
404 .sname = "PKCS12_SAFEBAG",
405};
196 406
197 407
198PKCS12_SAFEBAG * 408PKCS12_SAFEBAG *
@@ -221,12 +431,40 @@ PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a)
221} 431}
222 432
223/* SEQUENCE OF SafeBag */ 433/* SEQUENCE OF SafeBag */
224ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) = 434static const ASN1_TEMPLATE PKCS12_SAFEBAGS_item_tt = {
225ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, PKCS12_SAFEBAGS, PKCS12_SAFEBAG) 435 .flags = ASN1_TFLG_SEQUENCE_OF,
226ASN1_ITEM_TEMPLATE_END(PKCS12_SAFEBAGS) 436 .tag = 0,
437 .offset = 0,
438 .field_name = "PKCS12_SAFEBAGS",
439 .item = &PKCS12_SAFEBAG_it,
440};
441
442const ASN1_ITEM PKCS12_SAFEBAGS_it = {
443 .itype = ASN1_ITYPE_PRIMITIVE,
444 .utype = -1,
445 .templates = &PKCS12_SAFEBAGS_item_tt,
446 .tcount = 0,
447 .funcs = NULL,
448 .size = 0,
449 .sname = "PKCS12_SAFEBAGS",
450};
227 451
228/* Authsafes: SEQUENCE OF PKCS7 */ 452/* Authsafes: SEQUENCE OF PKCS7 */
229ASN1_ITEM_TEMPLATE(PKCS12_AUTHSAFES) = 453static const ASN1_TEMPLATE PKCS12_AUTHSAFES_item_tt = {
230ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, PKCS12_AUTHSAFES, PKCS7) 454 .flags = ASN1_TFLG_SEQUENCE_OF,
231ASN1_ITEM_TEMPLATE_END(PKCS12_AUTHSAFES) 455 .tag = 0,
456 .offset = 0,
457 .field_name = "PKCS12_AUTHSAFES",
458 .item = &PKCS7_it,
459};
460
461const ASN1_ITEM PKCS12_AUTHSAFES_it = {
462 .itype = ASN1_ITYPE_PRIMITIVE,
463 .utype = -1,
464 .templates = &PKCS12_AUTHSAFES_item_tt,
465 .tcount = 0,
466 .funcs = NULL,
467 .size = 0,
468 .sname = "PKCS12_AUTHSAFES",
469};
232 470