diff options
| author | jsing <> | 2015-07-24 15:25:44 +0000 |
|---|---|---|
| committer | jsing <> | 2015-07-24 15:25:44 +0000 |
| commit | 27b033dd3c62067e7e76be7e21528f4b2217adbe (patch) | |
| tree | 105584d7df5635d51a2d08e212d669ec2d77a456 /src | |
| parent | 3a123d7b7fd9497703efd6aa45f42efaacfc4e15 (diff) | |
| download | openbsd-27b033dd3c62067e7e76be7e21528f4b2217adbe.tar.gz openbsd-27b033dd3c62067e7e76be7e21528f4b2217adbe.tar.bz2 openbsd-27b033dd3c62067e7e76be7e21528f4b2217adbe.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 * |
