diff options
author | jsing <> | 2015-07-24 15:25:44 +0000 |
---|---|---|
committer | jsing <> | 2015-07-24 15:25:44 +0000 |
commit | 69f8a103298106869ae8f84c3c47cd591bfbb4be (patch) | |
tree | 105584d7df5635d51a2d08e212d669ec2d77a456 /src | |
parent | e2e594b31f7a751901c6f7fc1f5cc328d8bd4cfd (diff) | |
download | openbsd-69f8a103298106869ae8f84c3c47cd591bfbb4be.tar.gz openbsd-69f8a103298106869ae8f84c3c47cd591bfbb4be.tar.bz2 openbsd-69f8a103298106869ae8f84c3c47cd591bfbb4be.zip |
Expand ASN.1 template macros - the generated assembly only differs by
changes to line numbers.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/ts/ts_asn1.c | 392 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/ts/ts_asn1.c | 392 |
2 files changed, 682 insertions, 102 deletions
diff --git a/src/lib/libcrypto/ts/ts_asn1.c b/src/lib/libcrypto/ts/ts_asn1.c index d85f3690c0..1386483247 100644 --- a/src/lib/libcrypto/ts/ts_asn1.c +++ b/src/lib/libcrypto/ts/ts_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ts_asn1.c,v 1.8 2015/02/10 05:25:45 jsing Exp $ */ | 1 | /* $OpenBSD: ts_asn1.c,v 1.9 2015/07/24 15:25:44 jsing Exp $ */ |
2 | /* Written by Nils Larsch for the OpenSSL project 2004. | 2 | /* Written by Nils Larsch for the OpenSSL project 2004. |
3 | */ | 3 | */ |
4 | /* ==================================================================== | 4 | /* ==================================================================== |
@@ -61,10 +61,32 @@ | |||
61 | #include <openssl/err.h> | 61 | #include <openssl/err.h> |
62 | #include <openssl/asn1t.h> | 62 | #include <openssl/asn1t.h> |
63 | 63 | ||
64 | ASN1_SEQUENCE(TS_MSG_IMPRINT) = { | 64 | static const ASN1_TEMPLATE TS_MSG_IMPRINT_seq_tt[] = { |
65 | ASN1_SIMPLE(TS_MSG_IMPRINT, hash_algo, X509_ALGOR), | 65 | { |
66 | ASN1_SIMPLE(TS_MSG_IMPRINT, hashed_msg, ASN1_OCTET_STRING) | 66 | .flags = 0, |
67 | } ASN1_SEQUENCE_END(TS_MSG_IMPRINT) | 67 | .tag = 0, |
68 | .offset = offsetof(TS_MSG_IMPRINT, hash_algo), | ||
69 | .field_name = "hash_algo", | ||
70 | .item = &X509_ALGOR_it, | ||
71 | }, | ||
72 | { | ||
73 | .flags = 0, | ||
74 | .tag = 0, | ||
75 | .offset = offsetof(TS_MSG_IMPRINT, hashed_msg), | ||
76 | .field_name = "hashed_msg", | ||
77 | .item = &ASN1_OCTET_STRING_it, | ||
78 | }, | ||
79 | }; | ||
80 | |||
81 | const ASN1_ITEM TS_MSG_IMPRINT_it = { | ||
82 | .itype = ASN1_ITYPE_SEQUENCE, | ||
83 | .utype = V_ASN1_SEQUENCE, | ||
84 | .templates = TS_MSG_IMPRINT_seq_tt, | ||
85 | .tcount = sizeof(TS_MSG_IMPRINT_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
86 | .funcs = NULL, | ||
87 | .size = sizeof(TS_MSG_IMPRINT), | ||
88 | .sname = "TS_MSG_IMPRINT", | ||
89 | }; | ||
68 | 90 | ||
69 | 91 | ||
70 | TS_MSG_IMPRINT * | 92 | TS_MSG_IMPRINT * |
@@ -126,14 +148,60 @@ i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a) | |||
126 | return ASN1_i2d_fp_of_const(TS_MSG_IMPRINT, i2d_TS_MSG_IMPRINT, fp, a); | 148 | return ASN1_i2d_fp_of_const(TS_MSG_IMPRINT, i2d_TS_MSG_IMPRINT, fp, a); |
127 | } | 149 | } |
128 | 150 | ||
129 | ASN1_SEQUENCE(TS_REQ) = { | 151 | static const ASN1_TEMPLATE TS_REQ_seq_tt[] = { |
130 | ASN1_SIMPLE(TS_REQ, version, ASN1_INTEGER), | 152 | { |
131 | ASN1_SIMPLE(TS_REQ, msg_imprint, TS_MSG_IMPRINT), | 153 | .flags = 0, |
132 | ASN1_OPT(TS_REQ, policy_id, ASN1_OBJECT), | 154 | .tag = 0, |
133 | ASN1_OPT(TS_REQ, nonce, ASN1_INTEGER), | 155 | .offset = offsetof(TS_REQ, version), |
134 | ASN1_OPT(TS_REQ, cert_req, ASN1_FBOOLEAN), | 156 | .field_name = "version", |
135 | ASN1_IMP_SEQUENCE_OF_OPT(TS_REQ, extensions, X509_EXTENSION, 0) | 157 | .item = &ASN1_INTEGER_it, |
136 | } ASN1_SEQUENCE_END(TS_REQ) | 158 | }, |
159 | { | ||
160 | .flags = 0, | ||
161 | .tag = 0, | ||
162 | .offset = offsetof(TS_REQ, msg_imprint), | ||
163 | .field_name = "msg_imprint", | ||
164 | .item = &TS_MSG_IMPRINT_it, | ||
165 | }, | ||
166 | { | ||
167 | .flags = ASN1_TFLG_OPTIONAL, | ||
168 | .tag = 0, | ||
169 | .offset = offsetof(TS_REQ, policy_id), | ||
170 | .field_name = "policy_id", | ||
171 | .item = &ASN1_OBJECT_it, | ||
172 | }, | ||
173 | { | ||
174 | .flags = ASN1_TFLG_OPTIONAL, | ||
175 | .tag = 0, | ||
176 | .offset = offsetof(TS_REQ, nonce), | ||
177 | .field_name = "nonce", | ||
178 | .item = &ASN1_INTEGER_it, | ||
179 | }, | ||
180 | { | ||
181 | .flags = ASN1_TFLG_OPTIONAL, | ||
182 | .tag = 0, | ||
183 | .offset = offsetof(TS_REQ, cert_req), | ||
184 | .field_name = "cert_req", | ||
185 | .item = &ASN1_FBOOLEAN_it, | ||
186 | }, | ||
187 | { | ||
188 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
189 | .tag = 0, | ||
190 | .offset = offsetof(TS_REQ, extensions), | ||
191 | .field_name = "extensions", | ||
192 | .item = &X509_EXTENSION_it, | ||
193 | }, | ||
194 | }; | ||
195 | |||
196 | const ASN1_ITEM TS_REQ_it = { | ||
197 | .itype = ASN1_ITYPE_SEQUENCE, | ||
198 | .utype = V_ASN1_SEQUENCE, | ||
199 | .templates = TS_REQ_seq_tt, | ||
200 | .tcount = sizeof(TS_REQ_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
201 | .funcs = NULL, | ||
202 | .size = sizeof(TS_REQ), | ||
203 | .sname = "TS_REQ", | ||
204 | }; | ||
137 | 205 | ||
138 | 206 | ||
139 | TS_REQ * | 207 | TS_REQ * |
@@ -193,11 +261,39 @@ i2d_TS_REQ_fp(FILE *fp, TS_REQ *a) | |||
193 | return ASN1_i2d_fp_of_const(TS_REQ, i2d_TS_REQ, fp, a); | 261 | return ASN1_i2d_fp_of_const(TS_REQ, i2d_TS_REQ, fp, a); |
194 | } | 262 | } |
195 | 263 | ||
196 | ASN1_SEQUENCE(TS_ACCURACY) = { | 264 | static const ASN1_TEMPLATE TS_ACCURACY_seq_tt[] = { |
197 | ASN1_OPT(TS_ACCURACY, seconds, ASN1_INTEGER), | 265 | { |
198 | ASN1_IMP_OPT(TS_ACCURACY, millis, ASN1_INTEGER, 0), | 266 | .flags = ASN1_TFLG_OPTIONAL, |
199 | ASN1_IMP_OPT(TS_ACCURACY, micros, ASN1_INTEGER, 1) | 267 | .tag = 0, |
200 | } ASN1_SEQUENCE_END(TS_ACCURACY) | 268 | .offset = offsetof(TS_ACCURACY, seconds), |
269 | .field_name = "seconds", | ||
270 | .item = &ASN1_INTEGER_it, | ||
271 | }, | ||
272 | { | ||
273 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL, | ||
274 | .tag = 0, | ||
275 | .offset = offsetof(TS_ACCURACY, millis), | ||
276 | .field_name = "millis", | ||
277 | .item = &ASN1_INTEGER_it, | ||
278 | }, | ||
279 | { | ||
280 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL, | ||
281 | .tag = 1, | ||
282 | .offset = offsetof(TS_ACCURACY, micros), | ||
283 | .field_name = "micros", | ||
284 | .item = &ASN1_INTEGER_it, | ||
285 | }, | ||
286 | }; | ||
287 | |||
288 | const ASN1_ITEM TS_ACCURACY_it = { | ||
289 | .itype = ASN1_ITYPE_SEQUENCE, | ||
290 | .utype = V_ASN1_SEQUENCE, | ||
291 | .templates = TS_ACCURACY_seq_tt, | ||
292 | .tcount = sizeof(TS_ACCURACY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
293 | .funcs = NULL, | ||
294 | .size = sizeof(TS_ACCURACY), | ||
295 | .sname = "TS_ACCURACY", | ||
296 | }; | ||
201 | 297 | ||
202 | 298 | ||
203 | TS_ACCURACY * | 299 | TS_ACCURACY * |
@@ -231,18 +327,88 @@ TS_ACCURACY_dup(TS_ACCURACY *x) | |||
231 | return ASN1_item_dup(&TS_ACCURACY_it, x); | 327 | return ASN1_item_dup(&TS_ACCURACY_it, x); |
232 | } | 328 | } |
233 | 329 | ||
234 | ASN1_SEQUENCE(TS_TST_INFO) = { | 330 | static const ASN1_TEMPLATE TS_TST_INFO_seq_tt[] = { |
235 | ASN1_SIMPLE(TS_TST_INFO, version, ASN1_INTEGER), | 331 | { |
236 | ASN1_SIMPLE(TS_TST_INFO, policy_id, ASN1_OBJECT), | 332 | .flags = 0, |
237 | ASN1_SIMPLE(TS_TST_INFO, msg_imprint, TS_MSG_IMPRINT), | 333 | .tag = 0, |
238 | ASN1_SIMPLE(TS_TST_INFO, serial, ASN1_INTEGER), | 334 | .offset = offsetof(TS_TST_INFO, version), |
239 | ASN1_SIMPLE(TS_TST_INFO, time, ASN1_GENERALIZEDTIME), | 335 | .field_name = "version", |
240 | ASN1_OPT(TS_TST_INFO, accuracy, TS_ACCURACY), | 336 | .item = &ASN1_INTEGER_it, |
241 | ASN1_OPT(TS_TST_INFO, ordering, ASN1_FBOOLEAN), | 337 | }, |
242 | ASN1_OPT(TS_TST_INFO, nonce, ASN1_INTEGER), | 338 | { |
243 | ASN1_EXP_OPT(TS_TST_INFO, tsa, GENERAL_NAME, 0), | 339 | .flags = 0, |
244 | ASN1_IMP_SEQUENCE_OF_OPT(TS_TST_INFO, extensions, X509_EXTENSION, 1) | 340 | .tag = 0, |
245 | } ASN1_SEQUENCE_END(TS_TST_INFO) | 341 | .offset = offsetof(TS_TST_INFO, policy_id), |
342 | .field_name = "policy_id", | ||
343 | .item = &ASN1_OBJECT_it, | ||
344 | }, | ||
345 | { | ||
346 | .flags = 0, | ||
347 | .tag = 0, | ||
348 | .offset = offsetof(TS_TST_INFO, msg_imprint), | ||
349 | .field_name = "msg_imprint", | ||
350 | .item = &TS_MSG_IMPRINT_it, | ||
351 | }, | ||
352 | { | ||
353 | .flags = 0, | ||
354 | .tag = 0, | ||
355 | .offset = offsetof(TS_TST_INFO, serial), | ||
356 | .field_name = "serial", | ||
357 | .item = &ASN1_INTEGER_it, | ||
358 | }, | ||
359 | { | ||
360 | .flags = 0, | ||
361 | .tag = 0, | ||
362 | .offset = offsetof(TS_TST_INFO, time), | ||
363 | .field_name = "time", | ||
364 | .item = &ASN1_GENERALIZEDTIME_it, | ||
365 | }, | ||
366 | { | ||
367 | .flags = ASN1_TFLG_OPTIONAL, | ||
368 | .tag = 0, | ||
369 | .offset = offsetof(TS_TST_INFO, accuracy), | ||
370 | .field_name = "accuracy", | ||
371 | .item = &TS_ACCURACY_it, | ||
372 | }, | ||
373 | { | ||
374 | .flags = ASN1_TFLG_OPTIONAL, | ||
375 | .tag = 0, | ||
376 | .offset = offsetof(TS_TST_INFO, ordering), | ||
377 | .field_name = "ordering", | ||
378 | .item = &ASN1_FBOOLEAN_it, | ||
379 | }, | ||
380 | { | ||
381 | .flags = ASN1_TFLG_OPTIONAL, | ||
382 | .tag = 0, | ||
383 | .offset = offsetof(TS_TST_INFO, nonce), | ||
384 | .field_name = "nonce", | ||
385 | .item = &ASN1_INTEGER_it, | ||
386 | }, | ||
387 | { | ||
388 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
389 | .tag = 0, | ||
390 | .offset = offsetof(TS_TST_INFO, tsa), | ||
391 | .field_name = "tsa", | ||
392 | .item = &GENERAL_NAME_it, | ||
393 | }, | ||
394 | { | ||
395 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
396 | .tag = 1, | ||
397 | .offset = offsetof(TS_TST_INFO, extensions), | ||
398 | .field_name = "extensions", | ||
399 | .item = &X509_EXTENSION_it, | ||
400 | }, | ||
401 | }; | ||
402 | |||
403 | const ASN1_ITEM TS_TST_INFO_it = { | ||
404 | .itype = ASN1_ITYPE_SEQUENCE, | ||
405 | .utype = V_ASN1_SEQUENCE, | ||
406 | .templates = TS_TST_INFO_seq_tt, | ||
407 | .tcount = sizeof(TS_TST_INFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
408 | .funcs = NULL, | ||
409 | .size = sizeof(TS_TST_INFO), | ||
410 | .sname = "TS_TST_INFO", | ||
411 | }; | ||
246 | 412 | ||
247 | 413 | ||
248 | TS_TST_INFO * | 414 | TS_TST_INFO * |
@@ -304,11 +470,39 @@ i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a) | |||
304 | return ASN1_i2d_fp_of_const(TS_TST_INFO, i2d_TS_TST_INFO, fp, a); | 470 | return ASN1_i2d_fp_of_const(TS_TST_INFO, i2d_TS_TST_INFO, fp, a); |
305 | } | 471 | } |
306 | 472 | ||
307 | ASN1_SEQUENCE(TS_STATUS_INFO) = { | 473 | static const ASN1_TEMPLATE TS_STATUS_INFO_seq_tt[] = { |
308 | ASN1_SIMPLE(TS_STATUS_INFO, status, ASN1_INTEGER), | 474 | { |
309 | ASN1_SEQUENCE_OF_OPT(TS_STATUS_INFO, text, ASN1_UTF8STRING), | 475 | .flags = 0, |
310 | ASN1_OPT(TS_STATUS_INFO, failure_info, ASN1_BIT_STRING) | 476 | .tag = 0, |
311 | } ASN1_SEQUENCE_END(TS_STATUS_INFO) | 477 | .offset = offsetof(TS_STATUS_INFO, status), |
478 | .field_name = "status", | ||
479 | .item = &ASN1_INTEGER_it, | ||
480 | }, | ||
481 | { | ||
482 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
483 | .tag = 0, | ||
484 | .offset = offsetof(TS_STATUS_INFO, text), | ||
485 | .field_name = "text", | ||
486 | .item = &ASN1_UTF8STRING_it, | ||
487 | }, | ||
488 | { | ||
489 | .flags = ASN1_TFLG_OPTIONAL, | ||
490 | .tag = 0, | ||
491 | .offset = offsetof(TS_STATUS_INFO, failure_info), | ||
492 | .field_name = "failure_info", | ||
493 | .item = &ASN1_BIT_STRING_it, | ||
494 | }, | ||
495 | }; | ||
496 | |||
497 | const ASN1_ITEM TS_STATUS_INFO_it = { | ||
498 | .itype = ASN1_ITYPE_SEQUENCE, | ||
499 | .utype = V_ASN1_SEQUENCE, | ||
500 | .templates = TS_STATUS_INFO_seq_tt, | ||
501 | .tcount = sizeof(TS_STATUS_INFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
502 | .funcs = NULL, | ||
503 | .size = sizeof(TS_STATUS_INFO), | ||
504 | .sname = "TS_STATUS_INFO", | ||
505 | }; | ||
312 | 506 | ||
313 | 507 | ||
314 | TS_STATUS_INFO * | 508 | TS_STATUS_INFO * |
@@ -387,10 +581,40 @@ ts_resp_cb(int op, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
387 | return 1; | 581 | return 1; |
388 | } | 582 | } |
389 | 583 | ||
390 | ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { | 584 | static const ASN1_AUX TS_RESP_aux = { |
391 | ASN1_SIMPLE(TS_RESP, status_info, TS_STATUS_INFO), | 585 | .app_data = NULL, |
392 | ASN1_OPT(TS_RESP, token, PKCS7), | 586 | .flags = 0, |
393 | } ASN1_SEQUENCE_END_cb(TS_RESP, TS_RESP) | 587 | .ref_offset = 0, |
588 | .ref_lock = 0, | ||
589 | .asn1_cb = ts_resp_cb, | ||
590 | .enc_offset = 0, | ||
591 | }; | ||
592 | static const ASN1_TEMPLATE TS_RESP_seq_tt[] = { | ||
593 | { | ||
594 | .flags = 0, | ||
595 | .tag = 0, | ||
596 | .offset = offsetof(TS_RESP, status_info), | ||
597 | .field_name = "status_info", | ||
598 | .item = &TS_STATUS_INFO_it, | ||
599 | }, | ||
600 | { | ||
601 | .flags = ASN1_TFLG_OPTIONAL, | ||
602 | .tag = 0, | ||
603 | .offset = offsetof(TS_RESP, token), | ||
604 | .field_name = "token", | ||
605 | .item = &PKCS7_it, | ||
606 | }, | ||
607 | }; | ||
608 | |||
609 | const ASN1_ITEM TS_RESP_it = { | ||
610 | .itype = ASN1_ITYPE_SEQUENCE, | ||
611 | .utype = V_ASN1_SEQUENCE, | ||
612 | .templates = TS_RESP_seq_tt, | ||
613 | .tcount = sizeof(TS_RESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
614 | .funcs = &TS_RESP_aux, | ||
615 | .size = sizeof(TS_RESP), | ||
616 | .sname = "TS_RESP", | ||
617 | }; | ||
394 | 618 | ||
395 | 619 | ||
396 | TS_RESP * | 620 | TS_RESP * |
@@ -450,10 +674,32 @@ i2d_TS_RESP_fp(FILE *fp, TS_RESP *a) | |||
450 | return ASN1_i2d_fp_of_const(TS_RESP, i2d_TS_RESP, fp, a); | 674 | return ASN1_i2d_fp_of_const(TS_RESP, i2d_TS_RESP, fp, a); |
451 | } | 675 | } |
452 | 676 | ||
453 | ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { | 677 | static const ASN1_TEMPLATE ESS_ISSUER_SERIAL_seq_tt[] = { |
454 | ASN1_SEQUENCE_OF(ESS_ISSUER_SERIAL, issuer, GENERAL_NAME), | 678 | { |
455 | ASN1_SIMPLE(ESS_ISSUER_SERIAL, serial, ASN1_INTEGER) | 679 | .flags = ASN1_TFLG_SEQUENCE_OF, |
456 | } ASN1_SEQUENCE_END(ESS_ISSUER_SERIAL) | 680 | .tag = 0, |
681 | .offset = offsetof(ESS_ISSUER_SERIAL, issuer), | ||
682 | .field_name = "issuer", | ||
683 | .item = &GENERAL_NAME_it, | ||
684 | }, | ||
685 | { | ||
686 | .flags = 0, | ||
687 | .tag = 0, | ||
688 | .offset = offsetof(ESS_ISSUER_SERIAL, serial), | ||
689 | .field_name = "serial", | ||
690 | .item = &ASN1_INTEGER_it, | ||
691 | }, | ||
692 | }; | ||
693 | |||
694 | const ASN1_ITEM ESS_ISSUER_SERIAL_it = { | ||
695 | .itype = ASN1_ITYPE_SEQUENCE, | ||
696 | .utype = V_ASN1_SEQUENCE, | ||
697 | .templates = ESS_ISSUER_SERIAL_seq_tt, | ||
698 | .tcount = sizeof(ESS_ISSUER_SERIAL_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
699 | .funcs = NULL, | ||
700 | .size = sizeof(ESS_ISSUER_SERIAL), | ||
701 | .sname = "ESS_ISSUER_SERIAL", | ||
702 | }; | ||
457 | 703 | ||
458 | 704 | ||
459 | ESS_ISSUER_SERIAL * | 705 | ESS_ISSUER_SERIAL * |
@@ -487,10 +733,32 @@ ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *x) | |||
487 | return ASN1_item_dup(&ESS_ISSUER_SERIAL_it, x); | 733 | return ASN1_item_dup(&ESS_ISSUER_SERIAL_it, x); |
488 | } | 734 | } |
489 | 735 | ||
490 | ASN1_SEQUENCE(ESS_CERT_ID) = { | 736 | static const ASN1_TEMPLATE ESS_CERT_ID_seq_tt[] = { |
491 | ASN1_SIMPLE(ESS_CERT_ID, hash, ASN1_OCTET_STRING), | 737 | { |
492 | ASN1_OPT(ESS_CERT_ID, issuer_serial, ESS_ISSUER_SERIAL) | 738 | .flags = 0, |
493 | } ASN1_SEQUENCE_END(ESS_CERT_ID) | 739 | .tag = 0, |
740 | .offset = offsetof(ESS_CERT_ID, hash), | ||
741 | .field_name = "hash", | ||
742 | .item = &ASN1_OCTET_STRING_it, | ||
743 | }, | ||
744 | { | ||
745 | .flags = ASN1_TFLG_OPTIONAL, | ||
746 | .tag = 0, | ||
747 | .offset = offsetof(ESS_CERT_ID, issuer_serial), | ||
748 | .field_name = "issuer_serial", | ||
749 | .item = &ESS_ISSUER_SERIAL_it, | ||
750 | }, | ||
751 | }; | ||
752 | |||
753 | const ASN1_ITEM ESS_CERT_ID_it = { | ||
754 | .itype = ASN1_ITYPE_SEQUENCE, | ||
755 | .utype = V_ASN1_SEQUENCE, | ||
756 | .templates = ESS_CERT_ID_seq_tt, | ||
757 | .tcount = sizeof(ESS_CERT_ID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
758 | .funcs = NULL, | ||
759 | .size = sizeof(ESS_CERT_ID), | ||
760 | .sname = "ESS_CERT_ID", | ||
761 | }; | ||
494 | 762 | ||
495 | 763 | ||
496 | ESS_CERT_ID * | 764 | ESS_CERT_ID * |
@@ -524,10 +792,32 @@ ESS_CERT_ID_dup(ESS_CERT_ID *x) | |||
524 | return ASN1_item_dup(&ESS_CERT_ID_it, x); | 792 | return ASN1_item_dup(&ESS_CERT_ID_it, x); |
525 | } | 793 | } |
526 | 794 | ||
527 | ASN1_SEQUENCE(ESS_SIGNING_CERT) = { | 795 | static const ASN1_TEMPLATE ESS_SIGNING_CERT_seq_tt[] = { |
528 | ASN1_SEQUENCE_OF(ESS_SIGNING_CERT, cert_ids, ESS_CERT_ID), | 796 | { |
529 | ASN1_SEQUENCE_OF_OPT(ESS_SIGNING_CERT, policy_info, POLICYINFO) | 797 | .flags = ASN1_TFLG_SEQUENCE_OF, |
530 | } ASN1_SEQUENCE_END(ESS_SIGNING_CERT) | 798 | .tag = 0, |
799 | .offset = offsetof(ESS_SIGNING_CERT, cert_ids), | ||
800 | .field_name = "cert_ids", | ||
801 | .item = &ESS_CERT_ID_it, | ||
802 | }, | ||
803 | { | ||
804 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
805 | .tag = 0, | ||
806 | .offset = offsetof(ESS_SIGNING_CERT, policy_info), | ||
807 | .field_name = "policy_info", | ||
808 | .item = &POLICYINFO_it, | ||
809 | }, | ||
810 | }; | ||
811 | |||
812 | const ASN1_ITEM ESS_SIGNING_CERT_it = { | ||
813 | .itype = ASN1_ITYPE_SEQUENCE, | ||
814 | .utype = V_ASN1_SEQUENCE, | ||
815 | .templates = ESS_SIGNING_CERT_seq_tt, | ||
816 | .tcount = sizeof(ESS_SIGNING_CERT_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
817 | .funcs = NULL, | ||
818 | .size = sizeof(ESS_SIGNING_CERT), | ||
819 | .sname = "ESS_SIGNING_CERT", | ||
820 | }; | ||
531 | 821 | ||
532 | 822 | ||
533 | ESS_SIGNING_CERT * | 823 | ESS_SIGNING_CERT * |
diff --git a/src/lib/libssl/src/crypto/ts/ts_asn1.c b/src/lib/libssl/src/crypto/ts/ts_asn1.c index d85f3690c0..1386483247 100644 --- a/src/lib/libssl/src/crypto/ts/ts_asn1.c +++ b/src/lib/libssl/src/crypto/ts/ts_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ts_asn1.c,v 1.8 2015/02/10 05:25:45 jsing Exp $ */ | 1 | /* $OpenBSD: ts_asn1.c,v 1.9 2015/07/24 15:25:44 jsing Exp $ */ |
2 | /* Written by Nils Larsch for the OpenSSL project 2004. | 2 | /* Written by Nils Larsch for the OpenSSL project 2004. |
3 | */ | 3 | */ |
4 | /* ==================================================================== | 4 | /* ==================================================================== |
@@ -61,10 +61,32 @@ | |||
61 | #include <openssl/err.h> | 61 | #include <openssl/err.h> |
62 | #include <openssl/asn1t.h> | 62 | #include <openssl/asn1t.h> |
63 | 63 | ||
64 | ASN1_SEQUENCE(TS_MSG_IMPRINT) = { | 64 | static const ASN1_TEMPLATE TS_MSG_IMPRINT_seq_tt[] = { |
65 | ASN1_SIMPLE(TS_MSG_IMPRINT, hash_algo, X509_ALGOR), | 65 | { |
66 | ASN1_SIMPLE(TS_MSG_IMPRINT, hashed_msg, ASN1_OCTET_STRING) | 66 | .flags = 0, |
67 | } ASN1_SEQUENCE_END(TS_MSG_IMPRINT) | 67 | .tag = 0, |
68 | .offset = offsetof(TS_MSG_IMPRINT, hash_algo), | ||
69 | .field_name = "hash_algo", | ||
70 | .item = &X509_ALGOR_it, | ||
71 | }, | ||
72 | { | ||
73 | .flags = 0, | ||
74 | .tag = 0, | ||
75 | .offset = offsetof(TS_MSG_IMPRINT, hashed_msg), | ||
76 | .field_name = "hashed_msg", | ||
77 | .item = &ASN1_OCTET_STRING_it, | ||
78 | }, | ||
79 | }; | ||
80 | |||
81 | const ASN1_ITEM TS_MSG_IMPRINT_it = { | ||
82 | .itype = ASN1_ITYPE_SEQUENCE, | ||
83 | .utype = V_ASN1_SEQUENCE, | ||
84 | .templates = TS_MSG_IMPRINT_seq_tt, | ||
85 | .tcount = sizeof(TS_MSG_IMPRINT_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
86 | .funcs = NULL, | ||
87 | .size = sizeof(TS_MSG_IMPRINT), | ||
88 | .sname = "TS_MSG_IMPRINT", | ||
89 | }; | ||
68 | 90 | ||
69 | 91 | ||
70 | TS_MSG_IMPRINT * | 92 | TS_MSG_IMPRINT * |
@@ -126,14 +148,60 @@ i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a) | |||
126 | return ASN1_i2d_fp_of_const(TS_MSG_IMPRINT, i2d_TS_MSG_IMPRINT, fp, a); | 148 | return ASN1_i2d_fp_of_const(TS_MSG_IMPRINT, i2d_TS_MSG_IMPRINT, fp, a); |
127 | } | 149 | } |
128 | 150 | ||
129 | ASN1_SEQUENCE(TS_REQ) = { | 151 | static const ASN1_TEMPLATE TS_REQ_seq_tt[] = { |
130 | ASN1_SIMPLE(TS_REQ, version, ASN1_INTEGER), | 152 | { |
131 | ASN1_SIMPLE(TS_REQ, msg_imprint, TS_MSG_IMPRINT), | 153 | .flags = 0, |
132 | ASN1_OPT(TS_REQ, policy_id, ASN1_OBJECT), | 154 | .tag = 0, |
133 | ASN1_OPT(TS_REQ, nonce, ASN1_INTEGER), | 155 | .offset = offsetof(TS_REQ, version), |
134 | ASN1_OPT(TS_REQ, cert_req, ASN1_FBOOLEAN), | 156 | .field_name = "version", |
135 | ASN1_IMP_SEQUENCE_OF_OPT(TS_REQ, extensions, X509_EXTENSION, 0) | 157 | .item = &ASN1_INTEGER_it, |
136 | } ASN1_SEQUENCE_END(TS_REQ) | 158 | }, |
159 | { | ||
160 | .flags = 0, | ||
161 | .tag = 0, | ||
162 | .offset = offsetof(TS_REQ, msg_imprint), | ||
163 | .field_name = "msg_imprint", | ||
164 | .item = &TS_MSG_IMPRINT_it, | ||
165 | }, | ||
166 | { | ||
167 | .flags = ASN1_TFLG_OPTIONAL, | ||
168 | .tag = 0, | ||
169 | .offset = offsetof(TS_REQ, policy_id), | ||
170 | .field_name = "policy_id", | ||
171 | .item = &ASN1_OBJECT_it, | ||
172 | }, | ||
173 | { | ||
174 | .flags = ASN1_TFLG_OPTIONAL, | ||
175 | .tag = 0, | ||
176 | .offset = offsetof(TS_REQ, nonce), | ||
177 | .field_name = "nonce", | ||
178 | .item = &ASN1_INTEGER_it, | ||
179 | }, | ||
180 | { | ||
181 | .flags = ASN1_TFLG_OPTIONAL, | ||
182 | .tag = 0, | ||
183 | .offset = offsetof(TS_REQ, cert_req), | ||
184 | .field_name = "cert_req", | ||
185 | .item = &ASN1_FBOOLEAN_it, | ||
186 | }, | ||
187 | { | ||
188 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
189 | .tag = 0, | ||
190 | .offset = offsetof(TS_REQ, extensions), | ||
191 | .field_name = "extensions", | ||
192 | .item = &X509_EXTENSION_it, | ||
193 | }, | ||
194 | }; | ||
195 | |||
196 | const ASN1_ITEM TS_REQ_it = { | ||
197 | .itype = ASN1_ITYPE_SEQUENCE, | ||
198 | .utype = V_ASN1_SEQUENCE, | ||
199 | .templates = TS_REQ_seq_tt, | ||
200 | .tcount = sizeof(TS_REQ_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
201 | .funcs = NULL, | ||
202 | .size = sizeof(TS_REQ), | ||
203 | .sname = "TS_REQ", | ||
204 | }; | ||
137 | 205 | ||
138 | 206 | ||
139 | TS_REQ * | 207 | TS_REQ * |
@@ -193,11 +261,39 @@ i2d_TS_REQ_fp(FILE *fp, TS_REQ *a) | |||
193 | return ASN1_i2d_fp_of_const(TS_REQ, i2d_TS_REQ, fp, a); | 261 | return ASN1_i2d_fp_of_const(TS_REQ, i2d_TS_REQ, fp, a); |
194 | } | 262 | } |
195 | 263 | ||
196 | ASN1_SEQUENCE(TS_ACCURACY) = { | 264 | static const ASN1_TEMPLATE TS_ACCURACY_seq_tt[] = { |
197 | ASN1_OPT(TS_ACCURACY, seconds, ASN1_INTEGER), | 265 | { |
198 | ASN1_IMP_OPT(TS_ACCURACY, millis, ASN1_INTEGER, 0), | 266 | .flags = ASN1_TFLG_OPTIONAL, |
199 | ASN1_IMP_OPT(TS_ACCURACY, micros, ASN1_INTEGER, 1) | 267 | .tag = 0, |
200 | } ASN1_SEQUENCE_END(TS_ACCURACY) | 268 | .offset = offsetof(TS_ACCURACY, seconds), |
269 | .field_name = "seconds", | ||
270 | .item = &ASN1_INTEGER_it, | ||
271 | }, | ||
272 | { | ||
273 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL, | ||
274 | .tag = 0, | ||
275 | .offset = offsetof(TS_ACCURACY, millis), | ||
276 | .field_name = "millis", | ||
277 | .item = &ASN1_INTEGER_it, | ||
278 | }, | ||
279 | { | ||
280 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL, | ||
281 | .tag = 1, | ||
282 | .offset = offsetof(TS_ACCURACY, micros), | ||
283 | .field_name = "micros", | ||
284 | .item = &ASN1_INTEGER_it, | ||
285 | }, | ||
286 | }; | ||
287 | |||
288 | const ASN1_ITEM TS_ACCURACY_it = { | ||
289 | .itype = ASN1_ITYPE_SEQUENCE, | ||
290 | .utype = V_ASN1_SEQUENCE, | ||
291 | .templates = TS_ACCURACY_seq_tt, | ||
292 | .tcount = sizeof(TS_ACCURACY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
293 | .funcs = NULL, | ||
294 | .size = sizeof(TS_ACCURACY), | ||
295 | .sname = "TS_ACCURACY", | ||
296 | }; | ||
201 | 297 | ||
202 | 298 | ||
203 | TS_ACCURACY * | 299 | TS_ACCURACY * |
@@ -231,18 +327,88 @@ TS_ACCURACY_dup(TS_ACCURACY *x) | |||
231 | return ASN1_item_dup(&TS_ACCURACY_it, x); | 327 | return ASN1_item_dup(&TS_ACCURACY_it, x); |
232 | } | 328 | } |
233 | 329 | ||
234 | ASN1_SEQUENCE(TS_TST_INFO) = { | 330 | static const ASN1_TEMPLATE TS_TST_INFO_seq_tt[] = { |
235 | ASN1_SIMPLE(TS_TST_INFO, version, ASN1_INTEGER), | 331 | { |
236 | ASN1_SIMPLE(TS_TST_INFO, policy_id, ASN1_OBJECT), | 332 | .flags = 0, |
237 | ASN1_SIMPLE(TS_TST_INFO, msg_imprint, TS_MSG_IMPRINT), | 333 | .tag = 0, |
238 | ASN1_SIMPLE(TS_TST_INFO, serial, ASN1_INTEGER), | 334 | .offset = offsetof(TS_TST_INFO, version), |
239 | ASN1_SIMPLE(TS_TST_INFO, time, ASN1_GENERALIZEDTIME), | 335 | .field_name = "version", |
240 | ASN1_OPT(TS_TST_INFO, accuracy, TS_ACCURACY), | 336 | .item = &ASN1_INTEGER_it, |
241 | ASN1_OPT(TS_TST_INFO, ordering, ASN1_FBOOLEAN), | 337 | }, |
242 | ASN1_OPT(TS_TST_INFO, nonce, ASN1_INTEGER), | 338 | { |
243 | ASN1_EXP_OPT(TS_TST_INFO, tsa, GENERAL_NAME, 0), | 339 | .flags = 0, |
244 | ASN1_IMP_SEQUENCE_OF_OPT(TS_TST_INFO, extensions, X509_EXTENSION, 1) | 340 | .tag = 0, |
245 | } ASN1_SEQUENCE_END(TS_TST_INFO) | 341 | .offset = offsetof(TS_TST_INFO, policy_id), |
342 | .field_name = "policy_id", | ||
343 | .item = &ASN1_OBJECT_it, | ||
344 | }, | ||
345 | { | ||
346 | .flags = 0, | ||
347 | .tag = 0, | ||
348 | .offset = offsetof(TS_TST_INFO, msg_imprint), | ||
349 | .field_name = "msg_imprint", | ||
350 | .item = &TS_MSG_IMPRINT_it, | ||
351 | }, | ||
352 | { | ||
353 | .flags = 0, | ||
354 | .tag = 0, | ||
355 | .offset = offsetof(TS_TST_INFO, serial), | ||
356 | .field_name = "serial", | ||
357 | .item = &ASN1_INTEGER_it, | ||
358 | }, | ||
359 | { | ||
360 | .flags = 0, | ||
361 | .tag = 0, | ||
362 | .offset = offsetof(TS_TST_INFO, time), | ||
363 | .field_name = "time", | ||
364 | .item = &ASN1_GENERALIZEDTIME_it, | ||
365 | }, | ||
366 | { | ||
367 | .flags = ASN1_TFLG_OPTIONAL, | ||
368 | .tag = 0, | ||
369 | .offset = offsetof(TS_TST_INFO, accuracy), | ||
370 | .field_name = "accuracy", | ||
371 | .item = &TS_ACCURACY_it, | ||
372 | }, | ||
373 | { | ||
374 | .flags = ASN1_TFLG_OPTIONAL, | ||
375 | .tag = 0, | ||
376 | .offset = offsetof(TS_TST_INFO, ordering), | ||
377 | .field_name = "ordering", | ||
378 | .item = &ASN1_FBOOLEAN_it, | ||
379 | }, | ||
380 | { | ||
381 | .flags = ASN1_TFLG_OPTIONAL, | ||
382 | .tag = 0, | ||
383 | .offset = offsetof(TS_TST_INFO, nonce), | ||
384 | .field_name = "nonce", | ||
385 | .item = &ASN1_INTEGER_it, | ||
386 | }, | ||
387 | { | ||
388 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
389 | .tag = 0, | ||
390 | .offset = offsetof(TS_TST_INFO, tsa), | ||
391 | .field_name = "tsa", | ||
392 | .item = &GENERAL_NAME_it, | ||
393 | }, | ||
394 | { | ||
395 | .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
396 | .tag = 1, | ||
397 | .offset = offsetof(TS_TST_INFO, extensions), | ||
398 | .field_name = "extensions", | ||
399 | .item = &X509_EXTENSION_it, | ||
400 | }, | ||
401 | }; | ||
402 | |||
403 | const ASN1_ITEM TS_TST_INFO_it = { | ||
404 | .itype = ASN1_ITYPE_SEQUENCE, | ||
405 | .utype = V_ASN1_SEQUENCE, | ||
406 | .templates = TS_TST_INFO_seq_tt, | ||
407 | .tcount = sizeof(TS_TST_INFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
408 | .funcs = NULL, | ||
409 | .size = sizeof(TS_TST_INFO), | ||
410 | .sname = "TS_TST_INFO", | ||
411 | }; | ||
246 | 412 | ||
247 | 413 | ||
248 | TS_TST_INFO * | 414 | TS_TST_INFO * |
@@ -304,11 +470,39 @@ i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a) | |||
304 | return ASN1_i2d_fp_of_const(TS_TST_INFO, i2d_TS_TST_INFO, fp, a); | 470 | return ASN1_i2d_fp_of_const(TS_TST_INFO, i2d_TS_TST_INFO, fp, a); |
305 | } | 471 | } |
306 | 472 | ||
307 | ASN1_SEQUENCE(TS_STATUS_INFO) = { | 473 | static const ASN1_TEMPLATE TS_STATUS_INFO_seq_tt[] = { |
308 | ASN1_SIMPLE(TS_STATUS_INFO, status, ASN1_INTEGER), | 474 | { |
309 | ASN1_SEQUENCE_OF_OPT(TS_STATUS_INFO, text, ASN1_UTF8STRING), | 475 | .flags = 0, |
310 | ASN1_OPT(TS_STATUS_INFO, failure_info, ASN1_BIT_STRING) | 476 | .tag = 0, |
311 | } ASN1_SEQUENCE_END(TS_STATUS_INFO) | 477 | .offset = offsetof(TS_STATUS_INFO, status), |
478 | .field_name = "status", | ||
479 | .item = &ASN1_INTEGER_it, | ||
480 | }, | ||
481 | { | ||
482 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
483 | .tag = 0, | ||
484 | .offset = offsetof(TS_STATUS_INFO, text), | ||
485 | .field_name = "text", | ||
486 | .item = &ASN1_UTF8STRING_it, | ||
487 | }, | ||
488 | { | ||
489 | .flags = ASN1_TFLG_OPTIONAL, | ||
490 | .tag = 0, | ||
491 | .offset = offsetof(TS_STATUS_INFO, failure_info), | ||
492 | .field_name = "failure_info", | ||
493 | .item = &ASN1_BIT_STRING_it, | ||
494 | }, | ||
495 | }; | ||
496 | |||
497 | const ASN1_ITEM TS_STATUS_INFO_it = { | ||
498 | .itype = ASN1_ITYPE_SEQUENCE, | ||
499 | .utype = V_ASN1_SEQUENCE, | ||
500 | .templates = TS_STATUS_INFO_seq_tt, | ||
501 | .tcount = sizeof(TS_STATUS_INFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
502 | .funcs = NULL, | ||
503 | .size = sizeof(TS_STATUS_INFO), | ||
504 | .sname = "TS_STATUS_INFO", | ||
505 | }; | ||
312 | 506 | ||
313 | 507 | ||
314 | TS_STATUS_INFO * | 508 | TS_STATUS_INFO * |
@@ -387,10 +581,40 @@ ts_resp_cb(int op, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
387 | return 1; | 581 | return 1; |
388 | } | 582 | } |
389 | 583 | ||
390 | ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { | 584 | static const ASN1_AUX TS_RESP_aux = { |
391 | ASN1_SIMPLE(TS_RESP, status_info, TS_STATUS_INFO), | 585 | .app_data = NULL, |
392 | ASN1_OPT(TS_RESP, token, PKCS7), | 586 | .flags = 0, |
393 | } ASN1_SEQUENCE_END_cb(TS_RESP, TS_RESP) | 587 | .ref_offset = 0, |
588 | .ref_lock = 0, | ||
589 | .asn1_cb = ts_resp_cb, | ||
590 | .enc_offset = 0, | ||
591 | }; | ||
592 | static const ASN1_TEMPLATE TS_RESP_seq_tt[] = { | ||
593 | { | ||
594 | .flags = 0, | ||
595 | .tag = 0, | ||
596 | .offset = offsetof(TS_RESP, status_info), | ||
597 | .field_name = "status_info", | ||
598 | .item = &TS_STATUS_INFO_it, | ||
599 | }, | ||
600 | { | ||
601 | .flags = ASN1_TFLG_OPTIONAL, | ||
602 | .tag = 0, | ||
603 | .offset = offsetof(TS_RESP, token), | ||
604 | .field_name = "token", | ||
605 | .item = &PKCS7_it, | ||
606 | }, | ||
607 | }; | ||
608 | |||
609 | const ASN1_ITEM TS_RESP_it = { | ||
610 | .itype = ASN1_ITYPE_SEQUENCE, | ||
611 | .utype = V_ASN1_SEQUENCE, | ||
612 | .templates = TS_RESP_seq_tt, | ||
613 | .tcount = sizeof(TS_RESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
614 | .funcs = &TS_RESP_aux, | ||
615 | .size = sizeof(TS_RESP), | ||
616 | .sname = "TS_RESP", | ||
617 | }; | ||
394 | 618 | ||
395 | 619 | ||
396 | TS_RESP * | 620 | TS_RESP * |
@@ -450,10 +674,32 @@ i2d_TS_RESP_fp(FILE *fp, TS_RESP *a) | |||
450 | return ASN1_i2d_fp_of_const(TS_RESP, i2d_TS_RESP, fp, a); | 674 | return ASN1_i2d_fp_of_const(TS_RESP, i2d_TS_RESP, fp, a); |
451 | } | 675 | } |
452 | 676 | ||
453 | ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { | 677 | static const ASN1_TEMPLATE ESS_ISSUER_SERIAL_seq_tt[] = { |
454 | ASN1_SEQUENCE_OF(ESS_ISSUER_SERIAL, issuer, GENERAL_NAME), | 678 | { |
455 | ASN1_SIMPLE(ESS_ISSUER_SERIAL, serial, ASN1_INTEGER) | 679 | .flags = ASN1_TFLG_SEQUENCE_OF, |
456 | } ASN1_SEQUENCE_END(ESS_ISSUER_SERIAL) | 680 | .tag = 0, |
681 | .offset = offsetof(ESS_ISSUER_SERIAL, issuer), | ||
682 | .field_name = "issuer", | ||
683 | .item = &GENERAL_NAME_it, | ||
684 | }, | ||
685 | { | ||
686 | .flags = 0, | ||
687 | .tag = 0, | ||
688 | .offset = offsetof(ESS_ISSUER_SERIAL, serial), | ||
689 | .field_name = "serial", | ||
690 | .item = &ASN1_INTEGER_it, | ||
691 | }, | ||
692 | }; | ||
693 | |||
694 | const ASN1_ITEM ESS_ISSUER_SERIAL_it = { | ||
695 | .itype = ASN1_ITYPE_SEQUENCE, | ||
696 | .utype = V_ASN1_SEQUENCE, | ||
697 | .templates = ESS_ISSUER_SERIAL_seq_tt, | ||
698 | .tcount = sizeof(ESS_ISSUER_SERIAL_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
699 | .funcs = NULL, | ||
700 | .size = sizeof(ESS_ISSUER_SERIAL), | ||
701 | .sname = "ESS_ISSUER_SERIAL", | ||
702 | }; | ||
457 | 703 | ||
458 | 704 | ||
459 | ESS_ISSUER_SERIAL * | 705 | ESS_ISSUER_SERIAL * |
@@ -487,10 +733,32 @@ ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *x) | |||
487 | return ASN1_item_dup(&ESS_ISSUER_SERIAL_it, x); | 733 | return ASN1_item_dup(&ESS_ISSUER_SERIAL_it, x); |
488 | } | 734 | } |
489 | 735 | ||
490 | ASN1_SEQUENCE(ESS_CERT_ID) = { | 736 | static const ASN1_TEMPLATE ESS_CERT_ID_seq_tt[] = { |
491 | ASN1_SIMPLE(ESS_CERT_ID, hash, ASN1_OCTET_STRING), | 737 | { |
492 | ASN1_OPT(ESS_CERT_ID, issuer_serial, ESS_ISSUER_SERIAL) | 738 | .flags = 0, |
493 | } ASN1_SEQUENCE_END(ESS_CERT_ID) | 739 | .tag = 0, |
740 | .offset = offsetof(ESS_CERT_ID, hash), | ||
741 | .field_name = "hash", | ||
742 | .item = &ASN1_OCTET_STRING_it, | ||
743 | }, | ||
744 | { | ||
745 | .flags = ASN1_TFLG_OPTIONAL, | ||
746 | .tag = 0, | ||
747 | .offset = offsetof(ESS_CERT_ID, issuer_serial), | ||
748 | .field_name = "issuer_serial", | ||
749 | .item = &ESS_ISSUER_SERIAL_it, | ||
750 | }, | ||
751 | }; | ||
752 | |||
753 | const ASN1_ITEM ESS_CERT_ID_it = { | ||
754 | .itype = ASN1_ITYPE_SEQUENCE, | ||
755 | .utype = V_ASN1_SEQUENCE, | ||
756 | .templates = ESS_CERT_ID_seq_tt, | ||
757 | .tcount = sizeof(ESS_CERT_ID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
758 | .funcs = NULL, | ||
759 | .size = sizeof(ESS_CERT_ID), | ||
760 | .sname = "ESS_CERT_ID", | ||
761 | }; | ||
494 | 762 | ||
495 | 763 | ||
496 | ESS_CERT_ID * | 764 | ESS_CERT_ID * |
@@ -524,10 +792,32 @@ ESS_CERT_ID_dup(ESS_CERT_ID *x) | |||
524 | return ASN1_item_dup(&ESS_CERT_ID_it, x); | 792 | return ASN1_item_dup(&ESS_CERT_ID_it, x); |
525 | } | 793 | } |
526 | 794 | ||
527 | ASN1_SEQUENCE(ESS_SIGNING_CERT) = { | 795 | static const ASN1_TEMPLATE ESS_SIGNING_CERT_seq_tt[] = { |
528 | ASN1_SEQUENCE_OF(ESS_SIGNING_CERT, cert_ids, ESS_CERT_ID), | 796 | { |
529 | ASN1_SEQUENCE_OF_OPT(ESS_SIGNING_CERT, policy_info, POLICYINFO) | 797 | .flags = ASN1_TFLG_SEQUENCE_OF, |
530 | } ASN1_SEQUENCE_END(ESS_SIGNING_CERT) | 798 | .tag = 0, |
799 | .offset = offsetof(ESS_SIGNING_CERT, cert_ids), | ||
800 | .field_name = "cert_ids", | ||
801 | .item = &ESS_CERT_ID_it, | ||
802 | }, | ||
803 | { | ||
804 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
805 | .tag = 0, | ||
806 | .offset = offsetof(ESS_SIGNING_CERT, policy_info), | ||
807 | .field_name = "policy_info", | ||
808 | .item = &POLICYINFO_it, | ||
809 | }, | ||
810 | }; | ||
811 | |||
812 | const ASN1_ITEM ESS_SIGNING_CERT_it = { | ||
813 | .itype = ASN1_ITYPE_SEQUENCE, | ||
814 | .utype = V_ASN1_SEQUENCE, | ||
815 | .templates = ESS_SIGNING_CERT_seq_tt, | ||
816 | .tcount = sizeof(ESS_SIGNING_CERT_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
817 | .funcs = NULL, | ||
818 | .size = sizeof(ESS_SIGNING_CERT), | ||
819 | .sname = "ESS_SIGNING_CERT", | ||
820 | }; | ||
531 | 821 | ||
532 | 822 | ||
533 | ESS_SIGNING_CERT * | 823 | ESS_SIGNING_CERT * |