summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/asn1/n_pkey.c54
-rw-r--r--src/lib/libcrypto/asn1/tasn_typ.c106
-rw-r--r--src/lib/libcrypto/ec/ec_asn1.c54
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_asn1.c28
-rw-r--r--src/lib/libcrypto/ts/ts_asn1.c236
-rw-r--r--src/lib/libssl/src/crypto/asn1/n_pkey.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_typ.c106
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_asn1.c54
-rw-r--r--src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c28
-rw-r--r--src/lib/libssl/src/crypto/ts/ts_asn1.c236
10 files changed, 910 insertions, 46 deletions
diff --git a/src/lib/libcrypto/asn1/n_pkey.c b/src/lib/libcrypto/asn1/n_pkey.c
index 42431b6e24..198ca97c09 100644
--- a/src/lib/libcrypto/asn1/n_pkey.c
+++ b/src/lib/libcrypto/asn1/n_pkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: n_pkey.c,v 1.22 2014/07/12 22:26:01 miod Exp $ */ 1/* $OpenBSD: n_pkey.c,v 1.23 2015/02/10 04:01:26 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -94,7 +94,31 @@ ASN1_BROKEN_SEQUENCE(NETSCAPE_ENCRYPTED_PKEY) = {
94 94
95DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY) 95DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY)
96DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY, NETSCAPE_ENCRYPTED_PKEY) 96DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY, NETSCAPE_ENCRYPTED_PKEY)
97IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY) 97
98NETSCAPE_ENCRYPTED_PKEY *
99d2i_NETSCAPE_ENCRYPTED_PKEY(NETSCAPE_ENCRYPTED_PKEY **a, const unsigned char **in, long len)
100{
101 return (NETSCAPE_ENCRYPTED_PKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
102 &NETSCAPE_ENCRYPTED_PKEY_it);
103}
104
105int
106i2d_NETSCAPE_ENCRYPTED_PKEY(const NETSCAPE_ENCRYPTED_PKEY *a, unsigned char **out)
107{
108 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_ENCRYPTED_PKEY_it);
109}
110
111NETSCAPE_ENCRYPTED_PKEY *
112NETSCAPE_ENCRYPTED_PKEY_new(void)
113{
114 return (NETSCAPE_ENCRYPTED_PKEY *)ASN1_item_new(&NETSCAPE_ENCRYPTED_PKEY_it);
115}
116
117void
118NETSCAPE_ENCRYPTED_PKEY_free(NETSCAPE_ENCRYPTED_PKEY *a)
119{
120 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_ENCRYPTED_PKEY_it);
121}
98 122
99ASN1_SEQUENCE(NETSCAPE_PKEY) = { 123ASN1_SEQUENCE(NETSCAPE_PKEY) = {
100 ASN1_SIMPLE(NETSCAPE_PKEY, version, LONG), 124 ASN1_SIMPLE(NETSCAPE_PKEY, version, LONG),
@@ -104,7 +128,31 @@ ASN1_SEQUENCE(NETSCAPE_PKEY) = {
104 128
105DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_PKEY) 129DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_PKEY)
106DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_PKEY, NETSCAPE_PKEY) 130DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_PKEY, NETSCAPE_PKEY)
107IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_PKEY) 131
132NETSCAPE_PKEY *
133d2i_NETSCAPE_PKEY(NETSCAPE_PKEY **a, const unsigned char **in, long len)
134{
135 return (NETSCAPE_PKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
136 &NETSCAPE_PKEY_it);
137}
138
139int
140i2d_NETSCAPE_PKEY(const NETSCAPE_PKEY *a, unsigned char **out)
141{
142 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_PKEY_it);
143}
144
145NETSCAPE_PKEY *
146NETSCAPE_PKEY_new(void)
147{
148 return (NETSCAPE_PKEY *)ASN1_item_new(&NETSCAPE_PKEY_it);
149}
150
151void
152NETSCAPE_PKEY_free(NETSCAPE_PKEY *a)
153{
154 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_PKEY_it);
155}
108 156
109static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os, 157static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os,
110 int (*cb)(char *buf, int len, const char *prompt, int verify), int sgckey); 158 int (*cb)(char *buf, int len, const char *prompt, int verify), int sgckey);
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
index 2f44b4229b..6e4650c089 100644
--- a/src/lib/libcrypto/asn1/tasn_typ.c
+++ b/src/lib/libcrypto/asn1/tasn_typ.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tasn_typ.c,v 1.7 2015/02/09 15:05:59 jsing Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.8 2015/02/10 04:01:26 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -474,18 +474,114 @@ IMPLEMENT_ASN1_TYPE(ASN1_ANY)
474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */ 474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE) 475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE)
476 476
477IMPLEMENT_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) 477
478ASN1_TYPE *
479d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len)
480{
481 return (ASN1_TYPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
482 &ASN1_ANY_it);
483}
484
485int
486i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out)
487{
488 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ANY_it);
489}
490
491ASN1_TYPE *
492ASN1_TYPE_new(void)
493{
494 return (ASN1_TYPE *)ASN1_item_new(&ASN1_ANY_it);
495}
496
497void
498ASN1_TYPE_free(ASN1_TYPE *a)
499{
500 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ANY_it);
501}
478 502
479/* Multistring types */ 503/* Multistring types */
480 504
481IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE) 505IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE)
482IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) 506
507ASN1_STRING *
508d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len)
509{
510 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
511 &ASN1_PRINTABLE_it);
512}
513
514int
515i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **out)
516{
517 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLE_it);
518}
519
520ASN1_STRING *
521ASN1_PRINTABLE_new(void)
522{
523 return (ASN1_STRING *)ASN1_item_new(&ASN1_PRINTABLE_it);
524}
525
526void
527ASN1_PRINTABLE_free(ASN1_STRING *a)
528{
529 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLE_it);
530}
483 531
484IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT) 532IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT)
485IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) 533
534ASN1_STRING *
535d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len)
536{
537 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
538 &DISPLAYTEXT_it);
539}
540
541int
542i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **out)
543{
544 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DISPLAYTEXT_it);
545}
546
547ASN1_STRING *
548DISPLAYTEXT_new(void)
549{
550 return (ASN1_STRING *)ASN1_item_new(&DISPLAYTEXT_it);
551}
552
553void
554DISPLAYTEXT_free(ASN1_STRING *a)
555{
556 ASN1_item_free((ASN1_VALUE *)a, &DISPLAYTEXT_it);
557}
486 558
487IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING) 559IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING)
488IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) 560
561ASN1_STRING *
562d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len)
563{
564 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
565 &DIRECTORYSTRING_it);
566}
567
568int
569i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **out)
570{
571 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIRECTORYSTRING_it);
572}
573
574ASN1_STRING *
575DIRECTORYSTRING_new(void)
576{
577 return (ASN1_STRING *)ASN1_item_new(&DIRECTORYSTRING_it);
578}
579
580void
581DIRECTORYSTRING_free(ASN1_STRING *a)
582{
583 ASN1_item_free((ASN1_VALUE *)a, &DIRECTORYSTRING_it);
584}
489 585
490/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */ 586/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
491IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1) 587IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1)
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c
index c54f6593d5..11d924d30f 100644
--- a/src/lib/libcrypto/ec/ec_asn1.c
+++ b/src/lib/libcrypto/ec/ec_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_asn1.c,v 1.10 2014/07/12 16:03:37 miod Exp $ */ 1/* $OpenBSD: ec_asn1.c,v 1.11 2015/02/10 04:01:26 jsing Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -258,7 +258,31 @@ ASN1_CHOICE(ECPKPARAMETERS) = {
258} ASN1_CHOICE_END(ECPKPARAMETERS) 258} ASN1_CHOICE_END(ECPKPARAMETERS)
259DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS) 259DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS)
260DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS) 260DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS)
261IMPLEMENT_ASN1_FUNCTIONS_const(ECPKPARAMETERS) 261
262ECPKPARAMETERS *
263d2i_ECPKPARAMETERS(ECPKPARAMETERS **a, const unsigned char **in, long len)
264{
265 return (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
266 &ECPKPARAMETERS_it);
267}
268
269int
270i2d_ECPKPARAMETERS(const ECPKPARAMETERS *a, unsigned char **out)
271{
272 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECPKPARAMETERS_it);
273}
274
275ECPKPARAMETERS *
276ECPKPARAMETERS_new(void)
277{
278 return (ECPKPARAMETERS *)ASN1_item_new(&ECPKPARAMETERS_it);
279}
280
281void
282ECPKPARAMETERS_free(ECPKPARAMETERS *a)
283{
284 ASN1_item_free((ASN1_VALUE *)a, &ECPKPARAMETERS_it);
285}
262 286
263ASN1_SEQUENCE(EC_PRIVATEKEY) = { 287ASN1_SEQUENCE(EC_PRIVATEKEY) = {
264 ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG), 288 ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG),
@@ -268,7 +292,31 @@ ASN1_SEQUENCE(EC_PRIVATEKEY) = {
268} ASN1_SEQUENCE_END(EC_PRIVATEKEY) 292} ASN1_SEQUENCE_END(EC_PRIVATEKEY)
269DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY) 293DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY)
270DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY) 294DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY)
271IMPLEMENT_ASN1_FUNCTIONS_const(EC_PRIVATEKEY) 295
296EC_PRIVATEKEY *
297d2i_EC_PRIVATEKEY(EC_PRIVATEKEY **a, const unsigned char **in, long len)
298{
299 return (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
300 &EC_PRIVATEKEY_it);
301}
302
303int
304i2d_EC_PRIVATEKEY(const EC_PRIVATEKEY *a, unsigned char **out)
305{
306 return ASN1_item_i2d((ASN1_VALUE *)a, out, &EC_PRIVATEKEY_it);
307}
308
309EC_PRIVATEKEY *
310EC_PRIVATEKEY_new(void)
311{
312 return (EC_PRIVATEKEY *)ASN1_item_new(&EC_PRIVATEKEY_it);
313}
314
315void
316EC_PRIVATEKEY_free(EC_PRIVATEKEY *a)
317{
318 ASN1_item_free((ASN1_VALUE *)a, &EC_PRIVATEKEY_it);
319}
272/* some declarations of internal function */ 320/* some declarations of internal function */
273 321
274/* ec_asn1_group2field() sets the values in a X9_62_FIELDID object */ 322/* ec_asn1_group2field() sets the values in a X9_62_FIELDID object */
diff --git a/src/lib/libcrypto/ecdsa/ecs_asn1.c b/src/lib/libcrypto/ecdsa/ecs_asn1.c
index f62df3a817..4cd5c1bd21 100644
--- a/src/lib/libcrypto/ecdsa/ecs_asn1.c
+++ b/src/lib/libcrypto/ecdsa/ecs_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecs_asn1.c,v 1.3 2015/02/08 13:35:07 jsing Exp $ */ 1/* $OpenBSD: ecs_asn1.c,v 1.4 2015/02/10 04:01:26 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -64,4 +64,28 @@ ASN1_SEQUENCE(ECDSA_SIG) = {
64 64
65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) 65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG)
66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) 66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG)
67IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG) 67
68ECDSA_SIG *
69d2i_ECDSA_SIG(ECDSA_SIG **a, const unsigned char **in, long len)
70{
71 return (ECDSA_SIG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
72 &ECDSA_SIG_it);
73}
74
75int
76i2d_ECDSA_SIG(const ECDSA_SIG *a, unsigned char **out)
77{
78 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECDSA_SIG_it);
79}
80
81ECDSA_SIG *
82ECDSA_SIG_new(void)
83{
84 return (ECDSA_SIG *)ASN1_item_new(&ECDSA_SIG_it);
85}
86
87void
88ECDSA_SIG_free(ECDSA_SIG *a)
89{
90 ASN1_item_free((ASN1_VALUE *)a, &ECDSA_SIG_it);
91}
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
69IMPLEMENT_ASN1_FUNCTIONS_const(TS_MSG_IMPRINT) 69
70TS_MSG_IMPRINT *
71d2i_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
77int
78i2d_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
83TS_MSG_IMPRINT *
84TS_MSG_IMPRINT_new(void)
85{
86 return (TS_MSG_IMPRINT *)ASN1_item_new(&TS_MSG_IMPRINT_it);
87}
88
89void
90TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &TS_MSG_IMPRINT_it);
93}
70IMPLEMENT_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) 94IMPLEMENT_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
109IMPLEMENT_ASN1_FUNCTIONS_const(TS_REQ) 133
134TS_REQ *
135d2i_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
141int
142i2d_TS_REQ(const TS_REQ *a, unsigned char **out)
143{
144 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_REQ_it);
145}
146
147TS_REQ *
148TS_REQ_new(void)
149{
150 return (TS_REQ *)ASN1_item_new(&TS_REQ_it);
151}
152
153void
154TS_REQ_free(TS_REQ *a)
155{
156 ASN1_item_free((ASN1_VALUE *)a, &TS_REQ_it);
157}
110IMPLEMENT_ASN1_DUP_FUNCTION(TS_REQ) 158IMPLEMENT_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
144IMPLEMENT_ASN1_FUNCTIONS_const(TS_ACCURACY) 192
193TS_ACCURACY *
194d2i_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
200int
201i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **out)
202{
203 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_ACCURACY_it);
204}
205
206TS_ACCURACY *
207TS_ACCURACY_new(void)
208{
209 return (TS_ACCURACY *)ASN1_item_new(&TS_ACCURACY_it);
210}
211
212void
213TS_ACCURACY_free(TS_ACCURACY *a)
214{
215 ASN1_item_free((ASN1_VALUE *)a, &TS_ACCURACY_it);
216}
145IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY) 217IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY)
146 218
147ASN1_SEQUENCE(TS_TST_INFO) = { 219ASN1_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
160IMPLEMENT_ASN1_FUNCTIONS_const(TS_TST_INFO) 232
233TS_TST_INFO *
234d2i_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
240int
241i2d_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
246TS_TST_INFO *
247TS_TST_INFO_new(void)
248{
249 return (TS_TST_INFO *)ASN1_item_new(&TS_TST_INFO_it);
250}
251
252void
253TS_TST_INFO_free(TS_TST_INFO *a)
254{
255 ASN1_item_free((ASN1_VALUE *)a, &TS_TST_INFO_it);
256}
161IMPLEMENT_ASN1_DUP_FUNCTION(TS_TST_INFO) 257IMPLEMENT_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
197IMPLEMENT_ASN1_FUNCTIONS_const(TS_STATUS_INFO) 293
294TS_STATUS_INFO *
295d2i_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
301int
302i2d_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
307TS_STATUS_INFO *
308TS_STATUS_INFO_new(void)
309{
310 return (TS_STATUS_INFO *)ASN1_item_new(&TS_STATUS_INFO_it);
311}
312
313void
314TS_STATUS_INFO_free(TS_STATUS_INFO *a)
315{
316 ASN1_item_free((ASN1_VALUE *)a, &TS_STATUS_INFO_it);
317}
198IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO) 318IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO)
199 319
200static int 320static 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
250IMPLEMENT_ASN1_FUNCTIONS_const(TS_RESP) 370
371TS_RESP *
372d2i_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
378int
379i2d_TS_RESP(const TS_RESP *a, unsigned char **out)
380{
381 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_RESP_it);
382}
383
384TS_RESP *
385TS_RESP_new(void)
386{
387 return (TS_RESP *)ASN1_item_new(&TS_RESP_it);
388}
389
390void
391TS_RESP_free(TS_RESP *a)
392{
393 ASN1_item_free((ASN1_VALUE *)a, &TS_RESP_it);
394}
251IMPLEMENT_ASN1_DUP_FUNCTION(TS_RESP) 395IMPLEMENT_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
284IMPLEMENT_ASN1_FUNCTIONS_const(ESS_ISSUER_SERIAL) 428
429ESS_ISSUER_SERIAL *
430d2i_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
436int
437i2d_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
442ESS_ISSUER_SERIAL *
443ESS_ISSUER_SERIAL_new(void)
444{
445 return (ESS_ISSUER_SERIAL *)ASN1_item_new(&ESS_ISSUER_SERIAL_it);
446}
447
448void
449ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a)
450{
451 ASN1_item_free((ASN1_VALUE *)a, &ESS_ISSUER_SERIAL_it);
452}
285IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) 453IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL)
286 454
287ASN1_SEQUENCE(ESS_CERT_ID) = { 455ASN1_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
292IMPLEMENT_ASN1_FUNCTIONS_const(ESS_CERT_ID) 460
461ESS_CERT_ID *
462d2i_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
468int
469i2d_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
474ESS_CERT_ID *
475ESS_CERT_ID_new(void)
476{
477 return (ESS_CERT_ID *)ASN1_item_new(&ESS_CERT_ID_it);
478}
479
480void
481ESS_CERT_ID_free(ESS_CERT_ID *a)
482{
483 ASN1_item_free((ASN1_VALUE *)a, &ESS_CERT_ID_it);
484}
293IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID) 485IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID)
294 486
295ASN1_SEQUENCE(ESS_SIGNING_CERT) = { 487ASN1_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
300IMPLEMENT_ASN1_FUNCTIONS_const(ESS_SIGNING_CERT) 492
493ESS_SIGNING_CERT *
494d2i_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
500int
501i2d_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
506ESS_SIGNING_CERT *
507ESS_SIGNING_CERT_new(void)
508{
509 return (ESS_SIGNING_CERT *)ASN1_item_new(&ESS_SIGNING_CERT_it);
510}
511
512void
513ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a)
514{
515 ASN1_item_free((ASN1_VALUE *)a, &ESS_SIGNING_CERT_it);
516}
301IMPLEMENT_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) 517IMPLEMENT_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. */
diff --git a/src/lib/libssl/src/crypto/asn1/n_pkey.c b/src/lib/libssl/src/crypto/asn1/n_pkey.c
index 42431b6e24..198ca97c09 100644
--- a/src/lib/libssl/src/crypto/asn1/n_pkey.c
+++ b/src/lib/libssl/src/crypto/asn1/n_pkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: n_pkey.c,v 1.22 2014/07/12 22:26:01 miod Exp $ */ 1/* $OpenBSD: n_pkey.c,v 1.23 2015/02/10 04:01:26 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -94,7 +94,31 @@ ASN1_BROKEN_SEQUENCE(NETSCAPE_ENCRYPTED_PKEY) = {
94 94
95DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY) 95DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY)
96DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY, NETSCAPE_ENCRYPTED_PKEY) 96DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY, NETSCAPE_ENCRYPTED_PKEY)
97IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY) 97
98NETSCAPE_ENCRYPTED_PKEY *
99d2i_NETSCAPE_ENCRYPTED_PKEY(NETSCAPE_ENCRYPTED_PKEY **a, const unsigned char **in, long len)
100{
101 return (NETSCAPE_ENCRYPTED_PKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
102 &NETSCAPE_ENCRYPTED_PKEY_it);
103}
104
105int
106i2d_NETSCAPE_ENCRYPTED_PKEY(const NETSCAPE_ENCRYPTED_PKEY *a, unsigned char **out)
107{
108 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_ENCRYPTED_PKEY_it);
109}
110
111NETSCAPE_ENCRYPTED_PKEY *
112NETSCAPE_ENCRYPTED_PKEY_new(void)
113{
114 return (NETSCAPE_ENCRYPTED_PKEY *)ASN1_item_new(&NETSCAPE_ENCRYPTED_PKEY_it);
115}
116
117void
118NETSCAPE_ENCRYPTED_PKEY_free(NETSCAPE_ENCRYPTED_PKEY *a)
119{
120 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_ENCRYPTED_PKEY_it);
121}
98 122
99ASN1_SEQUENCE(NETSCAPE_PKEY) = { 123ASN1_SEQUENCE(NETSCAPE_PKEY) = {
100 ASN1_SIMPLE(NETSCAPE_PKEY, version, LONG), 124 ASN1_SIMPLE(NETSCAPE_PKEY, version, LONG),
@@ -104,7 +128,31 @@ ASN1_SEQUENCE(NETSCAPE_PKEY) = {
104 128
105DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_PKEY) 129DECLARE_ASN1_FUNCTIONS_const(NETSCAPE_PKEY)
106DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_PKEY, NETSCAPE_PKEY) 130DECLARE_ASN1_ENCODE_FUNCTIONS_const(NETSCAPE_PKEY, NETSCAPE_PKEY)
107IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_PKEY) 131
132NETSCAPE_PKEY *
133d2i_NETSCAPE_PKEY(NETSCAPE_PKEY **a, const unsigned char **in, long len)
134{
135 return (NETSCAPE_PKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
136 &NETSCAPE_PKEY_it);
137}
138
139int
140i2d_NETSCAPE_PKEY(const NETSCAPE_PKEY *a, unsigned char **out)
141{
142 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_PKEY_it);
143}
144
145NETSCAPE_PKEY *
146NETSCAPE_PKEY_new(void)
147{
148 return (NETSCAPE_PKEY *)ASN1_item_new(&NETSCAPE_PKEY_it);
149}
150
151void
152NETSCAPE_PKEY_free(NETSCAPE_PKEY *a)
153{
154 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_PKEY_it);
155}
108 156
109static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os, 157static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os,
110 int (*cb)(char *buf, int len, const char *prompt, int verify), int sgckey); 158 int (*cb)(char *buf, int len, const char *prompt, int verify), int sgckey);
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_typ.c b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
index 2f44b4229b..6e4650c089 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_typ.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tasn_typ.c,v 1.7 2015/02/09 15:05:59 jsing Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.8 2015/02/10 04:01:26 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -474,18 +474,114 @@ IMPLEMENT_ASN1_TYPE(ASN1_ANY)
474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */ 474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE) 475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE)
476 476
477IMPLEMENT_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) 477
478ASN1_TYPE *
479d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len)
480{
481 return (ASN1_TYPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
482 &ASN1_ANY_it);
483}
484
485int
486i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out)
487{
488 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ANY_it);
489}
490
491ASN1_TYPE *
492ASN1_TYPE_new(void)
493{
494 return (ASN1_TYPE *)ASN1_item_new(&ASN1_ANY_it);
495}
496
497void
498ASN1_TYPE_free(ASN1_TYPE *a)
499{
500 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ANY_it);
501}
478 502
479/* Multistring types */ 503/* Multistring types */
480 504
481IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE) 505IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE)
482IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) 506
507ASN1_STRING *
508d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len)
509{
510 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
511 &ASN1_PRINTABLE_it);
512}
513
514int
515i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **out)
516{
517 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLE_it);
518}
519
520ASN1_STRING *
521ASN1_PRINTABLE_new(void)
522{
523 return (ASN1_STRING *)ASN1_item_new(&ASN1_PRINTABLE_it);
524}
525
526void
527ASN1_PRINTABLE_free(ASN1_STRING *a)
528{
529 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLE_it);
530}
483 531
484IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT) 532IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT)
485IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) 533
534ASN1_STRING *
535d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len)
536{
537 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
538 &DISPLAYTEXT_it);
539}
540
541int
542i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **out)
543{
544 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DISPLAYTEXT_it);
545}
546
547ASN1_STRING *
548DISPLAYTEXT_new(void)
549{
550 return (ASN1_STRING *)ASN1_item_new(&DISPLAYTEXT_it);
551}
552
553void
554DISPLAYTEXT_free(ASN1_STRING *a)
555{
556 ASN1_item_free((ASN1_VALUE *)a, &DISPLAYTEXT_it);
557}
486 558
487IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING) 559IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING)
488IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) 560
561ASN1_STRING *
562d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len)
563{
564 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
565 &DIRECTORYSTRING_it);
566}
567
568int
569i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **out)
570{
571 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIRECTORYSTRING_it);
572}
573
574ASN1_STRING *
575DIRECTORYSTRING_new(void)
576{
577 return (ASN1_STRING *)ASN1_item_new(&DIRECTORYSTRING_it);
578}
579
580void
581DIRECTORYSTRING_free(ASN1_STRING *a)
582{
583 ASN1_item_free((ASN1_VALUE *)a, &DIRECTORYSTRING_it);
584}
489 585
490/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */ 586/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
491IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1) 587IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1)
diff --git a/src/lib/libssl/src/crypto/ec/ec_asn1.c b/src/lib/libssl/src/crypto/ec/ec_asn1.c
index c54f6593d5..11d924d30f 100644
--- a/src/lib/libssl/src/crypto/ec/ec_asn1.c
+++ b/src/lib/libssl/src/crypto/ec/ec_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_asn1.c,v 1.10 2014/07/12 16:03:37 miod Exp $ */ 1/* $OpenBSD: ec_asn1.c,v 1.11 2015/02/10 04:01:26 jsing Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -258,7 +258,31 @@ ASN1_CHOICE(ECPKPARAMETERS) = {
258} ASN1_CHOICE_END(ECPKPARAMETERS) 258} ASN1_CHOICE_END(ECPKPARAMETERS)
259DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS) 259DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS)
260DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS) 260DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS)
261IMPLEMENT_ASN1_FUNCTIONS_const(ECPKPARAMETERS) 261
262ECPKPARAMETERS *
263d2i_ECPKPARAMETERS(ECPKPARAMETERS **a, const unsigned char **in, long len)
264{
265 return (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
266 &ECPKPARAMETERS_it);
267}
268
269int
270i2d_ECPKPARAMETERS(const ECPKPARAMETERS *a, unsigned char **out)
271{
272 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECPKPARAMETERS_it);
273}
274
275ECPKPARAMETERS *
276ECPKPARAMETERS_new(void)
277{
278 return (ECPKPARAMETERS *)ASN1_item_new(&ECPKPARAMETERS_it);
279}
280
281void
282ECPKPARAMETERS_free(ECPKPARAMETERS *a)
283{
284 ASN1_item_free((ASN1_VALUE *)a, &ECPKPARAMETERS_it);
285}
262 286
263ASN1_SEQUENCE(EC_PRIVATEKEY) = { 287ASN1_SEQUENCE(EC_PRIVATEKEY) = {
264 ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG), 288 ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG),
@@ -268,7 +292,31 @@ ASN1_SEQUENCE(EC_PRIVATEKEY) = {
268} ASN1_SEQUENCE_END(EC_PRIVATEKEY) 292} ASN1_SEQUENCE_END(EC_PRIVATEKEY)
269DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY) 293DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY)
270DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY) 294DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY)
271IMPLEMENT_ASN1_FUNCTIONS_const(EC_PRIVATEKEY) 295
296EC_PRIVATEKEY *
297d2i_EC_PRIVATEKEY(EC_PRIVATEKEY **a, const unsigned char **in, long len)
298{
299 return (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
300 &EC_PRIVATEKEY_it);
301}
302
303int
304i2d_EC_PRIVATEKEY(const EC_PRIVATEKEY *a, unsigned char **out)
305{
306 return ASN1_item_i2d((ASN1_VALUE *)a, out, &EC_PRIVATEKEY_it);
307}
308
309EC_PRIVATEKEY *
310EC_PRIVATEKEY_new(void)
311{
312 return (EC_PRIVATEKEY *)ASN1_item_new(&EC_PRIVATEKEY_it);
313}
314
315void
316EC_PRIVATEKEY_free(EC_PRIVATEKEY *a)
317{
318 ASN1_item_free((ASN1_VALUE *)a, &EC_PRIVATEKEY_it);
319}
272/* some declarations of internal function */ 320/* some declarations of internal function */
273 321
274/* ec_asn1_group2field() sets the values in a X9_62_FIELDID object */ 322/* ec_asn1_group2field() sets the values in a X9_62_FIELDID object */
diff --git a/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c b/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c
index f62df3a817..4cd5c1bd21 100644
--- a/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c
+++ b/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecs_asn1.c,v 1.3 2015/02/08 13:35:07 jsing Exp $ */ 1/* $OpenBSD: ecs_asn1.c,v 1.4 2015/02/10 04:01:26 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -64,4 +64,28 @@ ASN1_SEQUENCE(ECDSA_SIG) = {
64 64
65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) 65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG)
66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) 66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG)
67IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG) 67
68ECDSA_SIG *
69d2i_ECDSA_SIG(ECDSA_SIG **a, const unsigned char **in, long len)
70{
71 return (ECDSA_SIG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
72 &ECDSA_SIG_it);
73}
74
75int
76i2d_ECDSA_SIG(const ECDSA_SIG *a, unsigned char **out)
77{
78 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECDSA_SIG_it);
79}
80
81ECDSA_SIG *
82ECDSA_SIG_new(void)
83{
84 return (ECDSA_SIG *)ASN1_item_new(&ECDSA_SIG_it);
85}
86
87void
88ECDSA_SIG_free(ECDSA_SIG *a)
89{
90 ASN1_item_free((ASN1_VALUE *)a, &ECDSA_SIG_it);
91}
diff --git a/src/lib/libssl/src/crypto/ts/ts_asn1.c b/src/lib/libssl/src/crypto/ts/ts_asn1.c
index bb87aa1d88..3ef882cf05 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.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
69IMPLEMENT_ASN1_FUNCTIONS_const(TS_MSG_IMPRINT) 69
70TS_MSG_IMPRINT *
71d2i_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
77int
78i2d_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
83TS_MSG_IMPRINT *
84TS_MSG_IMPRINT_new(void)
85{
86 return (TS_MSG_IMPRINT *)ASN1_item_new(&TS_MSG_IMPRINT_it);
87}
88
89void
90TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &TS_MSG_IMPRINT_it);
93}
70IMPLEMENT_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) 94IMPLEMENT_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
109IMPLEMENT_ASN1_FUNCTIONS_const(TS_REQ) 133
134TS_REQ *
135d2i_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
141int
142i2d_TS_REQ(const TS_REQ *a, unsigned char **out)
143{
144 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_REQ_it);
145}
146
147TS_REQ *
148TS_REQ_new(void)
149{
150 return (TS_REQ *)ASN1_item_new(&TS_REQ_it);
151}
152
153void
154TS_REQ_free(TS_REQ *a)
155{
156 ASN1_item_free((ASN1_VALUE *)a, &TS_REQ_it);
157}
110IMPLEMENT_ASN1_DUP_FUNCTION(TS_REQ) 158IMPLEMENT_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
144IMPLEMENT_ASN1_FUNCTIONS_const(TS_ACCURACY) 192
193TS_ACCURACY *
194d2i_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
200int
201i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **out)
202{
203 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_ACCURACY_it);
204}
205
206TS_ACCURACY *
207TS_ACCURACY_new(void)
208{
209 return (TS_ACCURACY *)ASN1_item_new(&TS_ACCURACY_it);
210}
211
212void
213TS_ACCURACY_free(TS_ACCURACY *a)
214{
215 ASN1_item_free((ASN1_VALUE *)a, &TS_ACCURACY_it);
216}
145IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY) 217IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY)
146 218
147ASN1_SEQUENCE(TS_TST_INFO) = { 219ASN1_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
160IMPLEMENT_ASN1_FUNCTIONS_const(TS_TST_INFO) 232
233TS_TST_INFO *
234d2i_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
240int
241i2d_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
246TS_TST_INFO *
247TS_TST_INFO_new(void)
248{
249 return (TS_TST_INFO *)ASN1_item_new(&TS_TST_INFO_it);
250}
251
252void
253TS_TST_INFO_free(TS_TST_INFO *a)
254{
255 ASN1_item_free((ASN1_VALUE *)a, &TS_TST_INFO_it);
256}
161IMPLEMENT_ASN1_DUP_FUNCTION(TS_TST_INFO) 257IMPLEMENT_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
197IMPLEMENT_ASN1_FUNCTIONS_const(TS_STATUS_INFO) 293
294TS_STATUS_INFO *
295d2i_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
301int
302i2d_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
307TS_STATUS_INFO *
308TS_STATUS_INFO_new(void)
309{
310 return (TS_STATUS_INFO *)ASN1_item_new(&TS_STATUS_INFO_it);
311}
312
313void
314TS_STATUS_INFO_free(TS_STATUS_INFO *a)
315{
316 ASN1_item_free((ASN1_VALUE *)a, &TS_STATUS_INFO_it);
317}
198IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO) 318IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO)
199 319
200static int 320static 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
250IMPLEMENT_ASN1_FUNCTIONS_const(TS_RESP) 370
371TS_RESP *
372d2i_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
378int
379i2d_TS_RESP(const TS_RESP *a, unsigned char **out)
380{
381 return ASN1_item_i2d((ASN1_VALUE *)a, out, &TS_RESP_it);
382}
383
384TS_RESP *
385TS_RESP_new(void)
386{
387 return (TS_RESP *)ASN1_item_new(&TS_RESP_it);
388}
389
390void
391TS_RESP_free(TS_RESP *a)
392{
393 ASN1_item_free((ASN1_VALUE *)a, &TS_RESP_it);
394}
251IMPLEMENT_ASN1_DUP_FUNCTION(TS_RESP) 395IMPLEMENT_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
284IMPLEMENT_ASN1_FUNCTIONS_const(ESS_ISSUER_SERIAL) 428
429ESS_ISSUER_SERIAL *
430d2i_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
436int
437i2d_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
442ESS_ISSUER_SERIAL *
443ESS_ISSUER_SERIAL_new(void)
444{
445 return (ESS_ISSUER_SERIAL *)ASN1_item_new(&ESS_ISSUER_SERIAL_it);
446}
447
448void
449ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a)
450{
451 ASN1_item_free((ASN1_VALUE *)a, &ESS_ISSUER_SERIAL_it);
452}
285IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) 453IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL)
286 454
287ASN1_SEQUENCE(ESS_CERT_ID) = { 455ASN1_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
292IMPLEMENT_ASN1_FUNCTIONS_const(ESS_CERT_ID) 460
461ESS_CERT_ID *
462d2i_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
468int
469i2d_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
474ESS_CERT_ID *
475ESS_CERT_ID_new(void)
476{
477 return (ESS_CERT_ID *)ASN1_item_new(&ESS_CERT_ID_it);
478}
479
480void
481ESS_CERT_ID_free(ESS_CERT_ID *a)
482{
483 ASN1_item_free((ASN1_VALUE *)a, &ESS_CERT_ID_it);
484}
293IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID) 485IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID)
294 486
295ASN1_SEQUENCE(ESS_SIGNING_CERT) = { 487ASN1_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
300IMPLEMENT_ASN1_FUNCTIONS_const(ESS_SIGNING_CERT) 492
493ESS_SIGNING_CERT *
494d2i_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
500int
501i2d_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
506ESS_SIGNING_CERT *
507ESS_SIGNING_CERT_new(void)
508{
509 return (ESS_SIGNING_CERT *)ASN1_item_new(&ESS_SIGNING_CERT_it);
510}
511
512void
513ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a)
514{
515 ASN1_item_free((ASN1_VALUE *)a, &ESS_SIGNING_CERT_it);
516}
301IMPLEMENT_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) 517IMPLEMENT_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. */