summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/a_time.c28
-rw-r--r--src/lib/libcrypto/asn1/nsseq.c28
-rw-r--r--src/lib/libcrypto/asn1/p5_pbe.c28
-rw-r--r--src/lib/libcrypto/asn1/p5_pbev2.c54
-rw-r--r--src/lib/libcrypto/asn1/p8_pkey.c28
-rw-r--r--src/lib/libcrypto/asn1/tasn_typ.c392
-rw-r--r--src/lib/libcrypto/asn1/x_algor.c28
-rw-r--r--src/lib/libcrypto/asn1/x_attrib.c28
-rw-r--r--src/lib/libcrypto/asn1/x_crl.c80
-rw-r--r--src/lib/libcrypto/asn1/x_exten.c28
-rw-r--r--src/lib/libcrypto/asn1/x_name.c54
-rw-r--r--src/lib/libcrypto/asn1/x_nx509.c28
-rw-r--r--src/lib/libcrypto/asn1/x_pubkey.c28
-rw-r--r--src/lib/libcrypto/asn1/x_req.c54
-rw-r--r--src/lib/libcrypto/asn1/x_sig.c28
-rw-r--r--src/lib/libcrypto/asn1/x_spki.c54
-rw-r--r--src/lib/libcrypto/asn1/x_val.c28
-rw-r--r--src/lib/libcrypto/asn1/x_x509.c54
-rw-r--r--src/lib/libcrypto/asn1/x_x509a.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_time.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/nsseq.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/p5_pbe.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/p5_pbev2.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/p8_pkey.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_typ.c392
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_algor.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_attrib.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_crl.c80
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_exten.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_name.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_nx509.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_pubkey.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_req.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_sig.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_spki.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_val.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_x509.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_x509a.c54
38 files changed, 2088 insertions, 120 deletions
diff --git a/src/lib/libcrypto/asn1/a_time.c b/src/lib/libcrypto/asn1/a_time.c
index c5e882a4f6..95481fc4c6 100644
--- a/src/lib/libcrypto/asn1/a_time.c
+++ b/src/lib/libcrypto/asn1/a_time.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_time.c,v 1.22 2015/02/07 13:19:15 doug Exp $ */ 1/* $OpenBSD: a_time.c,v 1.23 2015/02/09 15:05:59 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -71,7 +71,31 @@
71 71
72IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME) 72IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(ASN1_TIME) 74
75ASN1_TIME *
76d2i_ASN1_TIME(ASN1_TIME **a, const unsigned char **in, long len)
77{
78 return (ASN1_TIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &ASN1_TIME_it);
80}
81
82int
83i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_TIME_it);
86}
87
88ASN1_TIME *
89ASN1_TIME_new(void)
90{
91 return (ASN1_TIME *)ASN1_item_new(&ASN1_TIME_it);
92}
93
94void
95ASN1_TIME_free(ASN1_TIME *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &ASN1_TIME_it);
98}
75 99
76ASN1_TIME * 100ASN1_TIME *
77ASN1_TIME_set(ASN1_TIME *s, time_t t) 101ASN1_TIME_set(ASN1_TIME *s, time_t t)
diff --git a/src/lib/libcrypto/asn1/nsseq.c b/src/lib/libcrypto/asn1/nsseq.c
index 97af462dc0..ceab3992fd 100644
--- a/src/lib/libcrypto/asn1/nsseq.c
+++ b/src/lib/libcrypto/asn1/nsseq.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: nsseq.c,v 1.7 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: nsseq.c,v 1.8 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -80,4 +80,28 @@ ASN1_SEQUENCE_cb(NETSCAPE_CERT_SEQUENCE, nsseq_cb) = {
80 ASN1_EXP_SEQUENCE_OF_OPT(NETSCAPE_CERT_SEQUENCE, certs, X509, 0) 80 ASN1_EXP_SEQUENCE_OF_OPT(NETSCAPE_CERT_SEQUENCE, certs, X509, 0)
81} ASN1_SEQUENCE_END_cb(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) 81} ASN1_SEQUENCE_END_cb(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE)
82 82
83IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) 83
84NETSCAPE_CERT_SEQUENCE *
85d2i_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE **a, const unsigned char **in, long len)
86{
87 return (NETSCAPE_CERT_SEQUENCE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
88 &NETSCAPE_CERT_SEQUENCE_it);
89}
90
91int
92i2d_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE *a, unsigned char **out)
93{
94 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_CERT_SEQUENCE_it);
95}
96
97NETSCAPE_CERT_SEQUENCE *
98NETSCAPE_CERT_SEQUENCE_new(void)
99{
100 return (NETSCAPE_CERT_SEQUENCE *)ASN1_item_new(&NETSCAPE_CERT_SEQUENCE_it);
101}
102
103void
104NETSCAPE_CERT_SEQUENCE_free(NETSCAPE_CERT_SEQUENCE *a)
105{
106 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_CERT_SEQUENCE_it);
107}
diff --git a/src/lib/libcrypto/asn1/p5_pbe.c b/src/lib/libcrypto/asn1/p5_pbe.c
index 44fbb648be..7491a5bdc7 100644
--- a/src/lib/libcrypto/asn1/p5_pbe.c
+++ b/src/lib/libcrypto/asn1/p5_pbe.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p5_pbe.c,v 1.17 2014/10/22 13:02:03 jsing Exp $ */ 1/* $OpenBSD: p5_pbe.c,v 1.18 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -71,7 +71,31 @@ ASN1_SEQUENCE(PBEPARAM) = {
71 ASN1_SIMPLE(PBEPARAM, iter, ASN1_INTEGER) 71 ASN1_SIMPLE(PBEPARAM, iter, ASN1_INTEGER)
72} ASN1_SEQUENCE_END(PBEPARAM) 72} ASN1_SEQUENCE_END(PBEPARAM)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(PBEPARAM) 74
75PBEPARAM *
76d2i_PBEPARAM(PBEPARAM **a, const unsigned char **in, long len)
77{
78 return (PBEPARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &PBEPARAM_it);
80}
81
82int
83i2d_PBEPARAM(PBEPARAM *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBEPARAM_it);
86}
87
88PBEPARAM *
89PBEPARAM_new(void)
90{
91 return (PBEPARAM *)ASN1_item_new(&PBEPARAM_it);
92}
93
94void
95PBEPARAM_free(PBEPARAM *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &PBEPARAM_it);
98}
75 99
76 100
77/* Set an algorithm identifier for a PKCS#5 PBE algorithm */ 101/* Set an algorithm identifier for a PKCS#5 PBE algorithm */
diff --git a/src/lib/libcrypto/asn1/p5_pbev2.c b/src/lib/libcrypto/asn1/p5_pbev2.c
index 0947965219..1189e7e26b 100644
--- a/src/lib/libcrypto/asn1/p5_pbev2.c
+++ b/src/lib/libcrypto/asn1/p5_pbev2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p5_pbev2.c,v 1.18 2014/10/22 13:02:03 jsing Exp $ */ 1/* $OpenBSD: p5_pbev2.c,v 1.19 2015/02/09 15:05:59 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 1999-2004. 3 * project 1999-2004.
4 */ 4 */
@@ -71,7 +71,31 @@ ASN1_SEQUENCE(PBE2PARAM) = {
71 ASN1_SIMPLE(PBE2PARAM, encryption, X509_ALGOR) 71 ASN1_SIMPLE(PBE2PARAM, encryption, X509_ALGOR)
72} ASN1_SEQUENCE_END(PBE2PARAM) 72} ASN1_SEQUENCE_END(PBE2PARAM)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(PBE2PARAM) 74
75PBE2PARAM *
76d2i_PBE2PARAM(PBE2PARAM **a, const unsigned char **in, long len)
77{
78 return (PBE2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &PBE2PARAM_it);
80}
81
82int
83i2d_PBE2PARAM(PBE2PARAM *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBE2PARAM_it);
86}
87
88PBE2PARAM *
89PBE2PARAM_new(void)
90{
91 return (PBE2PARAM *)ASN1_item_new(&PBE2PARAM_it);
92}
93
94void
95PBE2PARAM_free(PBE2PARAM *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &PBE2PARAM_it);
98}
75 99
76ASN1_SEQUENCE(PBKDF2PARAM) = { 100ASN1_SEQUENCE(PBKDF2PARAM) = {
77 ASN1_SIMPLE(PBKDF2PARAM, salt, ASN1_ANY), 101 ASN1_SIMPLE(PBKDF2PARAM, salt, ASN1_ANY),
@@ -80,7 +104,31 @@ ASN1_SEQUENCE(PBKDF2PARAM) = {
80 ASN1_OPT(PBKDF2PARAM, prf, X509_ALGOR) 104 ASN1_OPT(PBKDF2PARAM, prf, X509_ALGOR)
81} ASN1_SEQUENCE_END(PBKDF2PARAM) 105} ASN1_SEQUENCE_END(PBKDF2PARAM)
82 106
83IMPLEMENT_ASN1_FUNCTIONS(PBKDF2PARAM) 107
108PBKDF2PARAM *
109d2i_PBKDF2PARAM(PBKDF2PARAM **a, const unsigned char **in, long len)
110{
111 return (PBKDF2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
112 &PBKDF2PARAM_it);
113}
114
115int
116i2d_PBKDF2PARAM(PBKDF2PARAM *a, unsigned char **out)
117{
118 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBKDF2PARAM_it);
119}
120
121PBKDF2PARAM *
122PBKDF2PARAM_new(void)
123{
124 return (PBKDF2PARAM *)ASN1_item_new(&PBKDF2PARAM_it);
125}
126
127void
128PBKDF2PARAM_free(PBKDF2PARAM *a)
129{
130 ASN1_item_free((ASN1_VALUE *)a, &PBKDF2PARAM_it);
131}
84 132
85/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm: 133/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm:
86 * yes I know this is horrible! 134 * yes I know this is horrible!
diff --git a/src/lib/libcrypto/asn1/p8_pkey.c b/src/lib/libcrypto/asn1/p8_pkey.c
index 3aacecb8fb..f8688ebc17 100644
--- a/src/lib/libcrypto/asn1/p8_pkey.c
+++ b/src/lib/libcrypto/asn1/p8_pkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p8_pkey.c,v 1.12 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: p8_pkey.c,v 1.13 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -82,7 +82,31 @@ ASN1_SEQUENCE_cb(PKCS8_PRIV_KEY_INFO, pkey_cb) = {
82 ASN1_IMP_SET_OF_OPT(PKCS8_PRIV_KEY_INFO, attributes, X509_ATTRIBUTE, 0) 82 ASN1_IMP_SET_OF_OPT(PKCS8_PRIV_KEY_INFO, attributes, X509_ATTRIBUTE, 0)
83} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) 83} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
84 84
85IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) 85
86PKCS8_PRIV_KEY_INFO *
87d2i_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO **a, const unsigned char **in, long len)
88{
89 return (PKCS8_PRIV_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
90 &PKCS8_PRIV_KEY_INFO_it);
91}
92
93int
94i2d_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO *a, unsigned char **out)
95{
96 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS8_PRIV_KEY_INFO_it);
97}
98
99PKCS8_PRIV_KEY_INFO *
100PKCS8_PRIV_KEY_INFO_new(void)
101{
102 return (PKCS8_PRIV_KEY_INFO *)ASN1_item_new(&PKCS8_PRIV_KEY_INFO_it);
103}
104
105void
106PKCS8_PRIV_KEY_INFO_free(PKCS8_PRIV_KEY_INFO *a)
107{
108 ASN1_item_free((ASN1_VALUE *)a, &PKCS8_PRIV_KEY_INFO_it);
109}
86 110
87int 111int
88PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, int version, 112PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, int version,
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
index 04d9c84180..2f44b4229b 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.6 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.7 2015/02/09 15:05:59 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 */
@@ -63,51 +63,411 @@
63 63
64 64
65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) 65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER)
66IMPLEMENT_ASN1_FUNCTIONS(ASN1_INTEGER) 66
67ASN1_INTEGER *
68d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
69{
70 return (ASN1_INTEGER *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
71 &ASN1_INTEGER_it);
72}
73
74int
75i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out)
76{
77 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_INTEGER_it);
78}
79
80ASN1_INTEGER *
81ASN1_INTEGER_new(void)
82{
83 return (ASN1_INTEGER *)ASN1_item_new(&ASN1_INTEGER_it);
84}
85
86void
87ASN1_INTEGER_free(ASN1_INTEGER *a)
88{
89 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
90}
67 91
68IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) 92IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED)
69IMPLEMENT_ASN1_FUNCTIONS(ASN1_ENUMERATED) 93
94ASN1_ENUMERATED *
95d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
96{
97 return (ASN1_ENUMERATED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
98 &ASN1_ENUMERATED_it);
99}
100
101int
102i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out)
103{
104 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ENUMERATED_it);
105}
106
107ASN1_ENUMERATED *
108ASN1_ENUMERATED_new(void)
109{
110 return (ASN1_ENUMERATED *)ASN1_item_new(&ASN1_ENUMERATED_it);
111}
112
113void
114ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
115{
116 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
117}
70 118
71IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) 119IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING)
72IMPLEMENT_ASN1_FUNCTIONS(ASN1_BIT_STRING) 120
121ASN1_BIT_STRING *
122d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
123{
124 return (ASN1_BIT_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
125 &ASN1_BIT_STRING_it);
126}
127
128int
129i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out)
130{
131 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BIT_STRING_it);
132}
133
134ASN1_BIT_STRING *
135ASN1_BIT_STRING_new(void)
136{
137 return (ASN1_BIT_STRING *)ASN1_item_new(&ASN1_BIT_STRING_it);
138}
139
140void
141ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
142{
143 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
144}
73 145
74IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) 146IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING)
75IMPLEMENT_ASN1_FUNCTIONS(ASN1_OCTET_STRING) 147
148ASN1_OCTET_STRING *
149d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
150{
151 return (ASN1_OCTET_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &ASN1_OCTET_STRING_it);
153}
154
155int
156i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_OCTET_STRING_it);
159}
160
161ASN1_OCTET_STRING *
162ASN1_OCTET_STRING_new(void)
163{
164 return (ASN1_OCTET_STRING *)ASN1_item_new(&ASN1_OCTET_STRING_it);
165}
166
167void
168ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
171}
76 172
77IMPLEMENT_ASN1_TYPE(ASN1_NULL) 173IMPLEMENT_ASN1_TYPE(ASN1_NULL)
78IMPLEMENT_ASN1_FUNCTIONS(ASN1_NULL) 174
175ASN1_NULL *
176d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
177{
178 return (ASN1_NULL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
179 &ASN1_NULL_it);
180}
181
182int
183i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out)
184{
185 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_NULL_it);
186}
187
188ASN1_NULL *
189ASN1_NULL_new(void)
190{
191 return (ASN1_NULL *)ASN1_item_new(&ASN1_NULL_it);
192}
193
194void
195ASN1_NULL_free(ASN1_NULL *a)
196{
197 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
198}
79 199
80IMPLEMENT_ASN1_TYPE(ASN1_OBJECT) 200IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
81 201
82IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) 202IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING)
83IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTF8STRING) 203
204ASN1_UTF8STRING *
205d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
206{
207 return (ASN1_UTF8STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
208 &ASN1_UTF8STRING_it);
209}
210
211int
212i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out)
213{
214 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTF8STRING_it);
215}
216
217ASN1_UTF8STRING *
218ASN1_UTF8STRING_new(void)
219{
220 return (ASN1_UTF8STRING *)ASN1_item_new(&ASN1_UTF8STRING_it);
221}
222
223void
224ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
225{
226 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
227}
84 228
85IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) 229IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING)
86IMPLEMENT_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) 230
231ASN1_PRINTABLESTRING *
232d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len)
233{
234 return (ASN1_PRINTABLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
235 &ASN1_PRINTABLESTRING_it);
236}
237
238int
239i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out)
240{
241 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLESTRING_it);
242}
243
244ASN1_PRINTABLESTRING *
245ASN1_PRINTABLESTRING_new(void)
246{
247 return (ASN1_PRINTABLESTRING *)ASN1_item_new(&ASN1_PRINTABLESTRING_it);
248}
249
250void
251ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
252{
253 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
254}
87 255
88IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) 256IMPLEMENT_ASN1_TYPE(ASN1_T61STRING)
89IMPLEMENT_ASN1_FUNCTIONS(ASN1_T61STRING) 257
258ASN1_T61STRING *
259d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
260{
261 return (ASN1_T61STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
262 &ASN1_T61STRING_it);
263}
264
265int
266i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out)
267{
268 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_T61STRING_it);
269}
270
271ASN1_T61STRING *
272ASN1_T61STRING_new(void)
273{
274 return (ASN1_T61STRING *)ASN1_item_new(&ASN1_T61STRING_it);
275}
276
277void
278ASN1_T61STRING_free(ASN1_T61STRING *a)
279{
280 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
281}
90 282
91IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) 283IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING)
92IMPLEMENT_ASN1_FUNCTIONS(ASN1_IA5STRING) 284
285ASN1_IA5STRING *
286d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
287{
288 return (ASN1_IA5STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
289 &ASN1_IA5STRING_it);
290}
291
292int
293i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out)
294{
295 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_IA5STRING_it);
296}
297
298ASN1_IA5STRING *
299ASN1_IA5STRING_new(void)
300{
301 return (ASN1_IA5STRING *)ASN1_item_new(&ASN1_IA5STRING_it);
302}
303
304void
305ASN1_IA5STRING_free(ASN1_IA5STRING *a)
306{
307 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
308}
93 309
94IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) 310IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING)
95IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALSTRING) 311
312ASN1_GENERALSTRING *
313d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len)
314{
315 return (ASN1_GENERALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
316 &ASN1_GENERALSTRING_it);
317}
318
319int
320i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out)
321{
322 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALSTRING_it);
323}
324
325ASN1_GENERALSTRING *
326ASN1_GENERALSTRING_new(void)
327{
328 return (ASN1_GENERALSTRING *)ASN1_item_new(&ASN1_GENERALSTRING_it);
329}
330
331void
332ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
333{
334 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
335}
96 336
97IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) 337IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME)
98IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTCTIME) 338
339ASN1_UTCTIME *
340d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
341{
342 return (ASN1_UTCTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
343 &ASN1_UTCTIME_it);
344}
345
346int
347i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out)
348{
349 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTCTIME_it);
350}
351
352ASN1_UTCTIME *
353ASN1_UTCTIME_new(void)
354{
355 return (ASN1_UTCTIME *)ASN1_item_new(&ASN1_UTCTIME_it);
356}
357
358void
359ASN1_UTCTIME_free(ASN1_UTCTIME *a)
360{
361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
362}
99 363
100IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) 364IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME)
101IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) 365
366ASN1_GENERALIZEDTIME *
367d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len)
368{
369 return (ASN1_GENERALIZEDTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
370 &ASN1_GENERALIZEDTIME_it);
371}
372
373int
374i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out)
375{
376 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALIZEDTIME_it);
377}
378
379ASN1_GENERALIZEDTIME *
380ASN1_GENERALIZEDTIME_new(void)
381{
382 return (ASN1_GENERALIZEDTIME *)ASN1_item_new(&ASN1_GENERALIZEDTIME_it);
383}
384
385void
386ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
387{
388 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
389}
102 390
103IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) 391IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING)
104IMPLEMENT_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) 392
393ASN1_VISIBLESTRING *
394d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len)
395{
396 return (ASN1_VISIBLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
397 &ASN1_VISIBLESTRING_it);
398}
399
400int
401i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out)
402{
403 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_VISIBLESTRING_it);
404}
405
406ASN1_VISIBLESTRING *
407ASN1_VISIBLESTRING_new(void)
408{
409 return (ASN1_VISIBLESTRING *)ASN1_item_new(&ASN1_VISIBLESTRING_it);
410}
411
412void
413ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
414{
415 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
416}
105 417
106IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) 418IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING)
107IMPLEMENT_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) 419
420ASN1_UNIVERSALSTRING *
421d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len)
422{
423 return (ASN1_UNIVERSALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
424 &ASN1_UNIVERSALSTRING_it);
425}
426
427int
428i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out)
429{
430 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UNIVERSALSTRING_it);
431}
432
433ASN1_UNIVERSALSTRING *
434ASN1_UNIVERSALSTRING_new(void)
435{
436 return (ASN1_UNIVERSALSTRING *)ASN1_item_new(&ASN1_UNIVERSALSTRING_it);
437}
438
439void
440ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
441{
442 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
443}
108 444
109IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) 445IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING)
110IMPLEMENT_ASN1_FUNCTIONS(ASN1_BMPSTRING) 446
447ASN1_BMPSTRING *
448d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
449{
450 return (ASN1_BMPSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
451 &ASN1_BMPSTRING_it);
452}
453
454int
455i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out)
456{
457 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BMPSTRING_it);
458}
459
460ASN1_BMPSTRING *
461ASN1_BMPSTRING_new(void)
462{
463 return (ASN1_BMPSTRING *)ASN1_item_new(&ASN1_BMPSTRING_it);
464}
465
466void
467ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
468{
469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
470}
111 471
112IMPLEMENT_ASN1_TYPE(ASN1_ANY) 472IMPLEMENT_ASN1_TYPE(ASN1_ANY)
113 473
diff --git a/src/lib/libcrypto/asn1/x_algor.c b/src/lib/libcrypto/asn1/x_algor.c
index 71aeaaade0..7d264f9fd3 100644
--- a/src/lib/libcrypto/asn1/x_algor.c
+++ b/src/lib/libcrypto/asn1/x_algor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_algor.c,v 1.13 2015/01/28 04:14:31 beck Exp $ */ 1/* $OpenBSD: x_algor.c,v 1.14 2015/02/09 15:05:59 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 */
@@ -70,7 +70,31 @@ ASN1_ITEM_TEMPLATE(X509_ALGORS) =
70 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, algorithms, X509_ALGOR) 70 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, algorithms, X509_ALGOR)
71ASN1_ITEM_TEMPLATE_END(X509_ALGORS) 71ASN1_ITEM_TEMPLATE_END(X509_ALGORS)
72 72
73IMPLEMENT_ASN1_FUNCTIONS(X509_ALGOR) 73
74X509_ALGOR *
75d2i_X509_ALGOR(X509_ALGOR **a, const unsigned char **in, long len)
76{
77 return (X509_ALGOR *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
78 &X509_ALGOR_it);
79}
80
81int
82i2d_X509_ALGOR(X509_ALGOR *a, unsigned char **out)
83{
84 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_ALGOR_it);
85}
86
87X509_ALGOR *
88X509_ALGOR_new(void)
89{
90 return (X509_ALGOR *)ASN1_item_new(&X509_ALGOR_it);
91}
92
93void
94X509_ALGOR_free(X509_ALGOR *a)
95{
96 ASN1_item_free((ASN1_VALUE *)a, &X509_ALGOR_it);
97}
74IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_ALGORS, X509_ALGORS, X509_ALGORS) 98IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_ALGORS, X509_ALGORS, X509_ALGORS)
75IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR) 99IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR)
76 100
diff --git a/src/lib/libcrypto/asn1/x_attrib.c b/src/lib/libcrypto/asn1/x_attrib.c
index 1efbb98bbd..aafd5dd485 100644
--- a/src/lib/libcrypto/asn1/x_attrib.c
+++ b/src/lib/libcrypto/asn1/x_attrib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_attrib.c,v 1.9 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_attrib.c,v 1.10 2015/02/09 15:05:59 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 *
@@ -93,7 +93,31 @@ ASN1_SEQUENCE(X509_ATTRIBUTE) = {
93 ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET) 93 ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET)
94} ASN1_SEQUENCE_END(X509_ATTRIBUTE) 94} ASN1_SEQUENCE_END(X509_ATTRIBUTE)
95 95
96IMPLEMENT_ASN1_FUNCTIONS(X509_ATTRIBUTE) 96
97X509_ATTRIBUTE *
98d2i_X509_ATTRIBUTE(X509_ATTRIBUTE **a, const unsigned char **in, long len)
99{
100 return (X509_ATTRIBUTE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
101 &X509_ATTRIBUTE_it);
102}
103
104int
105i2d_X509_ATTRIBUTE(X509_ATTRIBUTE *a, unsigned char **out)
106{
107 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_ATTRIBUTE_it);
108}
109
110X509_ATTRIBUTE *
111X509_ATTRIBUTE_new(void)
112{
113 return (X509_ATTRIBUTE *)ASN1_item_new(&X509_ATTRIBUTE_it);
114}
115
116void
117X509_ATTRIBUTE_free(X509_ATTRIBUTE *a)
118{
119 ASN1_item_free((ASN1_VALUE *)a, &X509_ATTRIBUTE_it);
120}
97IMPLEMENT_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) 121IMPLEMENT_ASN1_DUP_FUNCTION(X509_ATTRIBUTE)
98 122
99X509_ATTRIBUTE * 123X509_ATTRIBUTE *
diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c
index bdec50dc80..2539fd92c4 100644
--- a/src/lib/libcrypto/asn1/x_crl.c
+++ b/src/lib/libcrypto/asn1/x_crl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_crl.c,v 1.18 2014/07/11 13:54:41 miod Exp $ */ 1/* $OpenBSD: x_crl.c,v 1.19 2015/02/09 15:05:59 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 *
@@ -337,9 +337,81 @@ ASN1_SEQUENCE_ref(X509_CRL, crl_cb, CRYPTO_LOCK_X509_CRL) = {
337 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING) 337 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING)
338} ASN1_SEQUENCE_END_ref(X509_CRL, X509_CRL) 338} ASN1_SEQUENCE_END_ref(X509_CRL, X509_CRL)
339 339
340IMPLEMENT_ASN1_FUNCTIONS(X509_REVOKED) 340
341IMPLEMENT_ASN1_FUNCTIONS(X509_CRL_INFO) 341X509_REVOKED *
342IMPLEMENT_ASN1_FUNCTIONS(X509_CRL) 342d2i_X509_REVOKED(X509_REVOKED **a, const unsigned char **in, long len)
343{
344 return (X509_REVOKED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
345 &X509_REVOKED_it);
346}
347
348int
349i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **out)
350{
351 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REVOKED_it);
352}
353
354X509_REVOKED *
355X509_REVOKED_new(void)
356{
357 return (X509_REVOKED *)ASN1_item_new(&X509_REVOKED_it);
358}
359
360void
361X509_REVOKED_free(X509_REVOKED *a)
362{
363 ASN1_item_free((ASN1_VALUE *)a, &X509_REVOKED_it);
364}
365
366X509_CRL_INFO *
367d2i_X509_CRL_INFO(X509_CRL_INFO **a, const unsigned char **in, long len)
368{
369 return (X509_CRL_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
370 &X509_CRL_INFO_it);
371}
372
373int
374i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **out)
375{
376 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CRL_INFO_it);
377}
378
379X509_CRL_INFO *
380X509_CRL_INFO_new(void)
381{
382 return (X509_CRL_INFO *)ASN1_item_new(&X509_CRL_INFO_it);
383}
384
385void
386X509_CRL_INFO_free(X509_CRL_INFO *a)
387{
388 ASN1_item_free((ASN1_VALUE *)a, &X509_CRL_INFO_it);
389}
390
391X509_CRL *
392d2i_X509_CRL(X509_CRL **a, const unsigned char **in, long len)
393{
394 return (X509_CRL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
395 &X509_CRL_it);
396}
397
398int
399i2d_X509_CRL(X509_CRL *a, unsigned char **out)
400{
401 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CRL_it);
402}
403
404X509_CRL *
405X509_CRL_new(void)
406{
407 return (X509_CRL *)ASN1_item_new(&X509_CRL_it);
408}
409
410void
411X509_CRL_free(X509_CRL *a)
412{
413 ASN1_item_free((ASN1_VALUE *)a, &X509_CRL_it);
414}
343IMPLEMENT_ASN1_DUP_FUNCTION(X509_CRL) 415IMPLEMENT_ASN1_DUP_FUNCTION(X509_CRL)
344 416
345static int 417static int
diff --git a/src/lib/libcrypto/asn1/x_exten.c b/src/lib/libcrypto/asn1/x_exten.c
index a3fa88498b..40c521ec80 100644
--- a/src/lib/libcrypto/asn1/x_exten.c
+++ b/src/lib/libcrypto/asn1/x_exten.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_exten.c,v 1.9 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: x_exten.c,v 1.10 2015/02/09 15:05:59 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 */
@@ -71,6 +71,30 @@ ASN1_ITEM_TEMPLATE(X509_EXTENSIONS) =
71 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, Extension, X509_EXTENSION) 71 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, Extension, X509_EXTENSION)
72ASN1_ITEM_TEMPLATE_END(X509_EXTENSIONS) 72ASN1_ITEM_TEMPLATE_END(X509_EXTENSIONS)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(X509_EXTENSION) 74
75X509_EXTENSION *
76d2i_X509_EXTENSION(X509_EXTENSION **a, const unsigned char **in, long len)
77{
78 return (X509_EXTENSION *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &X509_EXTENSION_it);
80}
81
82int
83i2d_X509_EXTENSION(X509_EXTENSION *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_EXTENSION_it);
86}
87
88X509_EXTENSION *
89X509_EXTENSION_new(void)
90{
91 return (X509_EXTENSION *)ASN1_item_new(&X509_EXTENSION_it);
92}
93
94void
95X509_EXTENSION_free(X509_EXTENSION *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &X509_EXTENSION_it);
98}
75IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) 99IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS)
76IMPLEMENT_ASN1_DUP_FUNCTION(X509_EXTENSION) 100IMPLEMENT_ASN1_DUP_FUNCTION(X509_EXTENSION)
diff --git a/src/lib/libcrypto/asn1/x_name.c b/src/lib/libcrypto/asn1/x_name.c
index 7c77ceea3b..a7f0e14d13 100644
--- a/src/lib/libcrypto/asn1/x_name.c
+++ b/src/lib/libcrypto/asn1/x_name.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_name.c,v 1.20 2014/07/12 11:25:25 miod Exp $ */ 1/* $OpenBSD: x_name.c,v 1.21 2015/02/09 15:05:59 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 *
@@ -92,7 +92,31 @@ ASN1_SEQUENCE(X509_NAME_ENTRY) = {
92 ASN1_SIMPLE(X509_NAME_ENTRY, value, ASN1_PRINTABLE) 92 ASN1_SIMPLE(X509_NAME_ENTRY, value, ASN1_PRINTABLE)
93} ASN1_SEQUENCE_END(X509_NAME_ENTRY) 93} ASN1_SEQUENCE_END(X509_NAME_ENTRY)
94 94
95IMPLEMENT_ASN1_FUNCTIONS(X509_NAME_ENTRY) 95
96X509_NAME_ENTRY *
97d2i_X509_NAME_ENTRY(X509_NAME_ENTRY **a, const unsigned char **in, long len)
98{
99 return (X509_NAME_ENTRY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
100 &X509_NAME_ENTRY_it);
101}
102
103int
104i2d_X509_NAME_ENTRY(X509_NAME_ENTRY *a, unsigned char **out)
105{
106 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_NAME_ENTRY_it);
107}
108
109X509_NAME_ENTRY *
110X509_NAME_ENTRY_new(void)
111{
112 return (X509_NAME_ENTRY *)ASN1_item_new(&X509_NAME_ENTRY_it);
113}
114
115void
116X509_NAME_ENTRY_free(X509_NAME_ENTRY *a)
117{
118 ASN1_item_free((ASN1_VALUE *)a, &X509_NAME_ENTRY_it);
119}
96IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) 120IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME_ENTRY)
97 121
98/* For the "Name" type we need a SEQUENCE OF { SET OF X509_NAME_ENTRY } 122/* For the "Name" type we need a SEQUENCE OF { SET OF X509_NAME_ENTRY }
@@ -125,7 +149,31 @@ const ASN1_EXTERN_FUNCS x509_name_ff = {
125 149
126IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff) 150IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff)
127 151
128IMPLEMENT_ASN1_FUNCTIONS(X509_NAME) 152
153X509_NAME *
154d2i_X509_NAME(X509_NAME **a, const unsigned char **in, long len)
155{
156 return (X509_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
157 &X509_NAME_it);
158}
159
160int
161i2d_X509_NAME(X509_NAME *a, unsigned char **out)
162{
163 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_NAME_it);
164}
165
166X509_NAME *
167X509_NAME_new(void)
168{
169 return (X509_NAME *)ASN1_item_new(&X509_NAME_it);
170}
171
172void
173X509_NAME_free(X509_NAME *a)
174{
175 ASN1_item_free((ASN1_VALUE *)a, &X509_NAME_it);
176}
129IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME) 177IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME)
130 178
131static int 179static int
diff --git a/src/lib/libcrypto/asn1/x_nx509.c b/src/lib/libcrypto/asn1/x_nx509.c
index eebeb9206f..9738560c19 100644
--- a/src/lib/libcrypto/asn1/x_nx509.c
+++ b/src/lib/libcrypto/asn1/x_nx509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_nx509.c,v 1.3 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: x_nx509.c,v 1.4 2015/02/09 15:05:59 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 2005. 3 * project 2005.
4 */ 4 */
@@ -68,4 +68,28 @@ ASN1_SEQUENCE(NETSCAPE_X509) = {
68 ASN1_OPT(NETSCAPE_X509, cert, X509) 68 ASN1_OPT(NETSCAPE_X509, cert, X509)
69} ASN1_SEQUENCE_END(NETSCAPE_X509) 69} ASN1_SEQUENCE_END(NETSCAPE_X509)
70 70
71IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_X509) 71
72NETSCAPE_X509 *
73d2i_NETSCAPE_X509(NETSCAPE_X509 **a, const unsigned char **in, long len)
74{
75 return (NETSCAPE_X509 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
76 &NETSCAPE_X509_it);
77}
78
79int
80i2d_NETSCAPE_X509(NETSCAPE_X509 *a, unsigned char **out)
81{
82 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_X509_it);
83}
84
85NETSCAPE_X509 *
86NETSCAPE_X509_new(void)
87{
88 return (NETSCAPE_X509 *)ASN1_item_new(&NETSCAPE_X509_it);
89}
90
91void
92NETSCAPE_X509_free(NETSCAPE_X509 *a)
93{
94 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_X509_it);
95}
diff --git a/src/lib/libcrypto/asn1/x_pubkey.c b/src/lib/libcrypto/asn1/x_pubkey.c
index 56cc63059a..0c7d01e60d 100644
--- a/src/lib/libcrypto/asn1/x_pubkey.c
+++ b/src/lib/libcrypto/asn1/x_pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_pubkey.c,v 1.22 2014/07/12 16:03:36 miod Exp $ */ 1/* $OpenBSD: x_pubkey.c,v 1.23 2015/02/09 15:05:59 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 *
@@ -89,7 +89,31 @@ ASN1_SEQUENCE_cb(X509_PUBKEY, pubkey_cb) = {
89 ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING) 89 ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING)
90} ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY) 90} ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY)
91 91
92IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY) 92
93X509_PUBKEY *
94d2i_X509_PUBKEY(X509_PUBKEY **a, const unsigned char **in, long len)
95{
96 return (X509_PUBKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
97 &X509_PUBKEY_it);
98}
99
100int
101i2d_X509_PUBKEY(X509_PUBKEY *a, unsigned char **out)
102{
103 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_PUBKEY_it);
104}
105
106X509_PUBKEY *
107X509_PUBKEY_new(void)
108{
109 return (X509_PUBKEY *)ASN1_item_new(&X509_PUBKEY_it);
110}
111
112void
113X509_PUBKEY_free(X509_PUBKEY *a)
114{
115 ASN1_item_free((ASN1_VALUE *)a, &X509_PUBKEY_it);
116}
93 117
94int 118int
95X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) 119X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
diff --git a/src/lib/libcrypto/asn1/x_req.c b/src/lib/libcrypto/asn1/x_req.c
index c876edd7f0..89b2d88d15 100644
--- a/src/lib/libcrypto/asn1/x_req.c
+++ b/src/lib/libcrypto/asn1/x_req.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_req.c,v 1.10 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_req.c,v 1.11 2015/02/09 15:05:59 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 *
@@ -102,7 +102,31 @@ ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = {
102 ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0) 102 ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0)
103} ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO) 103} ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO)
104 104
105IMPLEMENT_ASN1_FUNCTIONS(X509_REQ_INFO) 105
106X509_REQ_INFO *
107d2i_X509_REQ_INFO(X509_REQ_INFO **a, const unsigned char **in, long len)
108{
109 return (X509_REQ_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
110 &X509_REQ_INFO_it);
111}
112
113int
114i2d_X509_REQ_INFO(X509_REQ_INFO *a, unsigned char **out)
115{
116 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REQ_INFO_it);
117}
118
119X509_REQ_INFO *
120X509_REQ_INFO_new(void)
121{
122 return (X509_REQ_INFO *)ASN1_item_new(&X509_REQ_INFO_it);
123}
124
125void
126X509_REQ_INFO_free(X509_REQ_INFO *a)
127{
128 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_INFO_it);
129}
106 130
107ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = { 131ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = {
108 ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO), 132 ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO),
@@ -110,5 +134,29 @@ ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = {
110 ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING) 134 ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING)
111} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ) 135} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ)
112 136
113IMPLEMENT_ASN1_FUNCTIONS(X509_REQ) 137
138X509_REQ *
139d2i_X509_REQ(X509_REQ **a, const unsigned char **in, long len)
140{
141 return (X509_REQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
142 &X509_REQ_it);
143}
144
145int
146i2d_X509_REQ(X509_REQ *a, unsigned char **out)
147{
148 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REQ_it);
149}
150
151X509_REQ *
152X509_REQ_new(void)
153{
154 return (X509_REQ *)ASN1_item_new(&X509_REQ_it);
155}
156
157void
158X509_REQ_free(X509_REQ *a)
159{
160 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_it);
161}
114IMPLEMENT_ASN1_DUP_FUNCTION(X509_REQ) 162IMPLEMENT_ASN1_DUP_FUNCTION(X509_REQ)
diff --git a/src/lib/libcrypto/asn1/x_sig.c b/src/lib/libcrypto/asn1/x_sig.c
index ab4546e3ca..7c4c8c9c55 100644
--- a/src/lib/libcrypto/asn1/x_sig.c
+++ b/src/lib/libcrypto/asn1/x_sig.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_sig.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_sig.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -66,4 +66,28 @@ ASN1_SEQUENCE(X509_SIG) = {
66 ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING) 66 ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING)
67} ASN1_SEQUENCE_END(X509_SIG) 67} ASN1_SEQUENCE_END(X509_SIG)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(X509_SIG) 69
70X509_SIG *
71d2i_X509_SIG(X509_SIG **a, const unsigned char **in, long len)
72{
73 return (X509_SIG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &X509_SIG_it);
75}
76
77int
78i2d_X509_SIG(X509_SIG *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_SIG_it);
81}
82
83X509_SIG *
84X509_SIG_new(void)
85{
86 return (X509_SIG *)ASN1_item_new(&X509_SIG_it);
87}
88
89void
90X509_SIG_free(X509_SIG *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &X509_SIG_it);
93}
diff --git a/src/lib/libcrypto/asn1/x_spki.c b/src/lib/libcrypto/asn1/x_spki.c
index 836abb13d8..fc056ff53b 100644
--- a/src/lib/libcrypto/asn1/x_spki.c
+++ b/src/lib/libcrypto/asn1/x_spki.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_spki.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_spki.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -70,7 +70,31 @@ ASN1_SEQUENCE(NETSCAPE_SPKAC) = {
70 ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING) 70 ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING)
71} ASN1_SEQUENCE_END(NETSCAPE_SPKAC) 71} ASN1_SEQUENCE_END(NETSCAPE_SPKAC)
72 72
73IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKAC) 73
74NETSCAPE_SPKAC *
75d2i_NETSCAPE_SPKAC(NETSCAPE_SPKAC **a, const unsigned char **in, long len)
76{
77 return (NETSCAPE_SPKAC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
78 &NETSCAPE_SPKAC_it);
79}
80
81int
82i2d_NETSCAPE_SPKAC(NETSCAPE_SPKAC *a, unsigned char **out)
83{
84 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_SPKAC_it);
85}
86
87NETSCAPE_SPKAC *
88NETSCAPE_SPKAC_new(void)
89{
90 return (NETSCAPE_SPKAC *)ASN1_item_new(&NETSCAPE_SPKAC_it);
91}
92
93void
94NETSCAPE_SPKAC_free(NETSCAPE_SPKAC *a)
95{
96 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_SPKAC_it);
97}
74 98
75ASN1_SEQUENCE(NETSCAPE_SPKI) = { 99ASN1_SEQUENCE(NETSCAPE_SPKI) = {
76 ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC), 100 ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC),
@@ -78,4 +102,28 @@ ASN1_SEQUENCE(NETSCAPE_SPKI) = {
78 ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING) 102 ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING)
79} ASN1_SEQUENCE_END(NETSCAPE_SPKI) 103} ASN1_SEQUENCE_END(NETSCAPE_SPKI)
80 104
81IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKI) 105
106NETSCAPE_SPKI *
107d2i_NETSCAPE_SPKI(NETSCAPE_SPKI **a, const unsigned char **in, long len)
108{
109 return (NETSCAPE_SPKI *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
110 &NETSCAPE_SPKI_it);
111}
112
113int
114i2d_NETSCAPE_SPKI(NETSCAPE_SPKI *a, unsigned char **out)
115{
116 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_SPKI_it);
117}
118
119NETSCAPE_SPKI *
120NETSCAPE_SPKI_new(void)
121{
122 return (NETSCAPE_SPKI *)ASN1_item_new(&NETSCAPE_SPKI_it);
123}
124
125void
126NETSCAPE_SPKI_free(NETSCAPE_SPKI *a)
127{
128 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_SPKI_it);
129}
diff --git a/src/lib/libcrypto/asn1/x_val.c b/src/lib/libcrypto/asn1/x_val.c
index da9d16346b..27835e94da 100644
--- a/src/lib/libcrypto/asn1/x_val.c
+++ b/src/lib/libcrypto/asn1/x_val.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_val.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_val.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -66,4 +66,28 @@ ASN1_SEQUENCE(X509_VAL) = {
66 ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME) 66 ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME)
67} ASN1_SEQUENCE_END(X509_VAL) 67} ASN1_SEQUENCE_END(X509_VAL)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(X509_VAL) 69
70X509_VAL *
71d2i_X509_VAL(X509_VAL **a, const unsigned char **in, long len)
72{
73 return (X509_VAL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &X509_VAL_it);
75}
76
77int
78i2d_X509_VAL(X509_VAL *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_VAL_it);
81}
82
83X509_VAL *
84X509_VAL_new(void)
85{
86 return (X509_VAL *)ASN1_item_new(&X509_VAL_it);
87}
88
89void
90X509_VAL_free(X509_VAL *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &X509_VAL_it);
93}
diff --git a/src/lib/libcrypto/asn1/x_x509.c b/src/lib/libcrypto/asn1/x_x509.c
index 0236a0faa2..8fd2d7684b 100644
--- a/src/lib/libcrypto/asn1/x_x509.c
+++ b/src/lib/libcrypto/asn1/x_x509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509.c,v 1.17 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_x509.c,v 1.18 2015/02/09 15:05:59 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 *
@@ -78,7 +78,31 @@ ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = {
78 ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3) 78 ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3)
79} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF) 79} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF)
80 80
81IMPLEMENT_ASN1_FUNCTIONS(X509_CINF) 81
82X509_CINF *
83d2i_X509_CINF(X509_CINF **a, const unsigned char **in, long len)
84{
85 return (X509_CINF *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
86 &X509_CINF_it);
87}
88
89int
90i2d_X509_CINF(X509_CINF *a, unsigned char **out)
91{
92 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CINF_it);
93}
94
95X509_CINF *
96X509_CINF_new(void)
97{
98 return (X509_CINF *)ASN1_item_new(&X509_CINF_it);
99}
100
101void
102X509_CINF_free(X509_CINF *a)
103{
104 ASN1_item_free((ASN1_VALUE *)a, &X509_CINF_it);
105}
82/* X509 top level structure needs a bit of customisation */ 106/* X509 top level structure needs a bit of customisation */
83 107
84extern void policy_cache_free(X509_POLICY_CACHE *cache); 108extern void policy_cache_free(X509_POLICY_CACHE *cache);
@@ -138,7 +162,31 @@ ASN1_SEQUENCE_ref(X509, x509_cb, CRYPTO_LOCK_X509) = {
138 ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING) 162 ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING)
139} ASN1_SEQUENCE_END_ref(X509, X509) 163} ASN1_SEQUENCE_END_ref(X509, X509)
140 164
141IMPLEMENT_ASN1_FUNCTIONS(X509) 165
166X509 *
167d2i_X509(X509 **a, const unsigned char **in, long len)
168{
169 return (X509 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
170 &X509_it);
171}
172
173int
174i2d_X509(X509 *a, unsigned char **out)
175{
176 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_it);
177}
178
179X509 *
180X509_new(void)
181{
182 return (X509 *)ASN1_item_new(&X509_it);
183}
184
185void
186X509_free(X509 *a)
187{
188 ASN1_item_free((ASN1_VALUE *)a, &X509_it);
189}
142IMPLEMENT_ASN1_DUP_FUNCTION(X509) 190IMPLEMENT_ASN1_DUP_FUNCTION(X509)
143 191
144int 192int
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c
index c6837069d9..8a3561e882 100644
--- a/src/lib/libcrypto/asn1/x_x509a.c
+++ b/src/lib/libcrypto/asn1/x_x509a.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509a.c,v 1.10 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_x509a.c,v 1.11 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -79,7 +79,31 @@ ASN1_SEQUENCE(X509_CERT_AUX) = {
79 ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, other, X509_ALGOR, 1) 79 ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, other, X509_ALGOR, 1)
80} ASN1_SEQUENCE_END(X509_CERT_AUX) 80} ASN1_SEQUENCE_END(X509_CERT_AUX)
81 81
82IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_AUX) 82
83X509_CERT_AUX *
84d2i_X509_CERT_AUX(X509_CERT_AUX **a, const unsigned char **in, long len)
85{
86 return (X509_CERT_AUX *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
87 &X509_CERT_AUX_it);
88}
89
90int
91i2d_X509_CERT_AUX(X509_CERT_AUX *a, unsigned char **out)
92{
93 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CERT_AUX_it);
94}
95
96X509_CERT_AUX *
97X509_CERT_AUX_new(void)
98{
99 return (X509_CERT_AUX *)ASN1_item_new(&X509_CERT_AUX_it);
100}
101
102void
103X509_CERT_AUX_free(X509_CERT_AUX *a)
104{
105 ASN1_item_free((ASN1_VALUE *)a, &X509_CERT_AUX_it);
106}
83 107
84static X509_CERT_AUX * 108static X509_CERT_AUX *
85aux_get(X509 *x) 109aux_get(X509 *x)
@@ -198,4 +222,28 @@ ASN1_SEQUENCE(X509_CERT_PAIR) = {
198 ASN1_EXP_OPT(X509_CERT_PAIR, reverse, X509, 1) 222 ASN1_EXP_OPT(X509_CERT_PAIR, reverse, X509, 1)
199} ASN1_SEQUENCE_END(X509_CERT_PAIR) 223} ASN1_SEQUENCE_END(X509_CERT_PAIR)
200 224
201IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_PAIR) 225
226X509_CERT_PAIR *
227d2i_X509_CERT_PAIR(X509_CERT_PAIR **a, const unsigned char **in, long len)
228{
229 return (X509_CERT_PAIR *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
230 &X509_CERT_PAIR_it);
231}
232
233int
234i2d_X509_CERT_PAIR(X509_CERT_PAIR *a, unsigned char **out)
235{
236 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CERT_PAIR_it);
237}
238
239X509_CERT_PAIR *
240X509_CERT_PAIR_new(void)
241{
242 return (X509_CERT_PAIR *)ASN1_item_new(&X509_CERT_PAIR_it);
243}
244
245void
246X509_CERT_PAIR_free(X509_CERT_PAIR *a)
247{
248 ASN1_item_free((ASN1_VALUE *)a, &X509_CERT_PAIR_it);
249}
diff --git a/src/lib/libssl/src/crypto/asn1/a_time.c b/src/lib/libssl/src/crypto/asn1/a_time.c
index c5e882a4f6..95481fc4c6 100644
--- a/src/lib/libssl/src/crypto/asn1/a_time.c
+++ b/src/lib/libssl/src/crypto/asn1/a_time.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_time.c,v 1.22 2015/02/07 13:19:15 doug Exp $ */ 1/* $OpenBSD: a_time.c,v 1.23 2015/02/09 15:05:59 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -71,7 +71,31 @@
71 71
72IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME) 72IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(ASN1_TIME) 74
75ASN1_TIME *
76d2i_ASN1_TIME(ASN1_TIME **a, const unsigned char **in, long len)
77{
78 return (ASN1_TIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &ASN1_TIME_it);
80}
81
82int
83i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_TIME_it);
86}
87
88ASN1_TIME *
89ASN1_TIME_new(void)
90{
91 return (ASN1_TIME *)ASN1_item_new(&ASN1_TIME_it);
92}
93
94void
95ASN1_TIME_free(ASN1_TIME *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &ASN1_TIME_it);
98}
75 99
76ASN1_TIME * 100ASN1_TIME *
77ASN1_TIME_set(ASN1_TIME *s, time_t t) 101ASN1_TIME_set(ASN1_TIME *s, time_t t)
diff --git a/src/lib/libssl/src/crypto/asn1/nsseq.c b/src/lib/libssl/src/crypto/asn1/nsseq.c
index 97af462dc0..ceab3992fd 100644
--- a/src/lib/libssl/src/crypto/asn1/nsseq.c
+++ b/src/lib/libssl/src/crypto/asn1/nsseq.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: nsseq.c,v 1.7 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: nsseq.c,v 1.8 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -80,4 +80,28 @@ ASN1_SEQUENCE_cb(NETSCAPE_CERT_SEQUENCE, nsseq_cb) = {
80 ASN1_EXP_SEQUENCE_OF_OPT(NETSCAPE_CERT_SEQUENCE, certs, X509, 0) 80 ASN1_EXP_SEQUENCE_OF_OPT(NETSCAPE_CERT_SEQUENCE, certs, X509, 0)
81} ASN1_SEQUENCE_END_cb(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) 81} ASN1_SEQUENCE_END_cb(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE)
82 82
83IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) 83
84NETSCAPE_CERT_SEQUENCE *
85d2i_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE **a, const unsigned char **in, long len)
86{
87 return (NETSCAPE_CERT_SEQUENCE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
88 &NETSCAPE_CERT_SEQUENCE_it);
89}
90
91int
92i2d_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE *a, unsigned char **out)
93{
94 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_CERT_SEQUENCE_it);
95}
96
97NETSCAPE_CERT_SEQUENCE *
98NETSCAPE_CERT_SEQUENCE_new(void)
99{
100 return (NETSCAPE_CERT_SEQUENCE *)ASN1_item_new(&NETSCAPE_CERT_SEQUENCE_it);
101}
102
103void
104NETSCAPE_CERT_SEQUENCE_free(NETSCAPE_CERT_SEQUENCE *a)
105{
106 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_CERT_SEQUENCE_it);
107}
diff --git a/src/lib/libssl/src/crypto/asn1/p5_pbe.c b/src/lib/libssl/src/crypto/asn1/p5_pbe.c
index 44fbb648be..7491a5bdc7 100644
--- a/src/lib/libssl/src/crypto/asn1/p5_pbe.c
+++ b/src/lib/libssl/src/crypto/asn1/p5_pbe.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p5_pbe.c,v 1.17 2014/10/22 13:02:03 jsing Exp $ */ 1/* $OpenBSD: p5_pbe.c,v 1.18 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -71,7 +71,31 @@ ASN1_SEQUENCE(PBEPARAM) = {
71 ASN1_SIMPLE(PBEPARAM, iter, ASN1_INTEGER) 71 ASN1_SIMPLE(PBEPARAM, iter, ASN1_INTEGER)
72} ASN1_SEQUENCE_END(PBEPARAM) 72} ASN1_SEQUENCE_END(PBEPARAM)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(PBEPARAM) 74
75PBEPARAM *
76d2i_PBEPARAM(PBEPARAM **a, const unsigned char **in, long len)
77{
78 return (PBEPARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &PBEPARAM_it);
80}
81
82int
83i2d_PBEPARAM(PBEPARAM *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBEPARAM_it);
86}
87
88PBEPARAM *
89PBEPARAM_new(void)
90{
91 return (PBEPARAM *)ASN1_item_new(&PBEPARAM_it);
92}
93
94void
95PBEPARAM_free(PBEPARAM *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &PBEPARAM_it);
98}
75 99
76 100
77/* Set an algorithm identifier for a PKCS#5 PBE algorithm */ 101/* Set an algorithm identifier for a PKCS#5 PBE algorithm */
diff --git a/src/lib/libssl/src/crypto/asn1/p5_pbev2.c b/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
index 0947965219..1189e7e26b 100644
--- a/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
+++ b/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p5_pbev2.c,v 1.18 2014/10/22 13:02:03 jsing Exp $ */ 1/* $OpenBSD: p5_pbev2.c,v 1.19 2015/02/09 15:05:59 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 1999-2004. 3 * project 1999-2004.
4 */ 4 */
@@ -71,7 +71,31 @@ ASN1_SEQUENCE(PBE2PARAM) = {
71 ASN1_SIMPLE(PBE2PARAM, encryption, X509_ALGOR) 71 ASN1_SIMPLE(PBE2PARAM, encryption, X509_ALGOR)
72} ASN1_SEQUENCE_END(PBE2PARAM) 72} ASN1_SEQUENCE_END(PBE2PARAM)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(PBE2PARAM) 74
75PBE2PARAM *
76d2i_PBE2PARAM(PBE2PARAM **a, const unsigned char **in, long len)
77{
78 return (PBE2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &PBE2PARAM_it);
80}
81
82int
83i2d_PBE2PARAM(PBE2PARAM *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBE2PARAM_it);
86}
87
88PBE2PARAM *
89PBE2PARAM_new(void)
90{
91 return (PBE2PARAM *)ASN1_item_new(&PBE2PARAM_it);
92}
93
94void
95PBE2PARAM_free(PBE2PARAM *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &PBE2PARAM_it);
98}
75 99
76ASN1_SEQUENCE(PBKDF2PARAM) = { 100ASN1_SEQUENCE(PBKDF2PARAM) = {
77 ASN1_SIMPLE(PBKDF2PARAM, salt, ASN1_ANY), 101 ASN1_SIMPLE(PBKDF2PARAM, salt, ASN1_ANY),
@@ -80,7 +104,31 @@ ASN1_SEQUENCE(PBKDF2PARAM) = {
80 ASN1_OPT(PBKDF2PARAM, prf, X509_ALGOR) 104 ASN1_OPT(PBKDF2PARAM, prf, X509_ALGOR)
81} ASN1_SEQUENCE_END(PBKDF2PARAM) 105} ASN1_SEQUENCE_END(PBKDF2PARAM)
82 106
83IMPLEMENT_ASN1_FUNCTIONS(PBKDF2PARAM) 107
108PBKDF2PARAM *
109d2i_PBKDF2PARAM(PBKDF2PARAM **a, const unsigned char **in, long len)
110{
111 return (PBKDF2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
112 &PBKDF2PARAM_it);
113}
114
115int
116i2d_PBKDF2PARAM(PBKDF2PARAM *a, unsigned char **out)
117{
118 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PBKDF2PARAM_it);
119}
120
121PBKDF2PARAM *
122PBKDF2PARAM_new(void)
123{
124 return (PBKDF2PARAM *)ASN1_item_new(&PBKDF2PARAM_it);
125}
126
127void
128PBKDF2PARAM_free(PBKDF2PARAM *a)
129{
130 ASN1_item_free((ASN1_VALUE *)a, &PBKDF2PARAM_it);
131}
84 132
85/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm: 133/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm:
86 * yes I know this is horrible! 134 * yes I know this is horrible!
diff --git a/src/lib/libssl/src/crypto/asn1/p8_pkey.c b/src/lib/libssl/src/crypto/asn1/p8_pkey.c
index 3aacecb8fb..f8688ebc17 100644
--- a/src/lib/libssl/src/crypto/asn1/p8_pkey.c
+++ b/src/lib/libssl/src/crypto/asn1/p8_pkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p8_pkey.c,v 1.12 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: p8_pkey.c,v 1.13 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -82,7 +82,31 @@ ASN1_SEQUENCE_cb(PKCS8_PRIV_KEY_INFO, pkey_cb) = {
82 ASN1_IMP_SET_OF_OPT(PKCS8_PRIV_KEY_INFO, attributes, X509_ATTRIBUTE, 0) 82 ASN1_IMP_SET_OF_OPT(PKCS8_PRIV_KEY_INFO, attributes, X509_ATTRIBUTE, 0)
83} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) 83} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
84 84
85IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) 85
86PKCS8_PRIV_KEY_INFO *
87d2i_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO **a, const unsigned char **in, long len)
88{
89 return (PKCS8_PRIV_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
90 &PKCS8_PRIV_KEY_INFO_it);
91}
92
93int
94i2d_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO *a, unsigned char **out)
95{
96 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS8_PRIV_KEY_INFO_it);
97}
98
99PKCS8_PRIV_KEY_INFO *
100PKCS8_PRIV_KEY_INFO_new(void)
101{
102 return (PKCS8_PRIV_KEY_INFO *)ASN1_item_new(&PKCS8_PRIV_KEY_INFO_it);
103}
104
105void
106PKCS8_PRIV_KEY_INFO_free(PKCS8_PRIV_KEY_INFO *a)
107{
108 ASN1_item_free((ASN1_VALUE *)a, &PKCS8_PRIV_KEY_INFO_it);
109}
86 110
87int 111int
88PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, int version, 112PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, int version,
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_typ.c b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
index 04d9c84180..2f44b4229b 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.6 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.7 2015/02/09 15:05:59 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 */
@@ -63,51 +63,411 @@
63 63
64 64
65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) 65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER)
66IMPLEMENT_ASN1_FUNCTIONS(ASN1_INTEGER) 66
67ASN1_INTEGER *
68d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
69{
70 return (ASN1_INTEGER *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
71 &ASN1_INTEGER_it);
72}
73
74int
75i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out)
76{
77 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_INTEGER_it);
78}
79
80ASN1_INTEGER *
81ASN1_INTEGER_new(void)
82{
83 return (ASN1_INTEGER *)ASN1_item_new(&ASN1_INTEGER_it);
84}
85
86void
87ASN1_INTEGER_free(ASN1_INTEGER *a)
88{
89 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
90}
67 91
68IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) 92IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED)
69IMPLEMENT_ASN1_FUNCTIONS(ASN1_ENUMERATED) 93
94ASN1_ENUMERATED *
95d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
96{
97 return (ASN1_ENUMERATED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
98 &ASN1_ENUMERATED_it);
99}
100
101int
102i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out)
103{
104 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ENUMERATED_it);
105}
106
107ASN1_ENUMERATED *
108ASN1_ENUMERATED_new(void)
109{
110 return (ASN1_ENUMERATED *)ASN1_item_new(&ASN1_ENUMERATED_it);
111}
112
113void
114ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
115{
116 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
117}
70 118
71IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) 119IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING)
72IMPLEMENT_ASN1_FUNCTIONS(ASN1_BIT_STRING) 120
121ASN1_BIT_STRING *
122d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
123{
124 return (ASN1_BIT_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
125 &ASN1_BIT_STRING_it);
126}
127
128int
129i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out)
130{
131 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BIT_STRING_it);
132}
133
134ASN1_BIT_STRING *
135ASN1_BIT_STRING_new(void)
136{
137 return (ASN1_BIT_STRING *)ASN1_item_new(&ASN1_BIT_STRING_it);
138}
139
140void
141ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
142{
143 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
144}
73 145
74IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) 146IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING)
75IMPLEMENT_ASN1_FUNCTIONS(ASN1_OCTET_STRING) 147
148ASN1_OCTET_STRING *
149d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
150{
151 return (ASN1_OCTET_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &ASN1_OCTET_STRING_it);
153}
154
155int
156i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_OCTET_STRING_it);
159}
160
161ASN1_OCTET_STRING *
162ASN1_OCTET_STRING_new(void)
163{
164 return (ASN1_OCTET_STRING *)ASN1_item_new(&ASN1_OCTET_STRING_it);
165}
166
167void
168ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
171}
76 172
77IMPLEMENT_ASN1_TYPE(ASN1_NULL) 173IMPLEMENT_ASN1_TYPE(ASN1_NULL)
78IMPLEMENT_ASN1_FUNCTIONS(ASN1_NULL) 174
175ASN1_NULL *
176d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
177{
178 return (ASN1_NULL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
179 &ASN1_NULL_it);
180}
181
182int
183i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out)
184{
185 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_NULL_it);
186}
187
188ASN1_NULL *
189ASN1_NULL_new(void)
190{
191 return (ASN1_NULL *)ASN1_item_new(&ASN1_NULL_it);
192}
193
194void
195ASN1_NULL_free(ASN1_NULL *a)
196{
197 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
198}
79 199
80IMPLEMENT_ASN1_TYPE(ASN1_OBJECT) 200IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
81 201
82IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) 202IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING)
83IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTF8STRING) 203
204ASN1_UTF8STRING *
205d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
206{
207 return (ASN1_UTF8STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
208 &ASN1_UTF8STRING_it);
209}
210
211int
212i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out)
213{
214 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTF8STRING_it);
215}
216
217ASN1_UTF8STRING *
218ASN1_UTF8STRING_new(void)
219{
220 return (ASN1_UTF8STRING *)ASN1_item_new(&ASN1_UTF8STRING_it);
221}
222
223void
224ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
225{
226 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
227}
84 228
85IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) 229IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING)
86IMPLEMENT_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) 230
231ASN1_PRINTABLESTRING *
232d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len)
233{
234 return (ASN1_PRINTABLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
235 &ASN1_PRINTABLESTRING_it);
236}
237
238int
239i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out)
240{
241 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLESTRING_it);
242}
243
244ASN1_PRINTABLESTRING *
245ASN1_PRINTABLESTRING_new(void)
246{
247 return (ASN1_PRINTABLESTRING *)ASN1_item_new(&ASN1_PRINTABLESTRING_it);
248}
249
250void
251ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
252{
253 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
254}
87 255
88IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) 256IMPLEMENT_ASN1_TYPE(ASN1_T61STRING)
89IMPLEMENT_ASN1_FUNCTIONS(ASN1_T61STRING) 257
258ASN1_T61STRING *
259d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
260{
261 return (ASN1_T61STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
262 &ASN1_T61STRING_it);
263}
264
265int
266i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out)
267{
268 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_T61STRING_it);
269}
270
271ASN1_T61STRING *
272ASN1_T61STRING_new(void)
273{
274 return (ASN1_T61STRING *)ASN1_item_new(&ASN1_T61STRING_it);
275}
276
277void
278ASN1_T61STRING_free(ASN1_T61STRING *a)
279{
280 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
281}
90 282
91IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) 283IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING)
92IMPLEMENT_ASN1_FUNCTIONS(ASN1_IA5STRING) 284
285ASN1_IA5STRING *
286d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
287{
288 return (ASN1_IA5STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
289 &ASN1_IA5STRING_it);
290}
291
292int
293i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out)
294{
295 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_IA5STRING_it);
296}
297
298ASN1_IA5STRING *
299ASN1_IA5STRING_new(void)
300{
301 return (ASN1_IA5STRING *)ASN1_item_new(&ASN1_IA5STRING_it);
302}
303
304void
305ASN1_IA5STRING_free(ASN1_IA5STRING *a)
306{
307 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
308}
93 309
94IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) 310IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING)
95IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALSTRING) 311
312ASN1_GENERALSTRING *
313d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len)
314{
315 return (ASN1_GENERALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
316 &ASN1_GENERALSTRING_it);
317}
318
319int
320i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out)
321{
322 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALSTRING_it);
323}
324
325ASN1_GENERALSTRING *
326ASN1_GENERALSTRING_new(void)
327{
328 return (ASN1_GENERALSTRING *)ASN1_item_new(&ASN1_GENERALSTRING_it);
329}
330
331void
332ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
333{
334 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
335}
96 336
97IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) 337IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME)
98IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTCTIME) 338
339ASN1_UTCTIME *
340d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
341{
342 return (ASN1_UTCTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
343 &ASN1_UTCTIME_it);
344}
345
346int
347i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out)
348{
349 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTCTIME_it);
350}
351
352ASN1_UTCTIME *
353ASN1_UTCTIME_new(void)
354{
355 return (ASN1_UTCTIME *)ASN1_item_new(&ASN1_UTCTIME_it);
356}
357
358void
359ASN1_UTCTIME_free(ASN1_UTCTIME *a)
360{
361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
362}
99 363
100IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) 364IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME)
101IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) 365
366ASN1_GENERALIZEDTIME *
367d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len)
368{
369 return (ASN1_GENERALIZEDTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
370 &ASN1_GENERALIZEDTIME_it);
371}
372
373int
374i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out)
375{
376 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALIZEDTIME_it);
377}
378
379ASN1_GENERALIZEDTIME *
380ASN1_GENERALIZEDTIME_new(void)
381{
382 return (ASN1_GENERALIZEDTIME *)ASN1_item_new(&ASN1_GENERALIZEDTIME_it);
383}
384
385void
386ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
387{
388 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
389}
102 390
103IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) 391IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING)
104IMPLEMENT_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) 392
393ASN1_VISIBLESTRING *
394d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len)
395{
396 return (ASN1_VISIBLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
397 &ASN1_VISIBLESTRING_it);
398}
399
400int
401i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out)
402{
403 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_VISIBLESTRING_it);
404}
405
406ASN1_VISIBLESTRING *
407ASN1_VISIBLESTRING_new(void)
408{
409 return (ASN1_VISIBLESTRING *)ASN1_item_new(&ASN1_VISIBLESTRING_it);
410}
411
412void
413ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
414{
415 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
416}
105 417
106IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) 418IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING)
107IMPLEMENT_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) 419
420ASN1_UNIVERSALSTRING *
421d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len)
422{
423 return (ASN1_UNIVERSALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
424 &ASN1_UNIVERSALSTRING_it);
425}
426
427int
428i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out)
429{
430 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UNIVERSALSTRING_it);
431}
432
433ASN1_UNIVERSALSTRING *
434ASN1_UNIVERSALSTRING_new(void)
435{
436 return (ASN1_UNIVERSALSTRING *)ASN1_item_new(&ASN1_UNIVERSALSTRING_it);
437}
438
439void
440ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
441{
442 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
443}
108 444
109IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) 445IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING)
110IMPLEMENT_ASN1_FUNCTIONS(ASN1_BMPSTRING) 446
447ASN1_BMPSTRING *
448d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
449{
450 return (ASN1_BMPSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
451 &ASN1_BMPSTRING_it);
452}
453
454int
455i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out)
456{
457 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BMPSTRING_it);
458}
459
460ASN1_BMPSTRING *
461ASN1_BMPSTRING_new(void)
462{
463 return (ASN1_BMPSTRING *)ASN1_item_new(&ASN1_BMPSTRING_it);
464}
465
466void
467ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
468{
469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
470}
111 471
112IMPLEMENT_ASN1_TYPE(ASN1_ANY) 472IMPLEMENT_ASN1_TYPE(ASN1_ANY)
113 473
diff --git a/src/lib/libssl/src/crypto/asn1/x_algor.c b/src/lib/libssl/src/crypto/asn1/x_algor.c
index 71aeaaade0..7d264f9fd3 100644
--- a/src/lib/libssl/src/crypto/asn1/x_algor.c
+++ b/src/lib/libssl/src/crypto/asn1/x_algor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_algor.c,v 1.13 2015/01/28 04:14:31 beck Exp $ */ 1/* $OpenBSD: x_algor.c,v 1.14 2015/02/09 15:05:59 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 */
@@ -70,7 +70,31 @@ ASN1_ITEM_TEMPLATE(X509_ALGORS) =
70 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, algorithms, X509_ALGOR) 70 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, algorithms, X509_ALGOR)
71ASN1_ITEM_TEMPLATE_END(X509_ALGORS) 71ASN1_ITEM_TEMPLATE_END(X509_ALGORS)
72 72
73IMPLEMENT_ASN1_FUNCTIONS(X509_ALGOR) 73
74X509_ALGOR *
75d2i_X509_ALGOR(X509_ALGOR **a, const unsigned char **in, long len)
76{
77 return (X509_ALGOR *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
78 &X509_ALGOR_it);
79}
80
81int
82i2d_X509_ALGOR(X509_ALGOR *a, unsigned char **out)
83{
84 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_ALGOR_it);
85}
86
87X509_ALGOR *
88X509_ALGOR_new(void)
89{
90 return (X509_ALGOR *)ASN1_item_new(&X509_ALGOR_it);
91}
92
93void
94X509_ALGOR_free(X509_ALGOR *a)
95{
96 ASN1_item_free((ASN1_VALUE *)a, &X509_ALGOR_it);
97}
74IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_ALGORS, X509_ALGORS, X509_ALGORS) 98IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_ALGORS, X509_ALGORS, X509_ALGORS)
75IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR) 99IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR)
76 100
diff --git a/src/lib/libssl/src/crypto/asn1/x_attrib.c b/src/lib/libssl/src/crypto/asn1/x_attrib.c
index 1efbb98bbd..aafd5dd485 100644
--- a/src/lib/libssl/src/crypto/asn1/x_attrib.c
+++ b/src/lib/libssl/src/crypto/asn1/x_attrib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_attrib.c,v 1.9 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_attrib.c,v 1.10 2015/02/09 15:05:59 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 *
@@ -93,7 +93,31 @@ ASN1_SEQUENCE(X509_ATTRIBUTE) = {
93 ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET) 93 ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET)
94} ASN1_SEQUENCE_END(X509_ATTRIBUTE) 94} ASN1_SEQUENCE_END(X509_ATTRIBUTE)
95 95
96IMPLEMENT_ASN1_FUNCTIONS(X509_ATTRIBUTE) 96
97X509_ATTRIBUTE *
98d2i_X509_ATTRIBUTE(X509_ATTRIBUTE **a, const unsigned char **in, long len)
99{
100 return (X509_ATTRIBUTE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
101 &X509_ATTRIBUTE_it);
102}
103
104int
105i2d_X509_ATTRIBUTE(X509_ATTRIBUTE *a, unsigned char **out)
106{
107 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_ATTRIBUTE_it);
108}
109
110X509_ATTRIBUTE *
111X509_ATTRIBUTE_new(void)
112{
113 return (X509_ATTRIBUTE *)ASN1_item_new(&X509_ATTRIBUTE_it);
114}
115
116void
117X509_ATTRIBUTE_free(X509_ATTRIBUTE *a)
118{
119 ASN1_item_free((ASN1_VALUE *)a, &X509_ATTRIBUTE_it);
120}
97IMPLEMENT_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) 121IMPLEMENT_ASN1_DUP_FUNCTION(X509_ATTRIBUTE)
98 122
99X509_ATTRIBUTE * 123X509_ATTRIBUTE *
diff --git a/src/lib/libssl/src/crypto/asn1/x_crl.c b/src/lib/libssl/src/crypto/asn1/x_crl.c
index bdec50dc80..2539fd92c4 100644
--- a/src/lib/libssl/src/crypto/asn1/x_crl.c
+++ b/src/lib/libssl/src/crypto/asn1/x_crl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_crl.c,v 1.18 2014/07/11 13:54:41 miod Exp $ */ 1/* $OpenBSD: x_crl.c,v 1.19 2015/02/09 15:05:59 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 *
@@ -337,9 +337,81 @@ ASN1_SEQUENCE_ref(X509_CRL, crl_cb, CRYPTO_LOCK_X509_CRL) = {
337 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING) 337 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING)
338} ASN1_SEQUENCE_END_ref(X509_CRL, X509_CRL) 338} ASN1_SEQUENCE_END_ref(X509_CRL, X509_CRL)
339 339
340IMPLEMENT_ASN1_FUNCTIONS(X509_REVOKED) 340
341IMPLEMENT_ASN1_FUNCTIONS(X509_CRL_INFO) 341X509_REVOKED *
342IMPLEMENT_ASN1_FUNCTIONS(X509_CRL) 342d2i_X509_REVOKED(X509_REVOKED **a, const unsigned char **in, long len)
343{
344 return (X509_REVOKED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
345 &X509_REVOKED_it);
346}
347
348int
349i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **out)
350{
351 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REVOKED_it);
352}
353
354X509_REVOKED *
355X509_REVOKED_new(void)
356{
357 return (X509_REVOKED *)ASN1_item_new(&X509_REVOKED_it);
358}
359
360void
361X509_REVOKED_free(X509_REVOKED *a)
362{
363 ASN1_item_free((ASN1_VALUE *)a, &X509_REVOKED_it);
364}
365
366X509_CRL_INFO *
367d2i_X509_CRL_INFO(X509_CRL_INFO **a, const unsigned char **in, long len)
368{
369 return (X509_CRL_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
370 &X509_CRL_INFO_it);
371}
372
373int
374i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **out)
375{
376 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CRL_INFO_it);
377}
378
379X509_CRL_INFO *
380X509_CRL_INFO_new(void)
381{
382 return (X509_CRL_INFO *)ASN1_item_new(&X509_CRL_INFO_it);
383}
384
385void
386X509_CRL_INFO_free(X509_CRL_INFO *a)
387{
388 ASN1_item_free((ASN1_VALUE *)a, &X509_CRL_INFO_it);
389}
390
391X509_CRL *
392d2i_X509_CRL(X509_CRL **a, const unsigned char **in, long len)
393{
394 return (X509_CRL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
395 &X509_CRL_it);
396}
397
398int
399i2d_X509_CRL(X509_CRL *a, unsigned char **out)
400{
401 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CRL_it);
402}
403
404X509_CRL *
405X509_CRL_new(void)
406{
407 return (X509_CRL *)ASN1_item_new(&X509_CRL_it);
408}
409
410void
411X509_CRL_free(X509_CRL *a)
412{
413 ASN1_item_free((ASN1_VALUE *)a, &X509_CRL_it);
414}
343IMPLEMENT_ASN1_DUP_FUNCTION(X509_CRL) 415IMPLEMENT_ASN1_DUP_FUNCTION(X509_CRL)
344 416
345static int 417static int
diff --git a/src/lib/libssl/src/crypto/asn1/x_exten.c b/src/lib/libssl/src/crypto/asn1/x_exten.c
index a3fa88498b..40c521ec80 100644
--- a/src/lib/libssl/src/crypto/asn1/x_exten.c
+++ b/src/lib/libssl/src/crypto/asn1/x_exten.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_exten.c,v 1.9 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: x_exten.c,v 1.10 2015/02/09 15:05:59 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 */
@@ -71,6 +71,30 @@ ASN1_ITEM_TEMPLATE(X509_EXTENSIONS) =
71 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, Extension, X509_EXTENSION) 71 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, Extension, X509_EXTENSION)
72ASN1_ITEM_TEMPLATE_END(X509_EXTENSIONS) 72ASN1_ITEM_TEMPLATE_END(X509_EXTENSIONS)
73 73
74IMPLEMENT_ASN1_FUNCTIONS(X509_EXTENSION) 74
75X509_EXTENSION *
76d2i_X509_EXTENSION(X509_EXTENSION **a, const unsigned char **in, long len)
77{
78 return (X509_EXTENSION *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
79 &X509_EXTENSION_it);
80}
81
82int
83i2d_X509_EXTENSION(X509_EXTENSION *a, unsigned char **out)
84{
85 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_EXTENSION_it);
86}
87
88X509_EXTENSION *
89X509_EXTENSION_new(void)
90{
91 return (X509_EXTENSION *)ASN1_item_new(&X509_EXTENSION_it);
92}
93
94void
95X509_EXTENSION_free(X509_EXTENSION *a)
96{
97 ASN1_item_free((ASN1_VALUE *)a, &X509_EXTENSION_it);
98}
75IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) 99IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS)
76IMPLEMENT_ASN1_DUP_FUNCTION(X509_EXTENSION) 100IMPLEMENT_ASN1_DUP_FUNCTION(X509_EXTENSION)
diff --git a/src/lib/libssl/src/crypto/asn1/x_name.c b/src/lib/libssl/src/crypto/asn1/x_name.c
index 7c77ceea3b..a7f0e14d13 100644
--- a/src/lib/libssl/src/crypto/asn1/x_name.c
+++ b/src/lib/libssl/src/crypto/asn1/x_name.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_name.c,v 1.20 2014/07/12 11:25:25 miod Exp $ */ 1/* $OpenBSD: x_name.c,v 1.21 2015/02/09 15:05:59 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 *
@@ -92,7 +92,31 @@ ASN1_SEQUENCE(X509_NAME_ENTRY) = {
92 ASN1_SIMPLE(X509_NAME_ENTRY, value, ASN1_PRINTABLE) 92 ASN1_SIMPLE(X509_NAME_ENTRY, value, ASN1_PRINTABLE)
93} ASN1_SEQUENCE_END(X509_NAME_ENTRY) 93} ASN1_SEQUENCE_END(X509_NAME_ENTRY)
94 94
95IMPLEMENT_ASN1_FUNCTIONS(X509_NAME_ENTRY) 95
96X509_NAME_ENTRY *
97d2i_X509_NAME_ENTRY(X509_NAME_ENTRY **a, const unsigned char **in, long len)
98{
99 return (X509_NAME_ENTRY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
100 &X509_NAME_ENTRY_it);
101}
102
103int
104i2d_X509_NAME_ENTRY(X509_NAME_ENTRY *a, unsigned char **out)
105{
106 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_NAME_ENTRY_it);
107}
108
109X509_NAME_ENTRY *
110X509_NAME_ENTRY_new(void)
111{
112 return (X509_NAME_ENTRY *)ASN1_item_new(&X509_NAME_ENTRY_it);
113}
114
115void
116X509_NAME_ENTRY_free(X509_NAME_ENTRY *a)
117{
118 ASN1_item_free((ASN1_VALUE *)a, &X509_NAME_ENTRY_it);
119}
96IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) 120IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME_ENTRY)
97 121
98/* For the "Name" type we need a SEQUENCE OF { SET OF X509_NAME_ENTRY } 122/* For the "Name" type we need a SEQUENCE OF { SET OF X509_NAME_ENTRY }
@@ -125,7 +149,31 @@ const ASN1_EXTERN_FUNCS x509_name_ff = {
125 149
126IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff) 150IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff)
127 151
128IMPLEMENT_ASN1_FUNCTIONS(X509_NAME) 152
153X509_NAME *
154d2i_X509_NAME(X509_NAME **a, const unsigned char **in, long len)
155{
156 return (X509_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
157 &X509_NAME_it);
158}
159
160int
161i2d_X509_NAME(X509_NAME *a, unsigned char **out)
162{
163 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_NAME_it);
164}
165
166X509_NAME *
167X509_NAME_new(void)
168{
169 return (X509_NAME *)ASN1_item_new(&X509_NAME_it);
170}
171
172void
173X509_NAME_free(X509_NAME *a)
174{
175 ASN1_item_free((ASN1_VALUE *)a, &X509_NAME_it);
176}
129IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME) 177IMPLEMENT_ASN1_DUP_FUNCTION(X509_NAME)
130 178
131static int 179static int
diff --git a/src/lib/libssl/src/crypto/asn1/x_nx509.c b/src/lib/libssl/src/crypto/asn1/x_nx509.c
index eebeb9206f..9738560c19 100644
--- a/src/lib/libssl/src/crypto/asn1/x_nx509.c
+++ b/src/lib/libssl/src/crypto/asn1/x_nx509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_nx509.c,v 1.3 2014/06/12 15:49:27 deraadt Exp $ */ 1/* $OpenBSD: x_nx509.c,v 1.4 2015/02/09 15:05:59 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 2005. 3 * project 2005.
4 */ 4 */
@@ -68,4 +68,28 @@ ASN1_SEQUENCE(NETSCAPE_X509) = {
68 ASN1_OPT(NETSCAPE_X509, cert, X509) 68 ASN1_OPT(NETSCAPE_X509, cert, X509)
69} ASN1_SEQUENCE_END(NETSCAPE_X509) 69} ASN1_SEQUENCE_END(NETSCAPE_X509)
70 70
71IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_X509) 71
72NETSCAPE_X509 *
73d2i_NETSCAPE_X509(NETSCAPE_X509 **a, const unsigned char **in, long len)
74{
75 return (NETSCAPE_X509 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
76 &NETSCAPE_X509_it);
77}
78
79int
80i2d_NETSCAPE_X509(NETSCAPE_X509 *a, unsigned char **out)
81{
82 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_X509_it);
83}
84
85NETSCAPE_X509 *
86NETSCAPE_X509_new(void)
87{
88 return (NETSCAPE_X509 *)ASN1_item_new(&NETSCAPE_X509_it);
89}
90
91void
92NETSCAPE_X509_free(NETSCAPE_X509 *a)
93{
94 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_X509_it);
95}
diff --git a/src/lib/libssl/src/crypto/asn1/x_pubkey.c b/src/lib/libssl/src/crypto/asn1/x_pubkey.c
index 56cc63059a..0c7d01e60d 100644
--- a/src/lib/libssl/src/crypto/asn1/x_pubkey.c
+++ b/src/lib/libssl/src/crypto/asn1/x_pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_pubkey.c,v 1.22 2014/07/12 16:03:36 miod Exp $ */ 1/* $OpenBSD: x_pubkey.c,v 1.23 2015/02/09 15:05:59 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 *
@@ -89,7 +89,31 @@ ASN1_SEQUENCE_cb(X509_PUBKEY, pubkey_cb) = {
89 ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING) 89 ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING)
90} ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY) 90} ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY)
91 91
92IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY) 92
93X509_PUBKEY *
94d2i_X509_PUBKEY(X509_PUBKEY **a, const unsigned char **in, long len)
95{
96 return (X509_PUBKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
97 &X509_PUBKEY_it);
98}
99
100int
101i2d_X509_PUBKEY(X509_PUBKEY *a, unsigned char **out)
102{
103 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_PUBKEY_it);
104}
105
106X509_PUBKEY *
107X509_PUBKEY_new(void)
108{
109 return (X509_PUBKEY *)ASN1_item_new(&X509_PUBKEY_it);
110}
111
112void
113X509_PUBKEY_free(X509_PUBKEY *a)
114{
115 ASN1_item_free((ASN1_VALUE *)a, &X509_PUBKEY_it);
116}
93 117
94int 118int
95X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) 119X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
diff --git a/src/lib/libssl/src/crypto/asn1/x_req.c b/src/lib/libssl/src/crypto/asn1/x_req.c
index c876edd7f0..89b2d88d15 100644
--- a/src/lib/libssl/src/crypto/asn1/x_req.c
+++ b/src/lib/libssl/src/crypto/asn1/x_req.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_req.c,v 1.10 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_req.c,v 1.11 2015/02/09 15:05:59 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 *
@@ -102,7 +102,31 @@ ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = {
102 ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0) 102 ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0)
103} ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO) 103} ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO)
104 104
105IMPLEMENT_ASN1_FUNCTIONS(X509_REQ_INFO) 105
106X509_REQ_INFO *
107d2i_X509_REQ_INFO(X509_REQ_INFO **a, const unsigned char **in, long len)
108{
109 return (X509_REQ_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
110 &X509_REQ_INFO_it);
111}
112
113int
114i2d_X509_REQ_INFO(X509_REQ_INFO *a, unsigned char **out)
115{
116 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REQ_INFO_it);
117}
118
119X509_REQ_INFO *
120X509_REQ_INFO_new(void)
121{
122 return (X509_REQ_INFO *)ASN1_item_new(&X509_REQ_INFO_it);
123}
124
125void
126X509_REQ_INFO_free(X509_REQ_INFO *a)
127{
128 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_INFO_it);
129}
106 130
107ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = { 131ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = {
108 ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO), 132 ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO),
@@ -110,5 +134,29 @@ ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = {
110 ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING) 134 ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING)
111} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ) 135} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ)
112 136
113IMPLEMENT_ASN1_FUNCTIONS(X509_REQ) 137
138X509_REQ *
139d2i_X509_REQ(X509_REQ **a, const unsigned char **in, long len)
140{
141 return (X509_REQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
142 &X509_REQ_it);
143}
144
145int
146i2d_X509_REQ(X509_REQ *a, unsigned char **out)
147{
148 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_REQ_it);
149}
150
151X509_REQ *
152X509_REQ_new(void)
153{
154 return (X509_REQ *)ASN1_item_new(&X509_REQ_it);
155}
156
157void
158X509_REQ_free(X509_REQ *a)
159{
160 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_it);
161}
114IMPLEMENT_ASN1_DUP_FUNCTION(X509_REQ) 162IMPLEMENT_ASN1_DUP_FUNCTION(X509_REQ)
diff --git a/src/lib/libssl/src/crypto/asn1/x_sig.c b/src/lib/libssl/src/crypto/asn1/x_sig.c
index ab4546e3ca..7c4c8c9c55 100644
--- a/src/lib/libssl/src/crypto/asn1/x_sig.c
+++ b/src/lib/libssl/src/crypto/asn1/x_sig.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_sig.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_sig.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -66,4 +66,28 @@ ASN1_SEQUENCE(X509_SIG) = {
66 ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING) 66 ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING)
67} ASN1_SEQUENCE_END(X509_SIG) 67} ASN1_SEQUENCE_END(X509_SIG)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(X509_SIG) 69
70X509_SIG *
71d2i_X509_SIG(X509_SIG **a, const unsigned char **in, long len)
72{
73 return (X509_SIG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &X509_SIG_it);
75}
76
77int
78i2d_X509_SIG(X509_SIG *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_SIG_it);
81}
82
83X509_SIG *
84X509_SIG_new(void)
85{
86 return (X509_SIG *)ASN1_item_new(&X509_SIG_it);
87}
88
89void
90X509_SIG_free(X509_SIG *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &X509_SIG_it);
93}
diff --git a/src/lib/libssl/src/crypto/asn1/x_spki.c b/src/lib/libssl/src/crypto/asn1/x_spki.c
index 836abb13d8..fc056ff53b 100644
--- a/src/lib/libssl/src/crypto/asn1/x_spki.c
+++ b/src/lib/libssl/src/crypto/asn1/x_spki.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_spki.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_spki.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -70,7 +70,31 @@ ASN1_SEQUENCE(NETSCAPE_SPKAC) = {
70 ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING) 70 ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING)
71} ASN1_SEQUENCE_END(NETSCAPE_SPKAC) 71} ASN1_SEQUENCE_END(NETSCAPE_SPKAC)
72 72
73IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKAC) 73
74NETSCAPE_SPKAC *
75d2i_NETSCAPE_SPKAC(NETSCAPE_SPKAC **a, const unsigned char **in, long len)
76{
77 return (NETSCAPE_SPKAC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
78 &NETSCAPE_SPKAC_it);
79}
80
81int
82i2d_NETSCAPE_SPKAC(NETSCAPE_SPKAC *a, unsigned char **out)
83{
84 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_SPKAC_it);
85}
86
87NETSCAPE_SPKAC *
88NETSCAPE_SPKAC_new(void)
89{
90 return (NETSCAPE_SPKAC *)ASN1_item_new(&NETSCAPE_SPKAC_it);
91}
92
93void
94NETSCAPE_SPKAC_free(NETSCAPE_SPKAC *a)
95{
96 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_SPKAC_it);
97}
74 98
75ASN1_SEQUENCE(NETSCAPE_SPKI) = { 99ASN1_SEQUENCE(NETSCAPE_SPKI) = {
76 ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC), 100 ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC),
@@ -78,4 +102,28 @@ ASN1_SEQUENCE(NETSCAPE_SPKI) = {
78 ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING) 102 ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING)
79} ASN1_SEQUENCE_END(NETSCAPE_SPKI) 103} ASN1_SEQUENCE_END(NETSCAPE_SPKI)
80 104
81IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKI) 105
106NETSCAPE_SPKI *
107d2i_NETSCAPE_SPKI(NETSCAPE_SPKI **a, const unsigned char **in, long len)
108{
109 return (NETSCAPE_SPKI *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
110 &NETSCAPE_SPKI_it);
111}
112
113int
114i2d_NETSCAPE_SPKI(NETSCAPE_SPKI *a, unsigned char **out)
115{
116 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NETSCAPE_SPKI_it);
117}
118
119NETSCAPE_SPKI *
120NETSCAPE_SPKI_new(void)
121{
122 return (NETSCAPE_SPKI *)ASN1_item_new(&NETSCAPE_SPKI_it);
123}
124
125void
126NETSCAPE_SPKI_free(NETSCAPE_SPKI *a)
127{
128 ASN1_item_free((ASN1_VALUE *)a, &NETSCAPE_SPKI_it);
129}
diff --git a/src/lib/libssl/src/crypto/asn1/x_val.c b/src/lib/libssl/src/crypto/asn1/x_val.c
index da9d16346b..27835e94da 100644
--- a/src/lib/libssl/src/crypto/asn1/x_val.c
+++ b/src/lib/libssl/src/crypto/asn1/x_val.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_val.c,v 1.8 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_val.c,v 1.9 2015/02/09 15:05:59 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 *
@@ -66,4 +66,28 @@ ASN1_SEQUENCE(X509_VAL) = {
66 ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME) 66 ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME)
67} ASN1_SEQUENCE_END(X509_VAL) 67} ASN1_SEQUENCE_END(X509_VAL)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(X509_VAL) 69
70X509_VAL *
71d2i_X509_VAL(X509_VAL **a, const unsigned char **in, long len)
72{
73 return (X509_VAL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &X509_VAL_it);
75}
76
77int
78i2d_X509_VAL(X509_VAL *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_VAL_it);
81}
82
83X509_VAL *
84X509_VAL_new(void)
85{
86 return (X509_VAL *)ASN1_item_new(&X509_VAL_it);
87}
88
89void
90X509_VAL_free(X509_VAL *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &X509_VAL_it);
93}
diff --git a/src/lib/libssl/src/crypto/asn1/x_x509.c b/src/lib/libssl/src/crypto/asn1/x_x509.c
index 0236a0faa2..8fd2d7684b 100644
--- a/src/lib/libssl/src/crypto/asn1/x_x509.c
+++ b/src/lib/libssl/src/crypto/asn1/x_x509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509.c,v 1.17 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_x509.c,v 1.18 2015/02/09 15:05:59 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 *
@@ -78,7 +78,31 @@ ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = {
78 ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3) 78 ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3)
79} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF) 79} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF)
80 80
81IMPLEMENT_ASN1_FUNCTIONS(X509_CINF) 81
82X509_CINF *
83d2i_X509_CINF(X509_CINF **a, const unsigned char **in, long len)
84{
85 return (X509_CINF *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
86 &X509_CINF_it);
87}
88
89int
90i2d_X509_CINF(X509_CINF *a, unsigned char **out)
91{
92 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CINF_it);
93}
94
95X509_CINF *
96X509_CINF_new(void)
97{
98 return (X509_CINF *)ASN1_item_new(&X509_CINF_it);
99}
100
101void
102X509_CINF_free(X509_CINF *a)
103{
104 ASN1_item_free((ASN1_VALUE *)a, &X509_CINF_it);
105}
82/* X509 top level structure needs a bit of customisation */ 106/* X509 top level structure needs a bit of customisation */
83 107
84extern void policy_cache_free(X509_POLICY_CACHE *cache); 108extern void policy_cache_free(X509_POLICY_CACHE *cache);
@@ -138,7 +162,31 @@ ASN1_SEQUENCE_ref(X509, x509_cb, CRYPTO_LOCK_X509) = {
138 ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING) 162 ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING)
139} ASN1_SEQUENCE_END_ref(X509, X509) 163} ASN1_SEQUENCE_END_ref(X509, X509)
140 164
141IMPLEMENT_ASN1_FUNCTIONS(X509) 165
166X509 *
167d2i_X509(X509 **a, const unsigned char **in, long len)
168{
169 return (X509 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
170 &X509_it);
171}
172
173int
174i2d_X509(X509 *a, unsigned char **out)
175{
176 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_it);
177}
178
179X509 *
180X509_new(void)
181{
182 return (X509 *)ASN1_item_new(&X509_it);
183}
184
185void
186X509_free(X509 *a)
187{
188 ASN1_item_free((ASN1_VALUE *)a, &X509_it);
189}
142IMPLEMENT_ASN1_DUP_FUNCTION(X509) 190IMPLEMENT_ASN1_DUP_FUNCTION(X509)
143 191
144int 192int
diff --git a/src/lib/libssl/src/crypto/asn1/x_x509a.c b/src/lib/libssl/src/crypto/asn1/x_x509a.c
index c6837069d9..8a3561e882 100644
--- a/src/lib/libssl/src/crypto/asn1/x_x509a.c
+++ b/src/lib/libssl/src/crypto/asn1/x_x509a.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509a.c,v 1.10 2014/07/11 08:44:47 jsing Exp $ */ 1/* $OpenBSD: x_x509a.c,v 1.11 2015/02/09 15:05:59 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 1999. 3 * project 1999.
4 */ 4 */
@@ -79,7 +79,31 @@ ASN1_SEQUENCE(X509_CERT_AUX) = {
79 ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, other, X509_ALGOR, 1) 79 ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, other, X509_ALGOR, 1)
80} ASN1_SEQUENCE_END(X509_CERT_AUX) 80} ASN1_SEQUENCE_END(X509_CERT_AUX)
81 81
82IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_AUX) 82
83X509_CERT_AUX *
84d2i_X509_CERT_AUX(X509_CERT_AUX **a, const unsigned char **in, long len)
85{
86 return (X509_CERT_AUX *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
87 &X509_CERT_AUX_it);
88}
89
90int
91i2d_X509_CERT_AUX(X509_CERT_AUX *a, unsigned char **out)
92{
93 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CERT_AUX_it);
94}
95
96X509_CERT_AUX *
97X509_CERT_AUX_new(void)
98{
99 return (X509_CERT_AUX *)ASN1_item_new(&X509_CERT_AUX_it);
100}
101
102void
103X509_CERT_AUX_free(X509_CERT_AUX *a)
104{
105 ASN1_item_free((ASN1_VALUE *)a, &X509_CERT_AUX_it);
106}
83 107
84static X509_CERT_AUX * 108static X509_CERT_AUX *
85aux_get(X509 *x) 109aux_get(X509 *x)
@@ -198,4 +222,28 @@ ASN1_SEQUENCE(X509_CERT_PAIR) = {
198 ASN1_EXP_OPT(X509_CERT_PAIR, reverse, X509, 1) 222 ASN1_EXP_OPT(X509_CERT_PAIR, reverse, X509, 1)
199} ASN1_SEQUENCE_END(X509_CERT_PAIR) 223} ASN1_SEQUENCE_END(X509_CERT_PAIR)
200 224
201IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_PAIR) 225
226X509_CERT_PAIR *
227d2i_X509_CERT_PAIR(X509_CERT_PAIR **a, const unsigned char **in, long len)
228{
229 return (X509_CERT_PAIR *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
230 &X509_CERT_PAIR_it);
231}
232
233int
234i2d_X509_CERT_PAIR(X509_CERT_PAIR *a, unsigned char **out)
235{
236 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_CERT_PAIR_it);
237}
238
239X509_CERT_PAIR *
240X509_CERT_PAIR_new(void)
241{
242 return (X509_CERT_PAIR *)ASN1_item_new(&X509_CERT_PAIR_it);
243}
244
245void
246X509_CERT_PAIR_free(X509_CERT_PAIR *a)
247{
248 ASN1_item_free((ASN1_VALUE *)a, &X509_CERT_PAIR_it);
249}