summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2015-07-24 15:25:44 +0000
committerjsing <>2015-07-24 15:25:44 +0000
commit69f8a103298106869ae8f84c3c47cd591bfbb4be (patch)
tree105584d7df5635d51a2d08e212d669ec2d77a456 /src
parente2e594b31f7a751901c6f7fc1f5cc328d8bd4cfd (diff)
downloadopenbsd-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.c392
-rw-r--r--src/lib/libssl/src/crypto/ts/ts_asn1.c392
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
64ASN1_SEQUENCE(TS_MSG_IMPRINT) = { 64static 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
81const 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
70TS_MSG_IMPRINT * 92TS_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
129ASN1_SEQUENCE(TS_REQ) = { 151static 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
196const 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
139TS_REQ * 207TS_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
196ASN1_SEQUENCE(TS_ACCURACY) = { 264static 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
288const 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
203TS_ACCURACY * 299TS_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
234ASN1_SEQUENCE(TS_TST_INFO) = { 330static 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
403const 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
248TS_TST_INFO * 414TS_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
307ASN1_SEQUENCE(TS_STATUS_INFO) = { 473static 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
497const 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
314TS_STATUS_INFO * 508TS_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
390ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { 584static 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};
592static 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
609const 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
396TS_RESP * 620TS_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
453ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { 677static 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
694const 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
459ESS_ISSUER_SERIAL * 705ESS_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
490ASN1_SEQUENCE(ESS_CERT_ID) = { 736static 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
753const 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
496ESS_CERT_ID * 764ESS_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
527ASN1_SEQUENCE(ESS_SIGNING_CERT) = { 795static 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
812const 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
533ESS_SIGNING_CERT * 823ESS_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
64ASN1_SEQUENCE(TS_MSG_IMPRINT) = { 64static 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
81const 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
70TS_MSG_IMPRINT * 92TS_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
129ASN1_SEQUENCE(TS_REQ) = { 151static 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
196const 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
139TS_REQ * 207TS_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
196ASN1_SEQUENCE(TS_ACCURACY) = { 264static 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
288const 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
203TS_ACCURACY * 299TS_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
234ASN1_SEQUENCE(TS_TST_INFO) = { 330static 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
403const 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
248TS_TST_INFO * 414TS_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
307ASN1_SEQUENCE(TS_STATUS_INFO) = { 473static 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
497const 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
314TS_STATUS_INFO * 508TS_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
390ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { 584static 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};
592static 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
609const 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
396TS_RESP * 620TS_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
453ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { 677static 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
694const 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
459ESS_ISSUER_SERIAL * 705ESS_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
490ASN1_SEQUENCE(ESS_CERT_ID) = { 736static 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
753const 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
496ESS_CERT_ID * 764ESS_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
527ASN1_SEQUENCE(ESS_SIGNING_CERT) = { 795static 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
812const 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
533ESS_SIGNING_CERT * 823ESS_SIGNING_CERT *