diff options
Diffstat (limited to 'src/lib/libcrypto/ts/ts_asn1.c')
| -rw-r--r-- | src/lib/libcrypto/ts/ts_asn1.c | 236 |
1 files changed, 226 insertions, 10 deletions
diff --git a/src/lib/libcrypto/ts/ts_asn1.c b/src/lib/libcrypto/ts/ts_asn1.c index bb87aa1d88..3ef882cf05 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.5 2014/07/10 22:45:58 jsing Exp $ */ | 1 | /* $OpenBSD: ts_asn1.c,v 1.6 2015/02/10 04:01:26 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 | /* ==================================================================== |
| @@ -66,7 +66,31 @@ ASN1_SEQUENCE(TS_MSG_IMPRINT) = { | |||
| 66 | ASN1_SIMPLE(TS_MSG_IMPRINT, hashed_msg, ASN1_OCTET_STRING) | 66 | ASN1_SIMPLE(TS_MSG_IMPRINT, hashed_msg, ASN1_OCTET_STRING) |
| 67 | } ASN1_SEQUENCE_END(TS_MSG_IMPRINT) | 67 | } ASN1_SEQUENCE_END(TS_MSG_IMPRINT) |
| 68 | 68 | ||
| 69 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_MSG_IMPRINT) | 69 | |
| 70 | TS_MSG_IMPRINT * | ||
| 71 | d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, const unsigned char **in, long len) | ||
| 72 | { | ||
| 73 | return (TS_MSG_IMPRINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 74 | &TS_MSG_IMPRINT_it); | ||
| 75 | } | ||
| 76 | |||
| 77 | int | ||
| 78 | i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **out) | ||
| 79 | { | ||
| 80 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_MSG_IMPRINT_it); | ||
| 81 | } | ||
| 82 | |||
| 83 | TS_MSG_IMPRINT * | ||
| 84 | TS_MSG_IMPRINT_new(void) | ||
| 85 | { | ||
| 86 | return (TS_MSG_IMPRINT *)ASN1_item_new(&TS_MSG_IMPRINT_it); | ||
| 87 | } | ||
| 88 | |||
| 89 | void | ||
| 90 | TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a) | ||
| 91 | { | ||
| 92 | ASN1_item_free((ASN1_VALUE *)a, &TS_MSG_IMPRINT_it); | ||
| 93 | } | ||
| 70 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) | 94 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) |
| 71 | 95 | ||
| 72 | #ifndef OPENSSL_NO_BIO | 96 | #ifndef OPENSSL_NO_BIO |
| @@ -106,7 +130,31 @@ ASN1_SEQUENCE(TS_REQ) = { | |||
| 106 | ASN1_IMP_SEQUENCE_OF_OPT(TS_REQ, extensions, X509_EXTENSION, 0) | 130 | ASN1_IMP_SEQUENCE_OF_OPT(TS_REQ, extensions, X509_EXTENSION, 0) |
| 107 | } ASN1_SEQUENCE_END(TS_REQ) | 131 | } ASN1_SEQUENCE_END(TS_REQ) |
| 108 | 132 | ||
| 109 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_REQ) | 133 | |
| 134 | TS_REQ * | ||
| 135 | d2i_TS_REQ(TS_REQ **a, const unsigned char **in, long len) | ||
| 136 | { | ||
| 137 | return (TS_REQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 138 | &TS_REQ_it); | ||
| 139 | } | ||
| 140 | |||
| 141 | int | ||
| 142 | i2d_TS_REQ(const TS_REQ *a, unsigned char **out) | ||
| 143 | { | ||
| 144 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_REQ_it); | ||
| 145 | } | ||
| 146 | |||
| 147 | TS_REQ * | ||
| 148 | TS_REQ_new(void) | ||
| 149 | { | ||
| 150 | return (TS_REQ *)ASN1_item_new(&TS_REQ_it); | ||
| 151 | } | ||
| 152 | |||
| 153 | void | ||
| 154 | TS_REQ_free(TS_REQ *a) | ||
| 155 | { | ||
| 156 | ASN1_item_free((ASN1_VALUE *)a, &TS_REQ_it); | ||
| 157 | } | ||
| 110 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_REQ) | 158 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_REQ) |
| 111 | 159 | ||
| 112 | #ifndef OPENSSL_NO_BIO | 160 | #ifndef OPENSSL_NO_BIO |
| @@ -141,7 +189,31 @@ ASN1_SEQUENCE(TS_ACCURACY) = { | |||
| 141 | ASN1_IMP_OPT(TS_ACCURACY, micros, ASN1_INTEGER, 1) | 189 | ASN1_IMP_OPT(TS_ACCURACY, micros, ASN1_INTEGER, 1) |
| 142 | } ASN1_SEQUENCE_END(TS_ACCURACY) | 190 | } ASN1_SEQUENCE_END(TS_ACCURACY) |
| 143 | 191 | ||
| 144 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_ACCURACY) | 192 | |
| 193 | TS_ACCURACY * | ||
| 194 | d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **in, long len) | ||
| 195 | { | ||
| 196 | return (TS_ACCURACY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 197 | &TS_ACCURACY_it); | ||
| 198 | } | ||
| 199 | |||
| 200 | int | ||
| 201 | i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **out) | ||
| 202 | { | ||
| 203 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_ACCURACY_it); | ||
| 204 | } | ||
| 205 | |||
| 206 | TS_ACCURACY * | ||
| 207 | TS_ACCURACY_new(void) | ||
| 208 | { | ||
| 209 | return (TS_ACCURACY *)ASN1_item_new(&TS_ACCURACY_it); | ||
| 210 | } | ||
| 211 | |||
| 212 | void | ||
| 213 | TS_ACCURACY_free(TS_ACCURACY *a) | ||
| 214 | { | ||
| 215 | ASN1_item_free((ASN1_VALUE *)a, &TS_ACCURACY_it); | ||
| 216 | } | ||
| 145 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY) | 217 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY) |
| 146 | 218 | ||
| 147 | ASN1_SEQUENCE(TS_TST_INFO) = { | 219 | ASN1_SEQUENCE(TS_TST_INFO) = { |
| @@ -157,7 +229,31 @@ ASN1_SEQUENCE(TS_TST_INFO) = { | |||
| 157 | ASN1_IMP_SEQUENCE_OF_OPT(TS_TST_INFO, extensions, X509_EXTENSION, 1) | 229 | ASN1_IMP_SEQUENCE_OF_OPT(TS_TST_INFO, extensions, X509_EXTENSION, 1) |
| 158 | } ASN1_SEQUENCE_END(TS_TST_INFO) | 230 | } ASN1_SEQUENCE_END(TS_TST_INFO) |
| 159 | 231 | ||
| 160 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_TST_INFO) | 232 | |
| 233 | TS_TST_INFO * | ||
| 234 | d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **in, long len) | ||
| 235 | { | ||
| 236 | return (TS_TST_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 237 | &TS_TST_INFO_it); | ||
| 238 | } | ||
| 239 | |||
| 240 | int | ||
| 241 | i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **out) | ||
| 242 | { | ||
| 243 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_TST_INFO_it); | ||
| 244 | } | ||
| 245 | |||
| 246 | TS_TST_INFO * | ||
| 247 | TS_TST_INFO_new(void) | ||
| 248 | { | ||
| 249 | return (TS_TST_INFO *)ASN1_item_new(&TS_TST_INFO_it); | ||
| 250 | } | ||
| 251 | |||
| 252 | void | ||
| 253 | TS_TST_INFO_free(TS_TST_INFO *a) | ||
| 254 | { | ||
| 255 | ASN1_item_free((ASN1_VALUE *)a, &TS_TST_INFO_it); | ||
| 256 | } | ||
| 161 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_TST_INFO) | 257 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_TST_INFO) |
| 162 | 258 | ||
| 163 | #ifndef OPENSSL_NO_BIO | 259 | #ifndef OPENSSL_NO_BIO |
| @@ -194,7 +290,31 @@ ASN1_SEQUENCE(TS_STATUS_INFO) = { | |||
| 194 | ASN1_OPT(TS_STATUS_INFO, failure_info, ASN1_BIT_STRING) | 290 | ASN1_OPT(TS_STATUS_INFO, failure_info, ASN1_BIT_STRING) |
| 195 | } ASN1_SEQUENCE_END(TS_STATUS_INFO) | 291 | } ASN1_SEQUENCE_END(TS_STATUS_INFO) |
| 196 | 292 | ||
| 197 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_STATUS_INFO) | 293 | |
| 294 | TS_STATUS_INFO * | ||
| 295 | d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, const unsigned char **in, long len) | ||
| 296 | { | ||
| 297 | return (TS_STATUS_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 298 | &TS_STATUS_INFO_it); | ||
| 299 | } | ||
| 300 | |||
| 301 | int | ||
| 302 | i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **out) | ||
| 303 | { | ||
| 304 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_STATUS_INFO_it); | ||
| 305 | } | ||
| 306 | |||
| 307 | TS_STATUS_INFO * | ||
| 308 | TS_STATUS_INFO_new(void) | ||
| 309 | { | ||
| 310 | return (TS_STATUS_INFO *)ASN1_item_new(&TS_STATUS_INFO_it); | ||
| 311 | } | ||
| 312 | |||
| 313 | void | ||
| 314 | TS_STATUS_INFO_free(TS_STATUS_INFO *a) | ||
| 315 | { | ||
| 316 | ASN1_item_free((ASN1_VALUE *)a, &TS_STATUS_INFO_it); | ||
| 317 | } | ||
| 198 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO) | 318 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO) |
| 199 | 319 | ||
| 200 | static int | 320 | static int |
| @@ -247,7 +367,31 @@ ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { | |||
| 247 | ASN1_OPT(TS_RESP, token, PKCS7), | 367 | ASN1_OPT(TS_RESP, token, PKCS7), |
| 248 | } ASN1_SEQUENCE_END_cb(TS_RESP, TS_RESP) | 368 | } ASN1_SEQUENCE_END_cb(TS_RESP, TS_RESP) |
| 249 | 369 | ||
| 250 | IMPLEMENT_ASN1_FUNCTIONS_const(TS_RESP) | 370 | |
| 371 | TS_RESP * | ||
| 372 | d2i_TS_RESP(TS_RESP **a, const unsigned char **in, long len) | ||
| 373 | { | ||
| 374 | return (TS_RESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 375 | &TS_RESP_it); | ||
| 376 | } | ||
| 377 | |||
| 378 | int | ||
| 379 | i2d_TS_RESP(const TS_RESP *a, unsigned char **out) | ||
| 380 | { | ||
| 381 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_RESP_it); | ||
| 382 | } | ||
| 383 | |||
| 384 | TS_RESP * | ||
| 385 | TS_RESP_new(void) | ||
| 386 | { | ||
| 387 | return (TS_RESP *)ASN1_item_new(&TS_RESP_it); | ||
| 388 | } | ||
| 389 | |||
| 390 | void | ||
| 391 | TS_RESP_free(TS_RESP *a) | ||
| 392 | { | ||
| 393 | ASN1_item_free((ASN1_VALUE *)a, &TS_RESP_it); | ||
| 394 | } | ||
| 251 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_RESP) | 395 | IMPLEMENT_ASN1_DUP_FUNCTION(TS_RESP) |
| 252 | 396 | ||
| 253 | #ifndef OPENSSL_NO_BIO | 397 | #ifndef OPENSSL_NO_BIO |
| @@ -281,7 +425,31 @@ ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { | |||
| 281 | ASN1_SIMPLE(ESS_ISSUER_SERIAL, serial, ASN1_INTEGER) | 425 | ASN1_SIMPLE(ESS_ISSUER_SERIAL, serial, ASN1_INTEGER) |
| 282 | } ASN1_SEQUENCE_END(ESS_ISSUER_SERIAL) | 426 | } ASN1_SEQUENCE_END(ESS_ISSUER_SERIAL) |
| 283 | 427 | ||
| 284 | IMPLEMENT_ASN1_FUNCTIONS_const(ESS_ISSUER_SERIAL) | 428 | |
| 429 | ESS_ISSUER_SERIAL * | ||
| 430 | d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, const unsigned char **in, long len) | ||
| 431 | { | ||
| 432 | return (ESS_ISSUER_SERIAL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 433 | &ESS_ISSUER_SERIAL_it); | ||
| 434 | } | ||
| 435 | |||
| 436 | int | ||
| 437 | i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **out) | ||
| 438 | { | ||
| 439 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ESS_ISSUER_SERIAL_it); | ||
| 440 | } | ||
| 441 | |||
| 442 | ESS_ISSUER_SERIAL * | ||
| 443 | ESS_ISSUER_SERIAL_new(void) | ||
| 444 | { | ||
| 445 | return (ESS_ISSUER_SERIAL *)ASN1_item_new(&ESS_ISSUER_SERIAL_it); | ||
| 446 | } | ||
| 447 | |||
| 448 | void | ||
| 449 | ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a) | ||
| 450 | { | ||
| 451 | ASN1_item_free((ASN1_VALUE *)a, &ESS_ISSUER_SERIAL_it); | ||
| 452 | } | ||
| 285 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) | 453 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) |
| 286 | 454 | ||
| 287 | ASN1_SEQUENCE(ESS_CERT_ID) = { | 455 | ASN1_SEQUENCE(ESS_CERT_ID) = { |
| @@ -289,7 +457,31 @@ ASN1_SEQUENCE(ESS_CERT_ID) = { | |||
| 289 | ASN1_OPT(ESS_CERT_ID, issuer_serial, ESS_ISSUER_SERIAL) | 457 | ASN1_OPT(ESS_CERT_ID, issuer_serial, ESS_ISSUER_SERIAL) |
| 290 | } ASN1_SEQUENCE_END(ESS_CERT_ID) | 458 | } ASN1_SEQUENCE_END(ESS_CERT_ID) |
| 291 | 459 | ||
| 292 | IMPLEMENT_ASN1_FUNCTIONS_const(ESS_CERT_ID) | 460 | |
| 461 | ESS_CERT_ID * | ||
| 462 | d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **in, long len) | ||
| 463 | { | ||
| 464 | return (ESS_CERT_ID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 465 | &ESS_CERT_ID_it); | ||
| 466 | } | ||
| 467 | |||
| 468 | int | ||
| 469 | i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **out) | ||
| 470 | { | ||
| 471 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ESS_CERT_ID_it); | ||
| 472 | } | ||
| 473 | |||
| 474 | ESS_CERT_ID * | ||
| 475 | ESS_CERT_ID_new(void) | ||
| 476 | { | ||
| 477 | return (ESS_CERT_ID *)ASN1_item_new(&ESS_CERT_ID_it); | ||
| 478 | } | ||
| 479 | |||
| 480 | void | ||
| 481 | ESS_CERT_ID_free(ESS_CERT_ID *a) | ||
| 482 | { | ||
| 483 | ASN1_item_free((ASN1_VALUE *)a, &ESS_CERT_ID_it); | ||
| 484 | } | ||
| 293 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID) | 485 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID) |
| 294 | 486 | ||
| 295 | ASN1_SEQUENCE(ESS_SIGNING_CERT) = { | 487 | ASN1_SEQUENCE(ESS_SIGNING_CERT) = { |
| @@ -297,7 +489,31 @@ ASN1_SEQUENCE(ESS_SIGNING_CERT) = { | |||
| 297 | ASN1_SEQUENCE_OF_OPT(ESS_SIGNING_CERT, policy_info, POLICYINFO) | 489 | ASN1_SEQUENCE_OF_OPT(ESS_SIGNING_CERT, policy_info, POLICYINFO) |
| 298 | } ASN1_SEQUENCE_END(ESS_SIGNING_CERT) | 490 | } ASN1_SEQUENCE_END(ESS_SIGNING_CERT) |
| 299 | 491 | ||
| 300 | IMPLEMENT_ASN1_FUNCTIONS_const(ESS_SIGNING_CERT) | 492 | |
| 493 | ESS_SIGNING_CERT * | ||
| 494 | d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, const unsigned char **in, long len) | ||
| 495 | { | ||
| 496 | return (ESS_SIGNING_CERT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 497 | &ESS_SIGNING_CERT_it); | ||
| 498 | } | ||
| 499 | |||
| 500 | int | ||
| 501 | i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **out) | ||
| 502 | { | ||
| 503 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ESS_SIGNING_CERT_it); | ||
| 504 | } | ||
| 505 | |||
| 506 | ESS_SIGNING_CERT * | ||
| 507 | ESS_SIGNING_CERT_new(void) | ||
| 508 | { | ||
| 509 | return (ESS_SIGNING_CERT *)ASN1_item_new(&ESS_SIGNING_CERT_it); | ||
| 510 | } | ||
| 511 | |||
| 512 | void | ||
| 513 | ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a) | ||
| 514 | { | ||
| 515 | ASN1_item_free((ASN1_VALUE *)a, &ESS_SIGNING_CERT_it); | ||
| 516 | } | ||
| 301 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) | 517 | IMPLEMENT_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) |
| 302 | 518 | ||
| 303 | /* Getting encapsulated TS_TST_INFO object from PKCS7. */ | 519 | /* Getting encapsulated TS_TST_INFO object from PKCS7. */ |
