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. */ |