summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2015-02-09 16:04:46 +0000
committerjsing <>2015-02-09 16:04:46 +0000
commitef9e1f7eec0659c49a61db86c7a58ea19e13d6b1 (patch)
tree2a76c2380407aba5449ce959cc484da5f0ae67ea /src
parentc67b08b466720c73bce5f5a0ee6d8ccf43683ae6 (diff)
downloadopenbsd-ef9e1f7eec0659c49a61db86c7a58ea19e13d6b1.tar.gz
openbsd-ef9e1f7eec0659c49a61db86c7a58ea19e13d6b1.tar.bz2
openbsd-ef9e1f7eec0659c49a61db86c7a58ea19e13d6b1.zip
Expand the IMPLEMENT_ASN1_FUNCTIONS macro so that the code is visible and
functions can be readily located. Change has been scripted and there is no change to the generated assembly. Discussed with beck@ miod@ tedu@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/gost/gost_asn1.c130
-rw-r--r--src/lib/libcrypto/krb5/krb5_asn.c288
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_asn.c392
-rw-r--r--src/lib/libcrypto/pkcs12/p12_asn.c106
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_asn1.c262
-rw-r--r--src/lib/libcrypto/rsa/rsa_asn1.c28
-rw-r--r--src/lib/libssl/src/crypto/gost/gost_asn1.c130
-rw-r--r--src/lib/libssl/src/crypto/krb5/krb5_asn.c288
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_asn.c392
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_asn.c106
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c262
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_asn1.c28
12 files changed, 2310 insertions, 102 deletions
diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c
index b8ed244e49..5d7fb51177 100644
--- a/src/lib/libcrypto/gost/gost_asn1.c
+++ b/src/lib/libcrypto/gost/gost_asn1.c
@@ -21,20 +21,92 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = {
21 ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), 21 ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO),
22 ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) 22 ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0)
23} ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) 23} ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT)
24IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT) 24
25GOST_KEY_TRANSPORT *
26d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len)
27{
28 return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
29 &GOST_KEY_TRANSPORT_it);
30}
31
32int
33i2d_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT *a, unsigned char **out)
34{
35 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it);
36}
37
38GOST_KEY_TRANSPORT *
39GOST_KEY_TRANSPORT_new(void)
40{
41 return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it);
42}
43
44void
45GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a)
46{
47 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it);
48}
25 49
26ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { 50ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = {
27 ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), 51 ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING),
28 ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) 52 ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING)
29} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) 53} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO)
30IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO) 54
55GOST_KEY_INFO *
56d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len)
57{
58 return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
59 &GOST_KEY_INFO_it);
60}
61
62int
63i2d_GOST_KEY_INFO(GOST_KEY_INFO *a, unsigned char **out)
64{
65 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it);
66}
67
68GOST_KEY_INFO *
69GOST_KEY_INFO_new(void)
70{
71 return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it);
72}
73
74void
75GOST_KEY_INFO_free(GOST_KEY_INFO *a)
76{
77 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it);
78}
31 79
32ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { 80ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = {
33 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), 81 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT),
34 ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), 82 ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0),
35 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) 83 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING)
36} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) 84} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO)
37IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO) 85
86GOST_KEY_AGREEMENT_INFO *
87d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len)
88{
89 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
90 &GOST_KEY_AGREEMENT_INFO_it);
91}
92
93int
94i2d_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO *a, unsigned char **out)
95{
96 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_AGREEMENT_INFO_it);
97}
98
99GOST_KEY_AGREEMENT_INFO *
100GOST_KEY_AGREEMENT_INFO_new(void)
101{
102 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it);
103}
104
105void
106GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a)
107{
108 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_AGREEMENT_INFO_it);
109}
38 110
39 111
40ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { 112ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = {
@@ -42,12 +114,60 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = {
42 ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), 114 ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT),
43 ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), 115 ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT),
44} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) 116} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS)
45IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS) 117
118GOST_KEY_PARAMS *
119d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len)
120{
121 return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
122 &GOST_KEY_PARAMS_it);
123}
124
125int
126i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out)
127{
128 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it);
129}
130
131GOST_KEY_PARAMS *
132GOST_KEY_PARAMS_new(void)
133{
134 return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it);
135}
136
137void
138GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a)
139{
140 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it);
141}
46 142
47ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { 143ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = {
48 ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), 144 ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING),
49 ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), 145 ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT),
50} ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) 146} ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS)
51IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) 147
148GOST_CIPHER_PARAMS *
149d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len)
150{
151 return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &GOST_CIPHER_PARAMS_it);
153}
154
155int
156i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it);
159}
160
161GOST_CIPHER_PARAMS *
162GOST_CIPHER_PARAMS_new(void)
163{
164 return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it);
165}
166
167void
168GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it);
171}
52 172
53#endif 173#endif
diff --git a/src/lib/libcrypto/krb5/krb5_asn.c b/src/lib/libcrypto/krb5/krb5_asn.c
index bcef47a7bd..1a95e62935 100644
--- a/src/lib/libcrypto/krb5/krb5_asn.c
+++ b/src/lib/libcrypto/krb5/krb5_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: krb5_asn.c,v 1.2 2014/06/12 15:49:29 deraadt Exp $ */ 1/* $OpenBSD: krb5_asn.c,v 1.3 2015/02/09 16:04:46 jsing Exp $ */
2/* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, 2/* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project,
3** using ocsp/{*.h,*asn*.c} as a starting point 3** using ocsp/{*.h,*asn*.c} as a starting point
4*/ 4*/
@@ -66,7 +66,31 @@ ASN1_SEQUENCE(KRB5_ENCDATA) = {
66 ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2) 66 ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2)
67} ASN1_SEQUENCE_END(KRB5_ENCDATA) 67} ASN1_SEQUENCE_END(KRB5_ENCDATA)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(KRB5_ENCDATA) 69
70KRB5_ENCDATA *
71d2i_KRB5_ENCDATA(KRB5_ENCDATA **a, const unsigned char **in, long len)
72{
73 return (KRB5_ENCDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &KRB5_ENCDATA_it);
75}
76
77int
78i2d_KRB5_ENCDATA(KRB5_ENCDATA *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_ENCDATA_it);
81}
82
83KRB5_ENCDATA *
84KRB5_ENCDATA_new(void)
85{
86 return (KRB5_ENCDATA *)ASN1_item_new(&KRB5_ENCDATA_it);
87}
88
89void
90KRB5_ENCDATA_free(KRB5_ENCDATA *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &KRB5_ENCDATA_it);
93}
70 94
71 95
72ASN1_SEQUENCE(KRB5_PRINCNAME) = { 96ASN1_SEQUENCE(KRB5_PRINCNAME) = {
@@ -74,7 +98,31 @@ ASN1_SEQUENCE(KRB5_PRINCNAME) = {
74 ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1) 98 ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1)
75} ASN1_SEQUENCE_END(KRB5_PRINCNAME) 99} ASN1_SEQUENCE_END(KRB5_PRINCNAME)
76 100
77IMPLEMENT_ASN1_FUNCTIONS(KRB5_PRINCNAME) 101
102KRB5_PRINCNAME *
103d2i_KRB5_PRINCNAME(KRB5_PRINCNAME **a, const unsigned char **in, long len)
104{
105 return (KRB5_PRINCNAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
106 &KRB5_PRINCNAME_it);
107}
108
109int
110i2d_KRB5_PRINCNAME(KRB5_PRINCNAME *a, unsigned char **out)
111{
112 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_PRINCNAME_it);
113}
114
115KRB5_PRINCNAME *
116KRB5_PRINCNAME_new(void)
117{
118 return (KRB5_PRINCNAME *)ASN1_item_new(&KRB5_PRINCNAME_it);
119}
120
121void
122KRB5_PRINCNAME_free(KRB5_PRINCNAME *a)
123{
124 ASN1_item_free((ASN1_VALUE *)a, &KRB5_PRINCNAME_it);
125}
78 126
79 127
80/* [APPLICATION 1] = 0x61 */ 128/* [APPLICATION 1] = 0x61 */
@@ -85,7 +133,31 @@ ASN1_SEQUENCE(KRB5_TKTBODY) = {
85 ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3) 133 ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3)
86} ASN1_SEQUENCE_END(KRB5_TKTBODY) 134} ASN1_SEQUENCE_END(KRB5_TKTBODY)
87 135
88IMPLEMENT_ASN1_FUNCTIONS(KRB5_TKTBODY) 136
137KRB5_TKTBODY *
138d2i_KRB5_TKTBODY(KRB5_TKTBODY **a, const unsigned char **in, long len)
139{
140 return (KRB5_TKTBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
141 &KRB5_TKTBODY_it);
142}
143
144int
145i2d_KRB5_TKTBODY(KRB5_TKTBODY *a, unsigned char **out)
146{
147 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_TKTBODY_it);
148}
149
150KRB5_TKTBODY *
151KRB5_TKTBODY_new(void)
152{
153 return (KRB5_TKTBODY *)ASN1_item_new(&KRB5_TKTBODY_it);
154}
155
156void
157KRB5_TKTBODY_free(KRB5_TKTBODY *a)
158{
159 ASN1_item_free((ASN1_VALUE *)a, &KRB5_TKTBODY_it);
160}
89 161
90 162
91ASN1_ITEM_TEMPLATE(KRB5_TICKET) = 163ASN1_ITEM_TEMPLATE(KRB5_TICKET) =
@@ -93,7 +165,31 @@ ASN1_ITEM_TEMPLATE(KRB5_TICKET) =
93 KRB5_TICKET, KRB5_TKTBODY) 165 KRB5_TICKET, KRB5_TKTBODY)
94ASN1_ITEM_TEMPLATE_END(KRB5_TICKET) 166ASN1_ITEM_TEMPLATE_END(KRB5_TICKET)
95 167
96IMPLEMENT_ASN1_FUNCTIONS(KRB5_TICKET) 168
169KRB5_TICKET *
170d2i_KRB5_TICKET(KRB5_TICKET **a, const unsigned char **in, long len)
171{
172 return (KRB5_TICKET *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
173 &KRB5_TICKET_it);
174}
175
176int
177i2d_KRB5_TICKET(KRB5_TICKET *a, unsigned char **out)
178{
179 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_TICKET_it);
180}
181
182KRB5_TICKET *
183KRB5_TICKET_new(void)
184{
185 return (KRB5_TICKET *)ASN1_item_new(&KRB5_TICKET_it);
186}
187
188void
189KRB5_TICKET_free(KRB5_TICKET *a)
190{
191 ASN1_item_free((ASN1_VALUE *)a, &KRB5_TICKET_it);
192}
97 193
98 194
99/* [APPLICATION 14] = 0x6e */ 195/* [APPLICATION 14] = 0x6e */
@@ -105,14 +201,62 @@ ASN1_SEQUENCE(KRB5_APREQBODY) = {
105 ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4), 201 ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4),
106} ASN1_SEQUENCE_END(KRB5_APREQBODY) 202} ASN1_SEQUENCE_END(KRB5_APREQBODY)
107 203
108IMPLEMENT_ASN1_FUNCTIONS(KRB5_APREQBODY) 204
205KRB5_APREQBODY *
206d2i_KRB5_APREQBODY(KRB5_APREQBODY **a, const unsigned char **in, long len)
207{
208 return (KRB5_APREQBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
209 &KRB5_APREQBODY_it);
210}
211
212int
213i2d_KRB5_APREQBODY(KRB5_APREQBODY *a, unsigned char **out)
214{
215 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_APREQBODY_it);
216}
217
218KRB5_APREQBODY *
219KRB5_APREQBODY_new(void)
220{
221 return (KRB5_APREQBODY *)ASN1_item_new(&KRB5_APREQBODY_it);
222}
223
224void
225KRB5_APREQBODY_free(KRB5_APREQBODY *a)
226{
227 ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it);
228}
109 229
110ASN1_ITEM_TEMPLATE(KRB5_APREQ) = 230ASN1_ITEM_TEMPLATE(KRB5_APREQ) =
111 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14, 231 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14,
112 KRB5_APREQ, KRB5_APREQBODY) 232 KRB5_APREQ, KRB5_APREQBODY)
113ASN1_ITEM_TEMPLATE_END(KRB5_APREQ) 233ASN1_ITEM_TEMPLATE_END(KRB5_APREQ)
114 234
115IMPLEMENT_ASN1_FUNCTIONS(KRB5_APREQ) 235
236KRB5_APREQ *
237d2i_KRB5_APREQ(KRB5_APREQ **a, const unsigned char **in, long len)
238{
239 return (KRB5_APREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
240 &KRB5_APREQ_it);
241}
242
243int
244i2d_KRB5_APREQ(KRB5_APREQ *a, unsigned char **out)
245{
246 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_APREQ_it);
247}
248
249KRB5_APREQ *
250KRB5_APREQ_new(void)
251{
252 return (KRB5_APREQ *)ASN1_item_new(&KRB5_APREQ_it);
253}
254
255void
256KRB5_APREQ_free(KRB5_APREQ *a)
257{
258 ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQ_it);
259}
116 260
117 261
118/* Authenticator stuff */ 262/* Authenticator stuff */
@@ -122,7 +266,31 @@ ASN1_SEQUENCE(KRB5_CHECKSUM) = {
122 ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1) 266 ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1)
123} ASN1_SEQUENCE_END(KRB5_CHECKSUM) 267} ASN1_SEQUENCE_END(KRB5_CHECKSUM)
124 268
125IMPLEMENT_ASN1_FUNCTIONS(KRB5_CHECKSUM) 269
270KRB5_CHECKSUM *
271d2i_KRB5_CHECKSUM(KRB5_CHECKSUM **a, const unsigned char **in, long len)
272{
273 return (KRB5_CHECKSUM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
274 &KRB5_CHECKSUM_it);
275}
276
277int
278i2d_KRB5_CHECKSUM(KRB5_CHECKSUM *a, unsigned char **out)
279{
280 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_CHECKSUM_it);
281}
282
283KRB5_CHECKSUM *
284KRB5_CHECKSUM_new(void)
285{
286 return (KRB5_CHECKSUM *)ASN1_item_new(&KRB5_CHECKSUM_it);
287}
288
289void
290KRB5_CHECKSUM_free(KRB5_CHECKSUM *a)
291{
292 ASN1_item_free((ASN1_VALUE *)a, &KRB5_CHECKSUM_it);
293}
126 294
127 295
128ASN1_SEQUENCE(KRB5_ENCKEY) = { 296ASN1_SEQUENCE(KRB5_ENCKEY) = {
@@ -130,7 +298,31 @@ ASN1_SEQUENCE(KRB5_ENCKEY) = {
130 ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1) 298 ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1)
131} ASN1_SEQUENCE_END(KRB5_ENCKEY) 299} ASN1_SEQUENCE_END(KRB5_ENCKEY)
132 300
133IMPLEMENT_ASN1_FUNCTIONS(KRB5_ENCKEY) 301
302KRB5_ENCKEY *
303d2i_KRB5_ENCKEY(KRB5_ENCKEY **a, const unsigned char **in, long len)
304{
305 return (KRB5_ENCKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
306 &KRB5_ENCKEY_it);
307}
308
309int
310i2d_KRB5_ENCKEY(KRB5_ENCKEY *a, unsigned char **out)
311{
312 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_ENCKEY_it);
313}
314
315KRB5_ENCKEY *
316KRB5_ENCKEY_new(void)
317{
318 return (KRB5_ENCKEY *)ASN1_item_new(&KRB5_ENCKEY_it);
319}
320
321void
322KRB5_ENCKEY_free(KRB5_ENCKEY *a)
323{
324 ASN1_item_free((ASN1_VALUE *)a, &KRB5_ENCKEY_it);
325}
134 326
135 327
136/* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ 328/* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */
@@ -139,7 +331,31 @@ ASN1_SEQUENCE(KRB5_AUTHDATA) = {
139 ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1) 331 ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1)
140} ASN1_SEQUENCE_END(KRB5_AUTHDATA) 332} ASN1_SEQUENCE_END(KRB5_AUTHDATA)
141 333
142IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHDATA) 334
335KRB5_AUTHDATA *
336d2i_KRB5_AUTHDATA(KRB5_AUTHDATA **a, const unsigned char **in, long len)
337{
338 return (KRB5_AUTHDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
339 &KRB5_AUTHDATA_it);
340}
341
342int
343i2d_KRB5_AUTHDATA(KRB5_AUTHDATA *a, unsigned char **out)
344{
345 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHDATA_it);
346}
347
348KRB5_AUTHDATA *
349KRB5_AUTHDATA_new(void)
350{
351 return (KRB5_AUTHDATA *)ASN1_item_new(&KRB5_AUTHDATA_it);
352}
353
354void
355KRB5_AUTHDATA_free(KRB5_AUTHDATA *a)
356{
357 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHDATA_it);
358}
143 359
144 360
145/* [APPLICATION 2] = 0x62 */ 361/* [APPLICATION 2] = 0x62 */
@@ -156,12 +372,60 @@ ASN1_SEQUENCE(KRB5_AUTHENTBODY) = {
156 (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8), 372 (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8),
157} ASN1_SEQUENCE_END(KRB5_AUTHENTBODY) 373} ASN1_SEQUENCE_END(KRB5_AUTHENTBODY)
158 374
159IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHENTBODY) 375
376KRB5_AUTHENTBODY *
377d2i_KRB5_AUTHENTBODY(KRB5_AUTHENTBODY **a, const unsigned char **in, long len)
378{
379 return (KRB5_AUTHENTBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
380 &KRB5_AUTHENTBODY_it);
381}
382
383int
384i2d_KRB5_AUTHENTBODY(KRB5_AUTHENTBODY *a, unsigned char **out)
385{
386 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHENTBODY_it);
387}
388
389KRB5_AUTHENTBODY *
390KRB5_AUTHENTBODY_new(void)
391{
392 return (KRB5_AUTHENTBODY *)ASN1_item_new(&KRB5_AUTHENTBODY_it);
393}
394
395void
396KRB5_AUTHENTBODY_free(KRB5_AUTHENTBODY *a)
397{
398 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it);
399}
160 400
161ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) = 401ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) =
162 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2, 402 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2,
163 KRB5_AUTHENT, KRB5_AUTHENTBODY) 403 KRB5_AUTHENT, KRB5_AUTHENTBODY)
164ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT) 404ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT)
165 405
166IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHENT) 406
407KRB5_AUTHENT *
408d2i_KRB5_AUTHENT(KRB5_AUTHENT **a, const unsigned char **in, long len)
409{
410 return (KRB5_AUTHENT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
411 &KRB5_AUTHENT_it);
412}
413
414int
415i2d_KRB5_AUTHENT(KRB5_AUTHENT *a, unsigned char **out)
416{
417 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHENT_it);
418}
419
420KRB5_AUTHENT *
421KRB5_AUTHENT_new(void)
422{
423 return (KRB5_AUTHENT *)ASN1_item_new(&KRB5_AUTHENT_it);
424}
425
426void
427KRB5_AUTHENT_free(KRB5_AUTHENT *a)
428{
429 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it);
430}
167 431
diff --git a/src/lib/libcrypto/ocsp/ocsp_asn.c b/src/lib/libcrypto/ocsp/ocsp_asn.c
index a9178d525b..6ca21af89a 100644
--- a/src/lib/libcrypto/ocsp/ocsp_asn.c
+++ b/src/lib/libcrypto/ocsp/ocsp_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ocsp_asn.c,v 1.6 2014/06/12 15:49:30 deraadt Exp $ */ 1/* $OpenBSD: ocsp_asn.c,v 1.7 2015/02/09 16:04:46 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 */
@@ -65,7 +65,31 @@ ASN1_SEQUENCE(OCSP_SIGNATURE) = {
65 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0) 65 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0)
66} ASN1_SEQUENCE_END(OCSP_SIGNATURE) 66} ASN1_SEQUENCE_END(OCSP_SIGNATURE)
67 67
68IMPLEMENT_ASN1_FUNCTIONS(OCSP_SIGNATURE) 68
69OCSP_SIGNATURE *
70d2i_OCSP_SIGNATURE(OCSP_SIGNATURE **a, const unsigned char **in, long len)
71{
72 return (OCSP_SIGNATURE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
73 &OCSP_SIGNATURE_it);
74}
75
76int
77i2d_OCSP_SIGNATURE(OCSP_SIGNATURE *a, unsigned char **out)
78{
79 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SIGNATURE_it);
80}
81
82OCSP_SIGNATURE *
83OCSP_SIGNATURE_new(void)
84{
85 return (OCSP_SIGNATURE *)ASN1_item_new(&OCSP_SIGNATURE_it);
86}
87
88void
89OCSP_SIGNATURE_free(OCSP_SIGNATURE *a)
90{
91 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it);
92}
69 93
70ASN1_SEQUENCE(OCSP_CERTID) = { 94ASN1_SEQUENCE(OCSP_CERTID) = {
71 ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR), 95 ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR),
@@ -74,14 +98,62 @@ ASN1_SEQUENCE(OCSP_CERTID) = {
74 ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER) 98 ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER)
75} ASN1_SEQUENCE_END(OCSP_CERTID) 99} ASN1_SEQUENCE_END(OCSP_CERTID)
76 100
77IMPLEMENT_ASN1_FUNCTIONS(OCSP_CERTID) 101
102OCSP_CERTID *
103d2i_OCSP_CERTID(OCSP_CERTID **a, const unsigned char **in, long len)
104{
105 return (OCSP_CERTID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
106 &OCSP_CERTID_it);
107}
108
109int
110i2d_OCSP_CERTID(OCSP_CERTID *a, unsigned char **out)
111{
112 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTID_it);
113}
114
115OCSP_CERTID *
116OCSP_CERTID_new(void)
117{
118 return (OCSP_CERTID *)ASN1_item_new(&OCSP_CERTID_it);
119}
120
121void
122OCSP_CERTID_free(OCSP_CERTID *a)
123{
124 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it);
125}
78 126
79ASN1_SEQUENCE(OCSP_ONEREQ) = { 127ASN1_SEQUENCE(OCSP_ONEREQ) = {
80 ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID), 128 ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID),
81 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0) 129 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0)
82} ASN1_SEQUENCE_END(OCSP_ONEREQ) 130} ASN1_SEQUENCE_END(OCSP_ONEREQ)
83 131
84IMPLEMENT_ASN1_FUNCTIONS(OCSP_ONEREQ) 132
133OCSP_ONEREQ *
134d2i_OCSP_ONEREQ(OCSP_ONEREQ **a, const unsigned char **in, long len)
135{
136 return (OCSP_ONEREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
137 &OCSP_ONEREQ_it);
138}
139
140int
141i2d_OCSP_ONEREQ(OCSP_ONEREQ *a, unsigned char **out)
142{
143 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_ONEREQ_it);
144}
145
146OCSP_ONEREQ *
147OCSP_ONEREQ_new(void)
148{
149 return (OCSP_ONEREQ *)ASN1_item_new(&OCSP_ONEREQ_it);
150}
151
152void
153OCSP_ONEREQ_free(OCSP_ONEREQ *a)
154{
155 ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it);
156}
85 157
86ASN1_SEQUENCE(OCSP_REQINFO) = { 158ASN1_SEQUENCE(OCSP_REQINFO) = {
87 ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0), 159 ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0),
@@ -90,14 +162,62 @@ ASN1_SEQUENCE(OCSP_REQINFO) = {
90 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2) 162 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2)
91} ASN1_SEQUENCE_END(OCSP_REQINFO) 163} ASN1_SEQUENCE_END(OCSP_REQINFO)
92 164
93IMPLEMENT_ASN1_FUNCTIONS(OCSP_REQINFO) 165
166OCSP_REQINFO *
167d2i_OCSP_REQINFO(OCSP_REQINFO **a, const unsigned char **in, long len)
168{
169 return (OCSP_REQINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
170 &OCSP_REQINFO_it);
171}
172
173int
174i2d_OCSP_REQINFO(OCSP_REQINFO *a, unsigned char **out)
175{
176 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQINFO_it);
177}
178
179OCSP_REQINFO *
180OCSP_REQINFO_new(void)
181{
182 return (OCSP_REQINFO *)ASN1_item_new(&OCSP_REQINFO_it);
183}
184
185void
186OCSP_REQINFO_free(OCSP_REQINFO *a)
187{
188 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it);
189}
94 190
95ASN1_SEQUENCE(OCSP_REQUEST) = { 191ASN1_SEQUENCE(OCSP_REQUEST) = {
96 ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO), 192 ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO),
97 ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0) 193 ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0)
98} ASN1_SEQUENCE_END(OCSP_REQUEST) 194} ASN1_SEQUENCE_END(OCSP_REQUEST)
99 195
100IMPLEMENT_ASN1_FUNCTIONS(OCSP_REQUEST) 196
197OCSP_REQUEST *
198d2i_OCSP_REQUEST(OCSP_REQUEST **a, const unsigned char **in, long len)
199{
200 return (OCSP_REQUEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
201 &OCSP_REQUEST_it);
202}
203
204int
205i2d_OCSP_REQUEST(OCSP_REQUEST *a, unsigned char **out)
206{
207 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQUEST_it);
208}
209
210OCSP_REQUEST *
211OCSP_REQUEST_new(void)
212{
213 return (OCSP_REQUEST *)ASN1_item_new(&OCSP_REQUEST_it);
214}
215
216void
217OCSP_REQUEST_free(OCSP_REQUEST *a)
218{
219 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQUEST_it);
220}
101 221
102/* OCSP_RESPONSE templates */ 222/* OCSP_RESPONSE templates */
103 223
@@ -106,28 +226,124 @@ ASN1_SEQUENCE(OCSP_RESPBYTES) = {
106 ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING) 226 ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING)
107} ASN1_SEQUENCE_END(OCSP_RESPBYTES) 227} ASN1_SEQUENCE_END(OCSP_RESPBYTES)
108 228
109IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPBYTES) 229
230OCSP_RESPBYTES *
231d2i_OCSP_RESPBYTES(OCSP_RESPBYTES **a, const unsigned char **in, long len)
232{
233 return (OCSP_RESPBYTES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
234 &OCSP_RESPBYTES_it);
235}
236
237int
238i2d_OCSP_RESPBYTES(OCSP_RESPBYTES *a, unsigned char **out)
239{
240 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPBYTES_it);
241}
242
243OCSP_RESPBYTES *
244OCSP_RESPBYTES_new(void)
245{
246 return (OCSP_RESPBYTES *)ASN1_item_new(&OCSP_RESPBYTES_it);
247}
248
249void
250OCSP_RESPBYTES_free(OCSP_RESPBYTES *a)
251{
252 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it);
253}
110 254
111ASN1_SEQUENCE(OCSP_RESPONSE) = { 255ASN1_SEQUENCE(OCSP_RESPONSE) = {
112 ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED), 256 ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED),
113 ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0) 257 ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0)
114} ASN1_SEQUENCE_END(OCSP_RESPONSE) 258} ASN1_SEQUENCE_END(OCSP_RESPONSE)
115 259
116IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPONSE) 260
261OCSP_RESPONSE *
262d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len)
263{
264 return (OCSP_RESPONSE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
265 &OCSP_RESPONSE_it);
266}
267
268int
269i2d_OCSP_RESPONSE(OCSP_RESPONSE *a, unsigned char **out)
270{
271 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPONSE_it);
272}
273
274OCSP_RESPONSE *
275OCSP_RESPONSE_new(void)
276{
277 return (OCSP_RESPONSE *)ASN1_item_new(&OCSP_RESPONSE_it);
278}
279
280void
281OCSP_RESPONSE_free(OCSP_RESPONSE *a)
282{
283 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it);
284}
117 285
118ASN1_CHOICE(OCSP_RESPID) = { 286ASN1_CHOICE(OCSP_RESPID) = {
119 ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1), 287 ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1),
120 ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2) 288 ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2)
121} ASN1_CHOICE_END(OCSP_RESPID) 289} ASN1_CHOICE_END(OCSP_RESPID)
122 290
123IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPID) 291
292OCSP_RESPID *
293d2i_OCSP_RESPID(OCSP_RESPID **a, const unsigned char **in, long len)
294{
295 return (OCSP_RESPID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
296 &OCSP_RESPID_it);
297}
298
299int
300i2d_OCSP_RESPID(OCSP_RESPID *a, unsigned char **out)
301{
302 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPID_it);
303}
304
305OCSP_RESPID *
306OCSP_RESPID_new(void)
307{
308 return (OCSP_RESPID *)ASN1_item_new(&OCSP_RESPID_it);
309}
310
311void
312OCSP_RESPID_free(OCSP_RESPID *a)
313{
314 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it);
315}
124 316
125ASN1_SEQUENCE(OCSP_REVOKEDINFO) = { 317ASN1_SEQUENCE(OCSP_REVOKEDINFO) = {
126 ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME), 318 ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME),
127 ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0) 319 ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0)
128} ASN1_SEQUENCE_END(OCSP_REVOKEDINFO) 320} ASN1_SEQUENCE_END(OCSP_REVOKEDINFO)
129 321
130IMPLEMENT_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) 322
323OCSP_REVOKEDINFO *
324d2i_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO **a, const unsigned char **in, long len)
325{
326 return (OCSP_REVOKEDINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
327 &OCSP_REVOKEDINFO_it);
328}
329
330int
331i2d_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO *a, unsigned char **out)
332{
333 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REVOKEDINFO_it);
334}
335
336OCSP_REVOKEDINFO *
337OCSP_REVOKEDINFO_new(void)
338{
339 return (OCSP_REVOKEDINFO *)ASN1_item_new(&OCSP_REVOKEDINFO_it);
340}
341
342void
343OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a)
344{
345 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it);
346}
131 347
132ASN1_CHOICE(OCSP_CERTSTATUS) = { 348ASN1_CHOICE(OCSP_CERTSTATUS) = {
133 ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0), 349 ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0),
@@ -135,7 +351,31 @@ ASN1_CHOICE(OCSP_CERTSTATUS) = {
135 ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2) 351 ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2)
136} ASN1_CHOICE_END(OCSP_CERTSTATUS) 352} ASN1_CHOICE_END(OCSP_CERTSTATUS)
137 353
138IMPLEMENT_ASN1_FUNCTIONS(OCSP_CERTSTATUS) 354
355OCSP_CERTSTATUS *
356d2i_OCSP_CERTSTATUS(OCSP_CERTSTATUS **a, const unsigned char **in, long len)
357{
358 return (OCSP_CERTSTATUS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
359 &OCSP_CERTSTATUS_it);
360}
361
362int
363i2d_OCSP_CERTSTATUS(OCSP_CERTSTATUS *a, unsigned char **out)
364{
365 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTSTATUS_it);
366}
367
368OCSP_CERTSTATUS *
369OCSP_CERTSTATUS_new(void)
370{
371 return (OCSP_CERTSTATUS *)ASN1_item_new(&OCSP_CERTSTATUS_it);
372}
373
374void
375OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a)
376{
377 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it);
378}
139 379
140ASN1_SEQUENCE(OCSP_SINGLERESP) = { 380ASN1_SEQUENCE(OCSP_SINGLERESP) = {
141 ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID), 381 ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID),
@@ -145,7 +385,31 @@ ASN1_SEQUENCE(OCSP_SINGLERESP) = {
145 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1) 385 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1)
146} ASN1_SEQUENCE_END(OCSP_SINGLERESP) 386} ASN1_SEQUENCE_END(OCSP_SINGLERESP)
147 387
148IMPLEMENT_ASN1_FUNCTIONS(OCSP_SINGLERESP) 388
389OCSP_SINGLERESP *
390d2i_OCSP_SINGLERESP(OCSP_SINGLERESP **a, const unsigned char **in, long len)
391{
392 return (OCSP_SINGLERESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
393 &OCSP_SINGLERESP_it);
394}
395
396int
397i2d_OCSP_SINGLERESP(OCSP_SINGLERESP *a, unsigned char **out)
398{
399 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SINGLERESP_it);
400}
401
402OCSP_SINGLERESP *
403OCSP_SINGLERESP_new(void)
404{
405 return (OCSP_SINGLERESP *)ASN1_item_new(&OCSP_SINGLERESP_it);
406}
407
408void
409OCSP_SINGLERESP_free(OCSP_SINGLERESP *a)
410{
411 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it);
412}
149 413
150ASN1_SEQUENCE(OCSP_RESPDATA) = { 414ASN1_SEQUENCE(OCSP_RESPDATA) = {
151 ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0), 415 ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0),
@@ -155,7 +419,31 @@ ASN1_SEQUENCE(OCSP_RESPDATA) = {
155 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1) 419 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1)
156} ASN1_SEQUENCE_END(OCSP_RESPDATA) 420} ASN1_SEQUENCE_END(OCSP_RESPDATA)
157 421
158IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPDATA) 422
423OCSP_RESPDATA *
424d2i_OCSP_RESPDATA(OCSP_RESPDATA **a, const unsigned char **in, long len)
425{
426 return (OCSP_RESPDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
427 &OCSP_RESPDATA_it);
428}
429
430int
431i2d_OCSP_RESPDATA(OCSP_RESPDATA *a, unsigned char **out)
432{
433 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPDATA_it);
434}
435
436OCSP_RESPDATA *
437OCSP_RESPDATA_new(void)
438{
439 return (OCSP_RESPDATA *)ASN1_item_new(&OCSP_RESPDATA_it);
440}
441
442void
443OCSP_RESPDATA_free(OCSP_RESPDATA *a)
444{
445 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it);
446}
159 447
160ASN1_SEQUENCE(OCSP_BASICRESP) = { 448ASN1_SEQUENCE(OCSP_BASICRESP) = {
161 ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA), 449 ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA),
@@ -164,7 +452,31 @@ ASN1_SEQUENCE(OCSP_BASICRESP) = {
164 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0) 452 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0)
165} ASN1_SEQUENCE_END(OCSP_BASICRESP) 453} ASN1_SEQUENCE_END(OCSP_BASICRESP)
166 454
167IMPLEMENT_ASN1_FUNCTIONS(OCSP_BASICRESP) 455
456OCSP_BASICRESP *
457d2i_OCSP_BASICRESP(OCSP_BASICRESP **a, const unsigned char **in, long len)
458{
459 return (OCSP_BASICRESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
460 &OCSP_BASICRESP_it);
461}
462
463int
464i2d_OCSP_BASICRESP(OCSP_BASICRESP *a, unsigned char **out)
465{
466 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_BASICRESP_it);
467}
468
469OCSP_BASICRESP *
470OCSP_BASICRESP_new(void)
471{
472 return (OCSP_BASICRESP *)ASN1_item_new(&OCSP_BASICRESP_it);
473}
474
475void
476OCSP_BASICRESP_free(OCSP_BASICRESP *a)
477{
478 ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it);
479}
168 480
169ASN1_SEQUENCE(OCSP_CRLID) = { 481ASN1_SEQUENCE(OCSP_CRLID) = {
170 ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0), 482 ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0),
@@ -172,11 +484,59 @@ ASN1_SEQUENCE(OCSP_CRLID) = {
172 ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2) 484 ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2)
173} ASN1_SEQUENCE_END(OCSP_CRLID) 485} ASN1_SEQUENCE_END(OCSP_CRLID)
174 486
175IMPLEMENT_ASN1_FUNCTIONS(OCSP_CRLID) 487
488OCSP_CRLID *
489d2i_OCSP_CRLID(OCSP_CRLID **a, const unsigned char **in, long len)
490{
491 return (OCSP_CRLID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
492 &OCSP_CRLID_it);
493}
494
495int
496i2d_OCSP_CRLID(OCSP_CRLID *a, unsigned char **out)
497{
498 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CRLID_it);
499}
500
501OCSP_CRLID *
502OCSP_CRLID_new(void)
503{
504 return (OCSP_CRLID *)ASN1_item_new(&OCSP_CRLID_it);
505}
506
507void
508OCSP_CRLID_free(OCSP_CRLID *a)
509{
510 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it);
511}
176 512
177ASN1_SEQUENCE(OCSP_SERVICELOC) = { 513ASN1_SEQUENCE(OCSP_SERVICELOC) = {
178 ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME), 514 ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME),
179 ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION) 515 ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION)
180} ASN1_SEQUENCE_END(OCSP_SERVICELOC) 516} ASN1_SEQUENCE_END(OCSP_SERVICELOC)
181 517
182IMPLEMENT_ASN1_FUNCTIONS(OCSP_SERVICELOC) 518
519OCSP_SERVICELOC *
520d2i_OCSP_SERVICELOC(OCSP_SERVICELOC **a, const unsigned char **in, long len)
521{
522 return (OCSP_SERVICELOC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
523 &OCSP_SERVICELOC_it);
524}
525
526int
527i2d_OCSP_SERVICELOC(OCSP_SERVICELOC *a, unsigned char **out)
528{
529 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SERVICELOC_it);
530}
531
532OCSP_SERVICELOC *
533OCSP_SERVICELOC_new(void)
534{
535 return (OCSP_SERVICELOC *)ASN1_item_new(&OCSP_SERVICELOC_it);
536}
537
538void
539OCSP_SERVICELOC_free(OCSP_SERVICELOC *a)
540{
541 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SERVICELOC_it);
542}
diff --git a/src/lib/libcrypto/pkcs12/p12_asn.c b/src/lib/libcrypto/pkcs12/p12_asn.c
index 5b3285ebe2..8e6ee29cb7 100644
--- a/src/lib/libcrypto/pkcs12/p12_asn.c
+++ b/src/lib/libcrypto/pkcs12/p12_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_asn.c,v 1.6 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: p12_asn.c,v 1.7 2015/02/09 16:04:46 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 */
@@ -69,7 +69,31 @@ ASN1_SEQUENCE(PKCS12) = {
69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA) 69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA)
70} ASN1_SEQUENCE_END(PKCS12) 70} ASN1_SEQUENCE_END(PKCS12)
71 71
72IMPLEMENT_ASN1_FUNCTIONS(PKCS12) 72
73PKCS12 *
74d2i_PKCS12(PKCS12 **a, const unsigned char **in, long len)
75{
76 return (PKCS12 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
77 &PKCS12_it);
78}
79
80int
81i2d_PKCS12(PKCS12 *a, unsigned char **out)
82{
83 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_it);
84}
85
86PKCS12 *
87PKCS12_new(void)
88{
89 return (PKCS12 *)ASN1_item_new(&PKCS12_it);
90}
91
92void
93PKCS12_free(PKCS12 *a)
94{
95 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it);
96}
73 97
74ASN1_SEQUENCE(PKCS12_MAC_DATA) = { 98ASN1_SEQUENCE(PKCS12_MAC_DATA) = {
75 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG), 99 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG),
@@ -77,7 +101,31 @@ ASN1_SEQUENCE(PKCS12_MAC_DATA) = {
77 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER) 101 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER)
78} ASN1_SEQUENCE_END(PKCS12_MAC_DATA) 102} ASN1_SEQUENCE_END(PKCS12_MAC_DATA)
79 103
80IMPLEMENT_ASN1_FUNCTIONS(PKCS12_MAC_DATA) 104
105PKCS12_MAC_DATA *
106d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, const unsigned char **in, long len)
107{
108 return (PKCS12_MAC_DATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
109 &PKCS12_MAC_DATA_it);
110}
111
112int
113i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **out)
114{
115 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_MAC_DATA_it);
116}
117
118PKCS12_MAC_DATA *
119PKCS12_MAC_DATA_new(void)
120{
121 return (PKCS12_MAC_DATA *)ASN1_item_new(&PKCS12_MAC_DATA_it);
122}
123
124void
125PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a)
126{
127 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it);
128}
81 129
82ASN1_ADB_TEMPLATE(bag_default) = 130ASN1_ADB_TEMPLATE(bag_default) =
83 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0); 131 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0);
@@ -96,7 +144,31 @@ ASN1_SEQUENCE(PKCS12_BAGS) = {
96 ASN1_ADB_OBJECT(PKCS12_BAGS), 144 ASN1_ADB_OBJECT(PKCS12_BAGS),
97} ASN1_SEQUENCE_END(PKCS12_BAGS) 145} ASN1_SEQUENCE_END(PKCS12_BAGS)
98 146
99IMPLEMENT_ASN1_FUNCTIONS(PKCS12_BAGS) 147
148PKCS12_BAGS *
149d2i_PKCS12_BAGS(PKCS12_BAGS **a, const unsigned char **in, long len)
150{
151 return (PKCS12_BAGS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &PKCS12_BAGS_it);
153}
154
155int
156i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_BAGS_it);
159}
160
161PKCS12_BAGS *
162PKCS12_BAGS_new(void)
163{
164 return (PKCS12_BAGS *)ASN1_item_new(&PKCS12_BAGS_it);
165}
166
167void
168PKCS12_BAGS_free(PKCS12_BAGS *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it);
171}
100 172
101ASN1_ADB_TEMPLATE(safebag_default) = 173ASN1_ADB_TEMPLATE(safebag_default) =
102 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0); 174 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0);
@@ -122,7 +194,31 @@ ASN1_SEQUENCE(PKCS12_SAFEBAG) = {
122 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE) 194 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE)
123} ASN1_SEQUENCE_END(PKCS12_SAFEBAG) 195} ASN1_SEQUENCE_END(PKCS12_SAFEBAG)
124 196
125IMPLEMENT_ASN1_FUNCTIONS(PKCS12_SAFEBAG) 197
198PKCS12_SAFEBAG *
199d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, const unsigned char **in, long len)
200{
201 return (PKCS12_SAFEBAG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
202 &PKCS12_SAFEBAG_it);
203}
204
205int
206i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **out)
207{
208 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_SAFEBAG_it);
209}
210
211PKCS12_SAFEBAG *
212PKCS12_SAFEBAG_new(void)
213{
214 return (PKCS12_SAFEBAG *)ASN1_item_new(&PKCS12_SAFEBAG_it);
215}
216
217void
218PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a)
219{
220 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_SAFEBAG_it);
221}
126 222
127/* SEQUENCE OF SafeBag */ 223/* SEQUENCE OF SafeBag */
128ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) = 224ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) =
diff --git a/src/lib/libcrypto/pkcs7/pk7_asn1.c b/src/lib/libcrypto/pkcs7/pk7_asn1.c
index 5191eb5076..2522a1ae6c 100644
--- a/src/lib/libcrypto/pkcs7/pk7_asn1.c
+++ b/src/lib/libcrypto/pkcs7/pk7_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pk7_asn1.c,v 1.7 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: pk7_asn1.c,v 1.8 2015/02/09 16:04:46 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 */
@@ -116,7 +116,31 @@ ASN1_NDEF_SEQUENCE_cb(PKCS7, pk7_cb) = {
116 ASN1_ADB_OBJECT(PKCS7) 116 ASN1_ADB_OBJECT(PKCS7)
117}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7) 117}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7)
118 118
119IMPLEMENT_ASN1_FUNCTIONS(PKCS7) 119
120PKCS7 *
121d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len)
122{
123 return (PKCS7 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
124 &PKCS7_it);
125}
126
127int
128i2d_PKCS7(PKCS7 *a, unsigned char **out)
129{
130 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_it);
131}
132
133PKCS7 *
134PKCS7_new(void)
135{
136 return (PKCS7 *)ASN1_item_new(&PKCS7_it);
137}
138
139void
140PKCS7_free(PKCS7 *a)
141{
142 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_it);
143}
120IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7) 144IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7)
121IMPLEMENT_ASN1_DUP_FUNCTION(PKCS7) 145IMPLEMENT_ASN1_DUP_FUNCTION(PKCS7)
122 146
@@ -129,7 +153,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_SIGNED) = {
129 ASN1_SET_OF(PKCS7_SIGNED, signer_info, PKCS7_SIGNER_INFO) 153 ASN1_SET_OF(PKCS7_SIGNED, signer_info, PKCS7_SIGNER_INFO)
130} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGNED) 154} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGNED)
131 155
132IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNED) 156
157PKCS7_SIGNED *
158d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, const unsigned char **in, long len)
159{
160 return (PKCS7_SIGNED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
161 &PKCS7_SIGNED_it);
162}
163
164int
165i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **out)
166{
167 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGNED_it);
168}
169
170PKCS7_SIGNED *
171PKCS7_SIGNED_new(void)
172{
173 return (PKCS7_SIGNED *)ASN1_item_new(&PKCS7_SIGNED_it);
174}
175
176void
177PKCS7_SIGNED_free(PKCS7_SIGNED *a)
178{
179 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGNED_it);
180}
133 181
134/* Minor tweak to operation: free up EVP_PKEY */ 182/* Minor tweak to operation: free up EVP_PKEY */
135static int 183static int
@@ -159,14 +207,62 @@ ASN1_SEQUENCE_cb(PKCS7_SIGNER_INFO, si_cb) = {
159 ASN1_IMP_SET_OF_OPT(PKCS7_SIGNER_INFO, unauth_attr, X509_ATTRIBUTE, 1) 207 ASN1_IMP_SET_OF_OPT(PKCS7_SIGNER_INFO, unauth_attr, X509_ATTRIBUTE, 1)
160} ASN1_SEQUENCE_END_cb(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) 208} ASN1_SEQUENCE_END_cb(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO)
161 209
162IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) 210
211PKCS7_SIGNER_INFO *
212d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **a, const unsigned char **in, long len)
213{
214 return (PKCS7_SIGNER_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
215 &PKCS7_SIGNER_INFO_it);
216}
217
218int
219i2d_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO *a, unsigned char **out)
220{
221 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGNER_INFO_it);
222}
223
224PKCS7_SIGNER_INFO *
225PKCS7_SIGNER_INFO_new(void)
226{
227 return (PKCS7_SIGNER_INFO *)ASN1_item_new(&PKCS7_SIGNER_INFO_it);
228}
229
230void
231PKCS7_SIGNER_INFO_free(PKCS7_SIGNER_INFO *a)
232{
233 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGNER_INFO_it);
234}
163 235
164ASN1_SEQUENCE(PKCS7_ISSUER_AND_SERIAL) = { 236ASN1_SEQUENCE(PKCS7_ISSUER_AND_SERIAL) = {
165 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, issuer, X509_NAME), 237 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, issuer, X509_NAME),
166 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, serial, ASN1_INTEGER) 238 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, serial, ASN1_INTEGER)
167} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SERIAL) 239} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SERIAL)
168 240
169IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) 241
242PKCS7_ISSUER_AND_SERIAL *
243d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, const unsigned char **in, long len)
244{
245 return (PKCS7_ISSUER_AND_SERIAL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
246 &PKCS7_ISSUER_AND_SERIAL_it);
247}
248
249int
250i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *a, unsigned char **out)
251{
252 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ISSUER_AND_SERIAL_it);
253}
254
255PKCS7_ISSUER_AND_SERIAL *
256PKCS7_ISSUER_AND_SERIAL_new(void)
257{
258 return (PKCS7_ISSUER_AND_SERIAL *)ASN1_item_new(&PKCS7_ISSUER_AND_SERIAL_it);
259}
260
261void
262PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a)
263{
264 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ISSUER_AND_SERIAL_it);
265}
170 266
171ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = { 267ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = {
172 ASN1_SIMPLE(PKCS7_ENVELOPE, version, ASN1_INTEGER), 268 ASN1_SIMPLE(PKCS7_ENVELOPE, version, ASN1_INTEGER),
@@ -174,7 +270,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = {
174 ASN1_SIMPLE(PKCS7_ENVELOPE, enc_data, PKCS7_ENC_CONTENT) 270 ASN1_SIMPLE(PKCS7_ENVELOPE, enc_data, PKCS7_ENC_CONTENT)
175} ASN1_NDEF_SEQUENCE_END(PKCS7_ENVELOPE) 271} ASN1_NDEF_SEQUENCE_END(PKCS7_ENVELOPE)
176 272
177IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENVELOPE) 273
274PKCS7_ENVELOPE *
275d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, const unsigned char **in, long len)
276{
277 return (PKCS7_ENVELOPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
278 &PKCS7_ENVELOPE_it);
279}
280
281int
282i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *a, unsigned char **out)
283{
284 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENVELOPE_it);
285}
286
287PKCS7_ENVELOPE *
288PKCS7_ENVELOPE_new(void)
289{
290 return (PKCS7_ENVELOPE *)ASN1_item_new(&PKCS7_ENVELOPE_it);
291}
292
293void
294PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a)
295{
296 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENVELOPE_it);
297}
178 298
179/* Minor tweak to operation: free up X509 */ 299/* Minor tweak to operation: free up X509 */
180static int 300static int
@@ -195,7 +315,31 @@ ASN1_SEQUENCE_cb(PKCS7_RECIP_INFO, ri_cb) = {
195 ASN1_SIMPLE(PKCS7_RECIP_INFO, enc_key, ASN1_OCTET_STRING) 315 ASN1_SIMPLE(PKCS7_RECIP_INFO, enc_key, ASN1_OCTET_STRING)
196} ASN1_SEQUENCE_END_cb(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) 316} ASN1_SEQUENCE_END_cb(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO)
197 317
198IMPLEMENT_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) 318
319PKCS7_RECIP_INFO *
320d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a, const unsigned char **in, long len)
321{
322 return (PKCS7_RECIP_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
323 &PKCS7_RECIP_INFO_it);
324}
325
326int
327i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *a, unsigned char **out)
328{
329 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_RECIP_INFO_it);
330}
331
332PKCS7_RECIP_INFO *
333PKCS7_RECIP_INFO_new(void)
334{
335 return (PKCS7_RECIP_INFO *)ASN1_item_new(&PKCS7_RECIP_INFO_it);
336}
337
338void
339PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a)
340{
341 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_RECIP_INFO_it);
342}
199 343
200ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = { 344ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = {
201 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT), 345 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT),
@@ -203,7 +347,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = {
203 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING_NDEF, 0) 347 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING_NDEF, 0)
204} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT) 348} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT)
205 349
206IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) 350
351PKCS7_ENC_CONTENT *
352d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a, const unsigned char **in, long len)
353{
354 return (PKCS7_ENC_CONTENT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
355 &PKCS7_ENC_CONTENT_it);
356}
357
358int
359i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *a, unsigned char **out)
360{
361 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENC_CONTENT_it);
362}
363
364PKCS7_ENC_CONTENT *
365PKCS7_ENC_CONTENT_new(void)
366{
367 return (PKCS7_ENC_CONTENT *)ASN1_item_new(&PKCS7_ENC_CONTENT_it);
368}
369
370void
371PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a)
372{
373 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENC_CONTENT_it);
374}
207 375
208ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = { 376ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = {
209 ASN1_SIMPLE(PKCS7_SIGN_ENVELOPE, version, ASN1_INTEGER), 377 ASN1_SIMPLE(PKCS7_SIGN_ENVELOPE, version, ASN1_INTEGER),
@@ -215,14 +383,62 @@ ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = {
215 ASN1_SET_OF(PKCS7_SIGN_ENVELOPE, signer_info, PKCS7_SIGNER_INFO) 383 ASN1_SET_OF(PKCS7_SIGN_ENVELOPE, signer_info, PKCS7_SIGNER_INFO)
216} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGN_ENVELOPE) 384} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGN_ENVELOPE)
217 385
218IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) 386
387PKCS7_SIGN_ENVELOPE *
388d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, const unsigned char **in, long len)
389{
390 return (PKCS7_SIGN_ENVELOPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
391 &PKCS7_SIGN_ENVELOPE_it);
392}
393
394int
395i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **out)
396{
397 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGN_ENVELOPE_it);
398}
399
400PKCS7_SIGN_ENVELOPE *
401PKCS7_SIGN_ENVELOPE_new(void)
402{
403 return (PKCS7_SIGN_ENVELOPE *)ASN1_item_new(&PKCS7_SIGN_ENVELOPE_it);
404}
405
406void
407PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a)
408{
409 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGN_ENVELOPE_it);
410}
219 411
220ASN1_NDEF_SEQUENCE(PKCS7_ENCRYPT) = { 412ASN1_NDEF_SEQUENCE(PKCS7_ENCRYPT) = {
221 ASN1_SIMPLE(PKCS7_ENCRYPT, version, ASN1_INTEGER), 413 ASN1_SIMPLE(PKCS7_ENCRYPT, version, ASN1_INTEGER),
222 ASN1_SIMPLE(PKCS7_ENCRYPT, enc_data, PKCS7_ENC_CONTENT) 414 ASN1_SIMPLE(PKCS7_ENCRYPT, enc_data, PKCS7_ENC_CONTENT)
223} ASN1_NDEF_SEQUENCE_END(PKCS7_ENCRYPT) 415} ASN1_NDEF_SEQUENCE_END(PKCS7_ENCRYPT)
224 416
225IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENCRYPT) 417
418PKCS7_ENCRYPT *
419d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, const unsigned char **in, long len)
420{
421 return (PKCS7_ENCRYPT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
422 &PKCS7_ENCRYPT_it);
423}
424
425int
426i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *a, unsigned char **out)
427{
428 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENCRYPT_it);
429}
430
431PKCS7_ENCRYPT *
432PKCS7_ENCRYPT_new(void)
433{
434 return (PKCS7_ENCRYPT *)ASN1_item_new(&PKCS7_ENCRYPT_it);
435}
436
437void
438PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a)
439{
440 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENCRYPT_it);
441}
226 442
227ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = { 443ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = {
228 ASN1_SIMPLE(PKCS7_DIGEST, version, ASN1_INTEGER), 444 ASN1_SIMPLE(PKCS7_DIGEST, version, ASN1_INTEGER),
@@ -231,7 +447,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = {
231 ASN1_SIMPLE(PKCS7_DIGEST, digest, ASN1_OCTET_STRING) 447 ASN1_SIMPLE(PKCS7_DIGEST, digest, ASN1_OCTET_STRING)
232} ASN1_NDEF_SEQUENCE_END(PKCS7_DIGEST) 448} ASN1_NDEF_SEQUENCE_END(PKCS7_DIGEST)
233 449
234IMPLEMENT_ASN1_FUNCTIONS(PKCS7_DIGEST) 450
451PKCS7_DIGEST *
452d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, const unsigned char **in, long len)
453{
454 return (PKCS7_DIGEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
455 &PKCS7_DIGEST_it);
456}
457
458int
459i2d_PKCS7_DIGEST(PKCS7_DIGEST *a, unsigned char **out)
460{
461 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_DIGEST_it);
462}
463
464PKCS7_DIGEST *
465PKCS7_DIGEST_new(void)
466{
467 return (PKCS7_DIGEST *)ASN1_item_new(&PKCS7_DIGEST_it);
468}
469
470void
471PKCS7_DIGEST_free(PKCS7_DIGEST *a)
472{
473 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_DIGEST_it);
474}
235 475
236/* Specials for authenticated attributes */ 476/* Specials for authenticated attributes */
237 477
diff --git a/src/lib/libcrypto/rsa/rsa_asn1.c b/src/lib/libcrypto/rsa/rsa_asn1.c
index 573b9f8b8d..a75b80fa10 100644
--- a/src/lib/libcrypto/rsa/rsa_asn1.c
+++ b/src/lib/libcrypto/rsa/rsa_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_asn1.c,v 1.9 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: rsa_asn1.c,v 1.10 2015/02/09 16:04:46 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 */
@@ -105,7 +105,31 @@ ASN1_SEQUENCE(RSA_PSS_PARAMS) = {
105 ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3) 105 ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3)
106} ASN1_SEQUENCE_END(RSA_PSS_PARAMS) 106} ASN1_SEQUENCE_END(RSA_PSS_PARAMS)
107 107
108IMPLEMENT_ASN1_FUNCTIONS(RSA_PSS_PARAMS) 108
109RSA_PSS_PARAMS *
110d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len)
111{
112 return (RSA_PSS_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
113 &RSA_PSS_PARAMS_it);
114}
115
116int
117i2d_RSA_PSS_PARAMS(RSA_PSS_PARAMS *a, unsigned char **out)
118{
119 return ASN1_item_i2d((ASN1_VALUE *)a, out, &RSA_PSS_PARAMS_it);
120}
121
122RSA_PSS_PARAMS *
123RSA_PSS_PARAMS_new(void)
124{
125 return (RSA_PSS_PARAMS *)ASN1_item_new(&RSA_PSS_PARAMS_it);
126}
127
128void
129RSA_PSS_PARAMS_free(RSA_PSS_PARAMS *a)
130{
131 ASN1_item_free((ASN1_VALUE *)a, &RSA_PSS_PARAMS_it);
132}
109 133
110IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPrivateKey, RSAPrivateKey) 134IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPrivateKey, RSAPrivateKey)
111 135
diff --git a/src/lib/libssl/src/crypto/gost/gost_asn1.c b/src/lib/libssl/src/crypto/gost/gost_asn1.c
index b8ed244e49..5d7fb51177 100644
--- a/src/lib/libssl/src/crypto/gost/gost_asn1.c
+++ b/src/lib/libssl/src/crypto/gost/gost_asn1.c
@@ -21,20 +21,92 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = {
21 ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), 21 ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO),
22 ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) 22 ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0)
23} ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) 23} ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT)
24IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT) 24
25GOST_KEY_TRANSPORT *
26d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len)
27{
28 return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
29 &GOST_KEY_TRANSPORT_it);
30}
31
32int
33i2d_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT *a, unsigned char **out)
34{
35 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it);
36}
37
38GOST_KEY_TRANSPORT *
39GOST_KEY_TRANSPORT_new(void)
40{
41 return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it);
42}
43
44void
45GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a)
46{
47 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it);
48}
25 49
26ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { 50ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = {
27 ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), 51 ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING),
28 ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) 52 ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING)
29} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) 53} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO)
30IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO) 54
55GOST_KEY_INFO *
56d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len)
57{
58 return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
59 &GOST_KEY_INFO_it);
60}
61
62int
63i2d_GOST_KEY_INFO(GOST_KEY_INFO *a, unsigned char **out)
64{
65 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it);
66}
67
68GOST_KEY_INFO *
69GOST_KEY_INFO_new(void)
70{
71 return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it);
72}
73
74void
75GOST_KEY_INFO_free(GOST_KEY_INFO *a)
76{
77 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it);
78}
31 79
32ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { 80ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = {
33 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), 81 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT),
34 ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), 82 ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0),
35 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) 83 ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING)
36} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) 84} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO)
37IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO) 85
86GOST_KEY_AGREEMENT_INFO *
87d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len)
88{
89 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
90 &GOST_KEY_AGREEMENT_INFO_it);
91}
92
93int
94i2d_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO *a, unsigned char **out)
95{
96 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_AGREEMENT_INFO_it);
97}
98
99GOST_KEY_AGREEMENT_INFO *
100GOST_KEY_AGREEMENT_INFO_new(void)
101{
102 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it);
103}
104
105void
106GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a)
107{
108 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_AGREEMENT_INFO_it);
109}
38 110
39 111
40ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { 112ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = {
@@ -42,12 +114,60 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = {
42 ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), 114 ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT),
43 ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), 115 ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT),
44} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) 116} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS)
45IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS) 117
118GOST_KEY_PARAMS *
119d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len)
120{
121 return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
122 &GOST_KEY_PARAMS_it);
123}
124
125int
126i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out)
127{
128 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it);
129}
130
131GOST_KEY_PARAMS *
132GOST_KEY_PARAMS_new(void)
133{
134 return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it);
135}
136
137void
138GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a)
139{
140 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it);
141}
46 142
47ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { 143ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = {
48 ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), 144 ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING),
49 ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), 145 ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT),
50} ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) 146} ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS)
51IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) 147
148GOST_CIPHER_PARAMS *
149d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len)
150{
151 return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &GOST_CIPHER_PARAMS_it);
153}
154
155int
156i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it);
159}
160
161GOST_CIPHER_PARAMS *
162GOST_CIPHER_PARAMS_new(void)
163{
164 return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it);
165}
166
167void
168GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it);
171}
52 172
53#endif 173#endif
diff --git a/src/lib/libssl/src/crypto/krb5/krb5_asn.c b/src/lib/libssl/src/crypto/krb5/krb5_asn.c
index bcef47a7bd..1a95e62935 100644
--- a/src/lib/libssl/src/crypto/krb5/krb5_asn.c
+++ b/src/lib/libssl/src/crypto/krb5/krb5_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: krb5_asn.c,v 1.2 2014/06/12 15:49:29 deraadt Exp $ */ 1/* $OpenBSD: krb5_asn.c,v 1.3 2015/02/09 16:04:46 jsing Exp $ */
2/* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, 2/* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project,
3** using ocsp/{*.h,*asn*.c} as a starting point 3** using ocsp/{*.h,*asn*.c} as a starting point
4*/ 4*/
@@ -66,7 +66,31 @@ ASN1_SEQUENCE(KRB5_ENCDATA) = {
66 ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2) 66 ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2)
67} ASN1_SEQUENCE_END(KRB5_ENCDATA) 67} ASN1_SEQUENCE_END(KRB5_ENCDATA)
68 68
69IMPLEMENT_ASN1_FUNCTIONS(KRB5_ENCDATA) 69
70KRB5_ENCDATA *
71d2i_KRB5_ENCDATA(KRB5_ENCDATA **a, const unsigned char **in, long len)
72{
73 return (KRB5_ENCDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &KRB5_ENCDATA_it);
75}
76
77int
78i2d_KRB5_ENCDATA(KRB5_ENCDATA *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_ENCDATA_it);
81}
82
83KRB5_ENCDATA *
84KRB5_ENCDATA_new(void)
85{
86 return (KRB5_ENCDATA *)ASN1_item_new(&KRB5_ENCDATA_it);
87}
88
89void
90KRB5_ENCDATA_free(KRB5_ENCDATA *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &KRB5_ENCDATA_it);
93}
70 94
71 95
72ASN1_SEQUENCE(KRB5_PRINCNAME) = { 96ASN1_SEQUENCE(KRB5_PRINCNAME) = {
@@ -74,7 +98,31 @@ ASN1_SEQUENCE(KRB5_PRINCNAME) = {
74 ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1) 98 ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1)
75} ASN1_SEQUENCE_END(KRB5_PRINCNAME) 99} ASN1_SEQUENCE_END(KRB5_PRINCNAME)
76 100
77IMPLEMENT_ASN1_FUNCTIONS(KRB5_PRINCNAME) 101
102KRB5_PRINCNAME *
103d2i_KRB5_PRINCNAME(KRB5_PRINCNAME **a, const unsigned char **in, long len)
104{
105 return (KRB5_PRINCNAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
106 &KRB5_PRINCNAME_it);
107}
108
109int
110i2d_KRB5_PRINCNAME(KRB5_PRINCNAME *a, unsigned char **out)
111{
112 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_PRINCNAME_it);
113}
114
115KRB5_PRINCNAME *
116KRB5_PRINCNAME_new(void)
117{
118 return (KRB5_PRINCNAME *)ASN1_item_new(&KRB5_PRINCNAME_it);
119}
120
121void
122KRB5_PRINCNAME_free(KRB5_PRINCNAME *a)
123{
124 ASN1_item_free((ASN1_VALUE *)a, &KRB5_PRINCNAME_it);
125}
78 126
79 127
80/* [APPLICATION 1] = 0x61 */ 128/* [APPLICATION 1] = 0x61 */
@@ -85,7 +133,31 @@ ASN1_SEQUENCE(KRB5_TKTBODY) = {
85 ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3) 133 ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3)
86} ASN1_SEQUENCE_END(KRB5_TKTBODY) 134} ASN1_SEQUENCE_END(KRB5_TKTBODY)
87 135
88IMPLEMENT_ASN1_FUNCTIONS(KRB5_TKTBODY) 136
137KRB5_TKTBODY *
138d2i_KRB5_TKTBODY(KRB5_TKTBODY **a, const unsigned char **in, long len)
139{
140 return (KRB5_TKTBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
141 &KRB5_TKTBODY_it);
142}
143
144int
145i2d_KRB5_TKTBODY(KRB5_TKTBODY *a, unsigned char **out)
146{
147 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_TKTBODY_it);
148}
149
150KRB5_TKTBODY *
151KRB5_TKTBODY_new(void)
152{
153 return (KRB5_TKTBODY *)ASN1_item_new(&KRB5_TKTBODY_it);
154}
155
156void
157KRB5_TKTBODY_free(KRB5_TKTBODY *a)
158{
159 ASN1_item_free((ASN1_VALUE *)a, &KRB5_TKTBODY_it);
160}
89 161
90 162
91ASN1_ITEM_TEMPLATE(KRB5_TICKET) = 163ASN1_ITEM_TEMPLATE(KRB5_TICKET) =
@@ -93,7 +165,31 @@ ASN1_ITEM_TEMPLATE(KRB5_TICKET) =
93 KRB5_TICKET, KRB5_TKTBODY) 165 KRB5_TICKET, KRB5_TKTBODY)
94ASN1_ITEM_TEMPLATE_END(KRB5_TICKET) 166ASN1_ITEM_TEMPLATE_END(KRB5_TICKET)
95 167
96IMPLEMENT_ASN1_FUNCTIONS(KRB5_TICKET) 168
169KRB5_TICKET *
170d2i_KRB5_TICKET(KRB5_TICKET **a, const unsigned char **in, long len)
171{
172 return (KRB5_TICKET *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
173 &KRB5_TICKET_it);
174}
175
176int
177i2d_KRB5_TICKET(KRB5_TICKET *a, unsigned char **out)
178{
179 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_TICKET_it);
180}
181
182KRB5_TICKET *
183KRB5_TICKET_new(void)
184{
185 return (KRB5_TICKET *)ASN1_item_new(&KRB5_TICKET_it);
186}
187
188void
189KRB5_TICKET_free(KRB5_TICKET *a)
190{
191 ASN1_item_free((ASN1_VALUE *)a, &KRB5_TICKET_it);
192}
97 193
98 194
99/* [APPLICATION 14] = 0x6e */ 195/* [APPLICATION 14] = 0x6e */
@@ -105,14 +201,62 @@ ASN1_SEQUENCE(KRB5_APREQBODY) = {
105 ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4), 201 ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4),
106} ASN1_SEQUENCE_END(KRB5_APREQBODY) 202} ASN1_SEQUENCE_END(KRB5_APREQBODY)
107 203
108IMPLEMENT_ASN1_FUNCTIONS(KRB5_APREQBODY) 204
205KRB5_APREQBODY *
206d2i_KRB5_APREQBODY(KRB5_APREQBODY **a, const unsigned char **in, long len)
207{
208 return (KRB5_APREQBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
209 &KRB5_APREQBODY_it);
210}
211
212int
213i2d_KRB5_APREQBODY(KRB5_APREQBODY *a, unsigned char **out)
214{
215 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_APREQBODY_it);
216}
217
218KRB5_APREQBODY *
219KRB5_APREQBODY_new(void)
220{
221 return (KRB5_APREQBODY *)ASN1_item_new(&KRB5_APREQBODY_it);
222}
223
224void
225KRB5_APREQBODY_free(KRB5_APREQBODY *a)
226{
227 ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it);
228}
109 229
110ASN1_ITEM_TEMPLATE(KRB5_APREQ) = 230ASN1_ITEM_TEMPLATE(KRB5_APREQ) =
111 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14, 231 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14,
112 KRB5_APREQ, KRB5_APREQBODY) 232 KRB5_APREQ, KRB5_APREQBODY)
113ASN1_ITEM_TEMPLATE_END(KRB5_APREQ) 233ASN1_ITEM_TEMPLATE_END(KRB5_APREQ)
114 234
115IMPLEMENT_ASN1_FUNCTIONS(KRB5_APREQ) 235
236KRB5_APREQ *
237d2i_KRB5_APREQ(KRB5_APREQ **a, const unsigned char **in, long len)
238{
239 return (KRB5_APREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
240 &KRB5_APREQ_it);
241}
242
243int
244i2d_KRB5_APREQ(KRB5_APREQ *a, unsigned char **out)
245{
246 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_APREQ_it);
247}
248
249KRB5_APREQ *
250KRB5_APREQ_new(void)
251{
252 return (KRB5_APREQ *)ASN1_item_new(&KRB5_APREQ_it);
253}
254
255void
256KRB5_APREQ_free(KRB5_APREQ *a)
257{
258 ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQ_it);
259}
116 260
117 261
118/* Authenticator stuff */ 262/* Authenticator stuff */
@@ -122,7 +266,31 @@ ASN1_SEQUENCE(KRB5_CHECKSUM) = {
122 ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1) 266 ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1)
123} ASN1_SEQUENCE_END(KRB5_CHECKSUM) 267} ASN1_SEQUENCE_END(KRB5_CHECKSUM)
124 268
125IMPLEMENT_ASN1_FUNCTIONS(KRB5_CHECKSUM) 269
270KRB5_CHECKSUM *
271d2i_KRB5_CHECKSUM(KRB5_CHECKSUM **a, const unsigned char **in, long len)
272{
273 return (KRB5_CHECKSUM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
274 &KRB5_CHECKSUM_it);
275}
276
277int
278i2d_KRB5_CHECKSUM(KRB5_CHECKSUM *a, unsigned char **out)
279{
280 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_CHECKSUM_it);
281}
282
283KRB5_CHECKSUM *
284KRB5_CHECKSUM_new(void)
285{
286 return (KRB5_CHECKSUM *)ASN1_item_new(&KRB5_CHECKSUM_it);
287}
288
289void
290KRB5_CHECKSUM_free(KRB5_CHECKSUM *a)
291{
292 ASN1_item_free((ASN1_VALUE *)a, &KRB5_CHECKSUM_it);
293}
126 294
127 295
128ASN1_SEQUENCE(KRB5_ENCKEY) = { 296ASN1_SEQUENCE(KRB5_ENCKEY) = {
@@ -130,7 +298,31 @@ ASN1_SEQUENCE(KRB5_ENCKEY) = {
130 ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1) 298 ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1)
131} ASN1_SEQUENCE_END(KRB5_ENCKEY) 299} ASN1_SEQUENCE_END(KRB5_ENCKEY)
132 300
133IMPLEMENT_ASN1_FUNCTIONS(KRB5_ENCKEY) 301
302KRB5_ENCKEY *
303d2i_KRB5_ENCKEY(KRB5_ENCKEY **a, const unsigned char **in, long len)
304{
305 return (KRB5_ENCKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
306 &KRB5_ENCKEY_it);
307}
308
309int
310i2d_KRB5_ENCKEY(KRB5_ENCKEY *a, unsigned char **out)
311{
312 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_ENCKEY_it);
313}
314
315KRB5_ENCKEY *
316KRB5_ENCKEY_new(void)
317{
318 return (KRB5_ENCKEY *)ASN1_item_new(&KRB5_ENCKEY_it);
319}
320
321void
322KRB5_ENCKEY_free(KRB5_ENCKEY *a)
323{
324 ASN1_item_free((ASN1_VALUE *)a, &KRB5_ENCKEY_it);
325}
134 326
135 327
136/* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ 328/* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */
@@ -139,7 +331,31 @@ ASN1_SEQUENCE(KRB5_AUTHDATA) = {
139 ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1) 331 ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1)
140} ASN1_SEQUENCE_END(KRB5_AUTHDATA) 332} ASN1_SEQUENCE_END(KRB5_AUTHDATA)
141 333
142IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHDATA) 334
335KRB5_AUTHDATA *
336d2i_KRB5_AUTHDATA(KRB5_AUTHDATA **a, const unsigned char **in, long len)
337{
338 return (KRB5_AUTHDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
339 &KRB5_AUTHDATA_it);
340}
341
342int
343i2d_KRB5_AUTHDATA(KRB5_AUTHDATA *a, unsigned char **out)
344{
345 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHDATA_it);
346}
347
348KRB5_AUTHDATA *
349KRB5_AUTHDATA_new(void)
350{
351 return (KRB5_AUTHDATA *)ASN1_item_new(&KRB5_AUTHDATA_it);
352}
353
354void
355KRB5_AUTHDATA_free(KRB5_AUTHDATA *a)
356{
357 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHDATA_it);
358}
143 359
144 360
145/* [APPLICATION 2] = 0x62 */ 361/* [APPLICATION 2] = 0x62 */
@@ -156,12 +372,60 @@ ASN1_SEQUENCE(KRB5_AUTHENTBODY) = {
156 (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8), 372 (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8),
157} ASN1_SEQUENCE_END(KRB5_AUTHENTBODY) 373} ASN1_SEQUENCE_END(KRB5_AUTHENTBODY)
158 374
159IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHENTBODY) 375
376KRB5_AUTHENTBODY *
377d2i_KRB5_AUTHENTBODY(KRB5_AUTHENTBODY **a, const unsigned char **in, long len)
378{
379 return (KRB5_AUTHENTBODY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
380 &KRB5_AUTHENTBODY_it);
381}
382
383int
384i2d_KRB5_AUTHENTBODY(KRB5_AUTHENTBODY *a, unsigned char **out)
385{
386 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHENTBODY_it);
387}
388
389KRB5_AUTHENTBODY *
390KRB5_AUTHENTBODY_new(void)
391{
392 return (KRB5_AUTHENTBODY *)ASN1_item_new(&KRB5_AUTHENTBODY_it);
393}
394
395void
396KRB5_AUTHENTBODY_free(KRB5_AUTHENTBODY *a)
397{
398 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it);
399}
160 400
161ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) = 401ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) =
162 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2, 402 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2,
163 KRB5_AUTHENT, KRB5_AUTHENTBODY) 403 KRB5_AUTHENT, KRB5_AUTHENTBODY)
164ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT) 404ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT)
165 405
166IMPLEMENT_ASN1_FUNCTIONS(KRB5_AUTHENT) 406
407KRB5_AUTHENT *
408d2i_KRB5_AUTHENT(KRB5_AUTHENT **a, const unsigned char **in, long len)
409{
410 return (KRB5_AUTHENT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
411 &KRB5_AUTHENT_it);
412}
413
414int
415i2d_KRB5_AUTHENT(KRB5_AUTHENT *a, unsigned char **out)
416{
417 return ASN1_item_i2d((ASN1_VALUE *)a, out, &KRB5_AUTHENT_it);
418}
419
420KRB5_AUTHENT *
421KRB5_AUTHENT_new(void)
422{
423 return (KRB5_AUTHENT *)ASN1_item_new(&KRB5_AUTHENT_it);
424}
425
426void
427KRB5_AUTHENT_free(KRB5_AUTHENT *a)
428{
429 ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it);
430}
167 431
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c b/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c
index a9178d525b..6ca21af89a 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ocsp_asn.c,v 1.6 2014/06/12 15:49:30 deraadt Exp $ */ 1/* $OpenBSD: ocsp_asn.c,v 1.7 2015/02/09 16:04:46 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 */
@@ -65,7 +65,31 @@ ASN1_SEQUENCE(OCSP_SIGNATURE) = {
65 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0) 65 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0)
66} ASN1_SEQUENCE_END(OCSP_SIGNATURE) 66} ASN1_SEQUENCE_END(OCSP_SIGNATURE)
67 67
68IMPLEMENT_ASN1_FUNCTIONS(OCSP_SIGNATURE) 68
69OCSP_SIGNATURE *
70d2i_OCSP_SIGNATURE(OCSP_SIGNATURE **a, const unsigned char **in, long len)
71{
72 return (OCSP_SIGNATURE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
73 &OCSP_SIGNATURE_it);
74}
75
76int
77i2d_OCSP_SIGNATURE(OCSP_SIGNATURE *a, unsigned char **out)
78{
79 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SIGNATURE_it);
80}
81
82OCSP_SIGNATURE *
83OCSP_SIGNATURE_new(void)
84{
85 return (OCSP_SIGNATURE *)ASN1_item_new(&OCSP_SIGNATURE_it);
86}
87
88void
89OCSP_SIGNATURE_free(OCSP_SIGNATURE *a)
90{
91 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it);
92}
69 93
70ASN1_SEQUENCE(OCSP_CERTID) = { 94ASN1_SEQUENCE(OCSP_CERTID) = {
71 ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR), 95 ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR),
@@ -74,14 +98,62 @@ ASN1_SEQUENCE(OCSP_CERTID) = {
74 ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER) 98 ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER)
75} ASN1_SEQUENCE_END(OCSP_CERTID) 99} ASN1_SEQUENCE_END(OCSP_CERTID)
76 100
77IMPLEMENT_ASN1_FUNCTIONS(OCSP_CERTID) 101
102OCSP_CERTID *
103d2i_OCSP_CERTID(OCSP_CERTID **a, const unsigned char **in, long len)
104{
105 return (OCSP_CERTID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
106 &OCSP_CERTID_it);
107}
108
109int
110i2d_OCSP_CERTID(OCSP_CERTID *a, unsigned char **out)
111{
112 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTID_it);
113}
114
115OCSP_CERTID *
116OCSP_CERTID_new(void)
117{
118 return (OCSP_CERTID *)ASN1_item_new(&OCSP_CERTID_it);
119}
120
121void
122OCSP_CERTID_free(OCSP_CERTID *a)
123{
124 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it);
125}
78 126
79ASN1_SEQUENCE(OCSP_ONEREQ) = { 127ASN1_SEQUENCE(OCSP_ONEREQ) = {
80 ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID), 128 ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID),
81 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0) 129 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0)
82} ASN1_SEQUENCE_END(OCSP_ONEREQ) 130} ASN1_SEQUENCE_END(OCSP_ONEREQ)
83 131
84IMPLEMENT_ASN1_FUNCTIONS(OCSP_ONEREQ) 132
133OCSP_ONEREQ *
134d2i_OCSP_ONEREQ(OCSP_ONEREQ **a, const unsigned char **in, long len)
135{
136 return (OCSP_ONEREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
137 &OCSP_ONEREQ_it);
138}
139
140int
141i2d_OCSP_ONEREQ(OCSP_ONEREQ *a, unsigned char **out)
142{
143 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_ONEREQ_it);
144}
145
146OCSP_ONEREQ *
147OCSP_ONEREQ_new(void)
148{
149 return (OCSP_ONEREQ *)ASN1_item_new(&OCSP_ONEREQ_it);
150}
151
152void
153OCSP_ONEREQ_free(OCSP_ONEREQ *a)
154{
155 ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it);
156}
85 157
86ASN1_SEQUENCE(OCSP_REQINFO) = { 158ASN1_SEQUENCE(OCSP_REQINFO) = {
87 ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0), 159 ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0),
@@ -90,14 +162,62 @@ ASN1_SEQUENCE(OCSP_REQINFO) = {
90 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2) 162 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2)
91} ASN1_SEQUENCE_END(OCSP_REQINFO) 163} ASN1_SEQUENCE_END(OCSP_REQINFO)
92 164
93IMPLEMENT_ASN1_FUNCTIONS(OCSP_REQINFO) 165
166OCSP_REQINFO *
167d2i_OCSP_REQINFO(OCSP_REQINFO **a, const unsigned char **in, long len)
168{
169 return (OCSP_REQINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
170 &OCSP_REQINFO_it);
171}
172
173int
174i2d_OCSP_REQINFO(OCSP_REQINFO *a, unsigned char **out)
175{
176 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQINFO_it);
177}
178
179OCSP_REQINFO *
180OCSP_REQINFO_new(void)
181{
182 return (OCSP_REQINFO *)ASN1_item_new(&OCSP_REQINFO_it);
183}
184
185void
186OCSP_REQINFO_free(OCSP_REQINFO *a)
187{
188 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it);
189}
94 190
95ASN1_SEQUENCE(OCSP_REQUEST) = { 191ASN1_SEQUENCE(OCSP_REQUEST) = {
96 ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO), 192 ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO),
97 ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0) 193 ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0)
98} ASN1_SEQUENCE_END(OCSP_REQUEST) 194} ASN1_SEQUENCE_END(OCSP_REQUEST)
99 195
100IMPLEMENT_ASN1_FUNCTIONS(OCSP_REQUEST) 196
197OCSP_REQUEST *
198d2i_OCSP_REQUEST(OCSP_REQUEST **a, const unsigned char **in, long len)
199{
200 return (OCSP_REQUEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
201 &OCSP_REQUEST_it);
202}
203
204int
205i2d_OCSP_REQUEST(OCSP_REQUEST *a, unsigned char **out)
206{
207 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQUEST_it);
208}
209
210OCSP_REQUEST *
211OCSP_REQUEST_new(void)
212{
213 return (OCSP_REQUEST *)ASN1_item_new(&OCSP_REQUEST_it);
214}
215
216void
217OCSP_REQUEST_free(OCSP_REQUEST *a)
218{
219 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQUEST_it);
220}
101 221
102/* OCSP_RESPONSE templates */ 222/* OCSP_RESPONSE templates */
103 223
@@ -106,28 +226,124 @@ ASN1_SEQUENCE(OCSP_RESPBYTES) = {
106 ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING) 226 ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING)
107} ASN1_SEQUENCE_END(OCSP_RESPBYTES) 227} ASN1_SEQUENCE_END(OCSP_RESPBYTES)
108 228
109IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPBYTES) 229
230OCSP_RESPBYTES *
231d2i_OCSP_RESPBYTES(OCSP_RESPBYTES **a, const unsigned char **in, long len)
232{
233 return (OCSP_RESPBYTES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
234 &OCSP_RESPBYTES_it);
235}
236
237int
238i2d_OCSP_RESPBYTES(OCSP_RESPBYTES *a, unsigned char **out)
239{
240 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPBYTES_it);
241}
242
243OCSP_RESPBYTES *
244OCSP_RESPBYTES_new(void)
245{
246 return (OCSP_RESPBYTES *)ASN1_item_new(&OCSP_RESPBYTES_it);
247}
248
249void
250OCSP_RESPBYTES_free(OCSP_RESPBYTES *a)
251{
252 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it);
253}
110 254
111ASN1_SEQUENCE(OCSP_RESPONSE) = { 255ASN1_SEQUENCE(OCSP_RESPONSE) = {
112 ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED), 256 ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED),
113 ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0) 257 ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0)
114} ASN1_SEQUENCE_END(OCSP_RESPONSE) 258} ASN1_SEQUENCE_END(OCSP_RESPONSE)
115 259
116IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPONSE) 260
261OCSP_RESPONSE *
262d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len)
263{
264 return (OCSP_RESPONSE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
265 &OCSP_RESPONSE_it);
266}
267
268int
269i2d_OCSP_RESPONSE(OCSP_RESPONSE *a, unsigned char **out)
270{
271 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPONSE_it);
272}
273
274OCSP_RESPONSE *
275OCSP_RESPONSE_new(void)
276{
277 return (OCSP_RESPONSE *)ASN1_item_new(&OCSP_RESPONSE_it);
278}
279
280void
281OCSP_RESPONSE_free(OCSP_RESPONSE *a)
282{
283 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it);
284}
117 285
118ASN1_CHOICE(OCSP_RESPID) = { 286ASN1_CHOICE(OCSP_RESPID) = {
119 ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1), 287 ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1),
120 ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2) 288 ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2)
121} ASN1_CHOICE_END(OCSP_RESPID) 289} ASN1_CHOICE_END(OCSP_RESPID)
122 290
123IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPID) 291
292OCSP_RESPID *
293d2i_OCSP_RESPID(OCSP_RESPID **a, const unsigned char **in, long len)
294{
295 return (OCSP_RESPID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
296 &OCSP_RESPID_it);
297}
298
299int
300i2d_OCSP_RESPID(OCSP_RESPID *a, unsigned char **out)
301{
302 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPID_it);
303}
304
305OCSP_RESPID *
306OCSP_RESPID_new(void)
307{
308 return (OCSP_RESPID *)ASN1_item_new(&OCSP_RESPID_it);
309}
310
311void
312OCSP_RESPID_free(OCSP_RESPID *a)
313{
314 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it);
315}
124 316
125ASN1_SEQUENCE(OCSP_REVOKEDINFO) = { 317ASN1_SEQUENCE(OCSP_REVOKEDINFO) = {
126 ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME), 318 ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME),
127 ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0) 319 ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0)
128} ASN1_SEQUENCE_END(OCSP_REVOKEDINFO) 320} ASN1_SEQUENCE_END(OCSP_REVOKEDINFO)
129 321
130IMPLEMENT_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) 322
323OCSP_REVOKEDINFO *
324d2i_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO **a, const unsigned char **in, long len)
325{
326 return (OCSP_REVOKEDINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
327 &OCSP_REVOKEDINFO_it);
328}
329
330int
331i2d_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO *a, unsigned char **out)
332{
333 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REVOKEDINFO_it);
334}
335
336OCSP_REVOKEDINFO *
337OCSP_REVOKEDINFO_new(void)
338{
339 return (OCSP_REVOKEDINFO *)ASN1_item_new(&OCSP_REVOKEDINFO_it);
340}
341
342void
343OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a)
344{
345 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it);
346}
131 347
132ASN1_CHOICE(OCSP_CERTSTATUS) = { 348ASN1_CHOICE(OCSP_CERTSTATUS) = {
133 ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0), 349 ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0),
@@ -135,7 +351,31 @@ ASN1_CHOICE(OCSP_CERTSTATUS) = {
135 ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2) 351 ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2)
136} ASN1_CHOICE_END(OCSP_CERTSTATUS) 352} ASN1_CHOICE_END(OCSP_CERTSTATUS)
137 353
138IMPLEMENT_ASN1_FUNCTIONS(OCSP_CERTSTATUS) 354
355OCSP_CERTSTATUS *
356d2i_OCSP_CERTSTATUS(OCSP_CERTSTATUS **a, const unsigned char **in, long len)
357{
358 return (OCSP_CERTSTATUS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
359 &OCSP_CERTSTATUS_it);
360}
361
362int
363i2d_OCSP_CERTSTATUS(OCSP_CERTSTATUS *a, unsigned char **out)
364{
365 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTSTATUS_it);
366}
367
368OCSP_CERTSTATUS *
369OCSP_CERTSTATUS_new(void)
370{
371 return (OCSP_CERTSTATUS *)ASN1_item_new(&OCSP_CERTSTATUS_it);
372}
373
374void
375OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a)
376{
377 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it);
378}
139 379
140ASN1_SEQUENCE(OCSP_SINGLERESP) = { 380ASN1_SEQUENCE(OCSP_SINGLERESP) = {
141 ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID), 381 ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID),
@@ -145,7 +385,31 @@ ASN1_SEQUENCE(OCSP_SINGLERESP) = {
145 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1) 385 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1)
146} ASN1_SEQUENCE_END(OCSP_SINGLERESP) 386} ASN1_SEQUENCE_END(OCSP_SINGLERESP)
147 387
148IMPLEMENT_ASN1_FUNCTIONS(OCSP_SINGLERESP) 388
389OCSP_SINGLERESP *
390d2i_OCSP_SINGLERESP(OCSP_SINGLERESP **a, const unsigned char **in, long len)
391{
392 return (OCSP_SINGLERESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
393 &OCSP_SINGLERESP_it);
394}
395
396int
397i2d_OCSP_SINGLERESP(OCSP_SINGLERESP *a, unsigned char **out)
398{
399 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SINGLERESP_it);
400}
401
402OCSP_SINGLERESP *
403OCSP_SINGLERESP_new(void)
404{
405 return (OCSP_SINGLERESP *)ASN1_item_new(&OCSP_SINGLERESP_it);
406}
407
408void
409OCSP_SINGLERESP_free(OCSP_SINGLERESP *a)
410{
411 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it);
412}
149 413
150ASN1_SEQUENCE(OCSP_RESPDATA) = { 414ASN1_SEQUENCE(OCSP_RESPDATA) = {
151 ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0), 415 ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0),
@@ -155,7 +419,31 @@ ASN1_SEQUENCE(OCSP_RESPDATA) = {
155 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1) 419 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1)
156} ASN1_SEQUENCE_END(OCSP_RESPDATA) 420} ASN1_SEQUENCE_END(OCSP_RESPDATA)
157 421
158IMPLEMENT_ASN1_FUNCTIONS(OCSP_RESPDATA) 422
423OCSP_RESPDATA *
424d2i_OCSP_RESPDATA(OCSP_RESPDATA **a, const unsigned char **in, long len)
425{
426 return (OCSP_RESPDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
427 &OCSP_RESPDATA_it);
428}
429
430int
431i2d_OCSP_RESPDATA(OCSP_RESPDATA *a, unsigned char **out)
432{
433 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPDATA_it);
434}
435
436OCSP_RESPDATA *
437OCSP_RESPDATA_new(void)
438{
439 return (OCSP_RESPDATA *)ASN1_item_new(&OCSP_RESPDATA_it);
440}
441
442void
443OCSP_RESPDATA_free(OCSP_RESPDATA *a)
444{
445 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it);
446}
159 447
160ASN1_SEQUENCE(OCSP_BASICRESP) = { 448ASN1_SEQUENCE(OCSP_BASICRESP) = {
161 ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA), 449 ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA),
@@ -164,7 +452,31 @@ ASN1_SEQUENCE(OCSP_BASICRESP) = {
164 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0) 452 ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0)
165} ASN1_SEQUENCE_END(OCSP_BASICRESP) 453} ASN1_SEQUENCE_END(OCSP_BASICRESP)
166 454
167IMPLEMENT_ASN1_FUNCTIONS(OCSP_BASICRESP) 455
456OCSP_BASICRESP *
457d2i_OCSP_BASICRESP(OCSP_BASICRESP **a, const unsigned char **in, long len)
458{
459 return (OCSP_BASICRESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
460 &OCSP_BASICRESP_it);
461}
462
463int
464i2d_OCSP_BASICRESP(OCSP_BASICRESP *a, unsigned char **out)
465{
466 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_BASICRESP_it);
467}
468
469OCSP_BASICRESP *
470OCSP_BASICRESP_new(void)
471{
472 return (OCSP_BASICRESP *)ASN1_item_new(&OCSP_BASICRESP_it);
473}
474
475void
476OCSP_BASICRESP_free(OCSP_BASICRESP *a)
477{
478 ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it);
479}
168 480
169ASN1_SEQUENCE(OCSP_CRLID) = { 481ASN1_SEQUENCE(OCSP_CRLID) = {
170 ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0), 482 ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0),
@@ -172,11 +484,59 @@ ASN1_SEQUENCE(OCSP_CRLID) = {
172 ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2) 484 ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2)
173} ASN1_SEQUENCE_END(OCSP_CRLID) 485} ASN1_SEQUENCE_END(OCSP_CRLID)
174 486
175IMPLEMENT_ASN1_FUNCTIONS(OCSP_CRLID) 487
488OCSP_CRLID *
489d2i_OCSP_CRLID(OCSP_CRLID **a, const unsigned char **in, long len)
490{
491 return (OCSP_CRLID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
492 &OCSP_CRLID_it);
493}
494
495int
496i2d_OCSP_CRLID(OCSP_CRLID *a, unsigned char **out)
497{
498 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CRLID_it);
499}
500
501OCSP_CRLID *
502OCSP_CRLID_new(void)
503{
504 return (OCSP_CRLID *)ASN1_item_new(&OCSP_CRLID_it);
505}
506
507void
508OCSP_CRLID_free(OCSP_CRLID *a)
509{
510 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it);
511}
176 512
177ASN1_SEQUENCE(OCSP_SERVICELOC) = { 513ASN1_SEQUENCE(OCSP_SERVICELOC) = {
178 ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME), 514 ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME),
179 ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION) 515 ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION)
180} ASN1_SEQUENCE_END(OCSP_SERVICELOC) 516} ASN1_SEQUENCE_END(OCSP_SERVICELOC)
181 517
182IMPLEMENT_ASN1_FUNCTIONS(OCSP_SERVICELOC) 518
519OCSP_SERVICELOC *
520d2i_OCSP_SERVICELOC(OCSP_SERVICELOC **a, const unsigned char **in, long len)
521{
522 return (OCSP_SERVICELOC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
523 &OCSP_SERVICELOC_it);
524}
525
526int
527i2d_OCSP_SERVICELOC(OCSP_SERVICELOC *a, unsigned char **out)
528{
529 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SERVICELOC_it);
530}
531
532OCSP_SERVICELOC *
533OCSP_SERVICELOC_new(void)
534{
535 return (OCSP_SERVICELOC *)ASN1_item_new(&OCSP_SERVICELOC_it);
536}
537
538void
539OCSP_SERVICELOC_free(OCSP_SERVICELOC *a)
540{
541 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SERVICELOC_it);
542}
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_asn.c b/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
index 5b3285ebe2..8e6ee29cb7 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_asn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_asn.c,v 1.6 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: p12_asn.c,v 1.7 2015/02/09 16:04:46 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 */
@@ -69,7 +69,31 @@ ASN1_SEQUENCE(PKCS12) = {
69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA) 69 ASN1_OPT(PKCS12, mac, PKCS12_MAC_DATA)
70} ASN1_SEQUENCE_END(PKCS12) 70} ASN1_SEQUENCE_END(PKCS12)
71 71
72IMPLEMENT_ASN1_FUNCTIONS(PKCS12) 72
73PKCS12 *
74d2i_PKCS12(PKCS12 **a, const unsigned char **in, long len)
75{
76 return (PKCS12 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
77 &PKCS12_it);
78}
79
80int
81i2d_PKCS12(PKCS12 *a, unsigned char **out)
82{
83 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_it);
84}
85
86PKCS12 *
87PKCS12_new(void)
88{
89 return (PKCS12 *)ASN1_item_new(&PKCS12_it);
90}
91
92void
93PKCS12_free(PKCS12 *a)
94{
95 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_it);
96}
73 97
74ASN1_SEQUENCE(PKCS12_MAC_DATA) = { 98ASN1_SEQUENCE(PKCS12_MAC_DATA) = {
75 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG), 99 ASN1_SIMPLE(PKCS12_MAC_DATA, dinfo, X509_SIG),
@@ -77,7 +101,31 @@ ASN1_SEQUENCE(PKCS12_MAC_DATA) = {
77 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER) 101 ASN1_OPT(PKCS12_MAC_DATA, iter, ASN1_INTEGER)
78} ASN1_SEQUENCE_END(PKCS12_MAC_DATA) 102} ASN1_SEQUENCE_END(PKCS12_MAC_DATA)
79 103
80IMPLEMENT_ASN1_FUNCTIONS(PKCS12_MAC_DATA) 104
105PKCS12_MAC_DATA *
106d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, const unsigned char **in, long len)
107{
108 return (PKCS12_MAC_DATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
109 &PKCS12_MAC_DATA_it);
110}
111
112int
113i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **out)
114{
115 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_MAC_DATA_it);
116}
117
118PKCS12_MAC_DATA *
119PKCS12_MAC_DATA_new(void)
120{
121 return (PKCS12_MAC_DATA *)ASN1_item_new(&PKCS12_MAC_DATA_it);
122}
123
124void
125PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a)
126{
127 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_MAC_DATA_it);
128}
81 129
82ASN1_ADB_TEMPLATE(bag_default) = 130ASN1_ADB_TEMPLATE(bag_default) =
83 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0); 131 ASN1_EXP(PKCS12_BAGS, value.other, ASN1_ANY, 0);
@@ -96,7 +144,31 @@ ASN1_SEQUENCE(PKCS12_BAGS) = {
96 ASN1_ADB_OBJECT(PKCS12_BAGS), 144 ASN1_ADB_OBJECT(PKCS12_BAGS),
97} ASN1_SEQUENCE_END(PKCS12_BAGS) 145} ASN1_SEQUENCE_END(PKCS12_BAGS)
98 146
99IMPLEMENT_ASN1_FUNCTIONS(PKCS12_BAGS) 147
148PKCS12_BAGS *
149d2i_PKCS12_BAGS(PKCS12_BAGS **a, const unsigned char **in, long len)
150{
151 return (PKCS12_BAGS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
152 &PKCS12_BAGS_it);
153}
154
155int
156i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **out)
157{
158 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_BAGS_it);
159}
160
161PKCS12_BAGS *
162PKCS12_BAGS_new(void)
163{
164 return (PKCS12_BAGS *)ASN1_item_new(&PKCS12_BAGS_it);
165}
166
167void
168PKCS12_BAGS_free(PKCS12_BAGS *a)
169{
170 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_BAGS_it);
171}
100 172
101ASN1_ADB_TEMPLATE(safebag_default) = 173ASN1_ADB_TEMPLATE(safebag_default) =
102 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0); 174 ASN1_EXP(PKCS12_SAFEBAG, value.other, ASN1_ANY, 0);
@@ -122,7 +194,31 @@ ASN1_SEQUENCE(PKCS12_SAFEBAG) = {
122 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE) 194 ASN1_SET_OF_OPT(PKCS12_SAFEBAG, attrib, X509_ATTRIBUTE)
123} ASN1_SEQUENCE_END(PKCS12_SAFEBAG) 195} ASN1_SEQUENCE_END(PKCS12_SAFEBAG)
124 196
125IMPLEMENT_ASN1_FUNCTIONS(PKCS12_SAFEBAG) 197
198PKCS12_SAFEBAG *
199d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, const unsigned char **in, long len)
200{
201 return (PKCS12_SAFEBAG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
202 &PKCS12_SAFEBAG_it);
203}
204
205int
206i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **out)
207{
208 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS12_SAFEBAG_it);
209}
210
211PKCS12_SAFEBAG *
212PKCS12_SAFEBAG_new(void)
213{
214 return (PKCS12_SAFEBAG *)ASN1_item_new(&PKCS12_SAFEBAG_it);
215}
216
217void
218PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a)
219{
220 ASN1_item_free((ASN1_VALUE *)a, &PKCS12_SAFEBAG_it);
221}
126 222
127/* SEQUENCE OF SafeBag */ 223/* SEQUENCE OF SafeBag */
128ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) = 224ASN1_ITEM_TEMPLATE(PKCS12_SAFEBAGS) =
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c b/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
index 5191eb5076..2522a1ae6c 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pk7_asn1.c,v 1.7 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: pk7_asn1.c,v 1.8 2015/02/09 16:04:46 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 */
@@ -116,7 +116,31 @@ ASN1_NDEF_SEQUENCE_cb(PKCS7, pk7_cb) = {
116 ASN1_ADB_OBJECT(PKCS7) 116 ASN1_ADB_OBJECT(PKCS7)
117}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7) 117}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7)
118 118
119IMPLEMENT_ASN1_FUNCTIONS(PKCS7) 119
120PKCS7 *
121d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len)
122{
123 return (PKCS7 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
124 &PKCS7_it);
125}
126
127int
128i2d_PKCS7(PKCS7 *a, unsigned char **out)
129{
130 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_it);
131}
132
133PKCS7 *
134PKCS7_new(void)
135{
136 return (PKCS7 *)ASN1_item_new(&PKCS7_it);
137}
138
139void
140PKCS7_free(PKCS7 *a)
141{
142 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_it);
143}
120IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7) 144IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7)
121IMPLEMENT_ASN1_DUP_FUNCTION(PKCS7) 145IMPLEMENT_ASN1_DUP_FUNCTION(PKCS7)
122 146
@@ -129,7 +153,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_SIGNED) = {
129 ASN1_SET_OF(PKCS7_SIGNED, signer_info, PKCS7_SIGNER_INFO) 153 ASN1_SET_OF(PKCS7_SIGNED, signer_info, PKCS7_SIGNER_INFO)
130} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGNED) 154} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGNED)
131 155
132IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNED) 156
157PKCS7_SIGNED *
158d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, const unsigned char **in, long len)
159{
160 return (PKCS7_SIGNED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
161 &PKCS7_SIGNED_it);
162}
163
164int
165i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **out)
166{
167 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGNED_it);
168}
169
170PKCS7_SIGNED *
171PKCS7_SIGNED_new(void)
172{
173 return (PKCS7_SIGNED *)ASN1_item_new(&PKCS7_SIGNED_it);
174}
175
176void
177PKCS7_SIGNED_free(PKCS7_SIGNED *a)
178{
179 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGNED_it);
180}
133 181
134/* Minor tweak to operation: free up EVP_PKEY */ 182/* Minor tweak to operation: free up EVP_PKEY */
135static int 183static int
@@ -159,14 +207,62 @@ ASN1_SEQUENCE_cb(PKCS7_SIGNER_INFO, si_cb) = {
159 ASN1_IMP_SET_OF_OPT(PKCS7_SIGNER_INFO, unauth_attr, X509_ATTRIBUTE, 1) 207 ASN1_IMP_SET_OF_OPT(PKCS7_SIGNER_INFO, unauth_attr, X509_ATTRIBUTE, 1)
160} ASN1_SEQUENCE_END_cb(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) 208} ASN1_SEQUENCE_END_cb(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO)
161 209
162IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) 210
211PKCS7_SIGNER_INFO *
212d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **a, const unsigned char **in, long len)
213{
214 return (PKCS7_SIGNER_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
215 &PKCS7_SIGNER_INFO_it);
216}
217
218int
219i2d_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO *a, unsigned char **out)
220{
221 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGNER_INFO_it);
222}
223
224PKCS7_SIGNER_INFO *
225PKCS7_SIGNER_INFO_new(void)
226{
227 return (PKCS7_SIGNER_INFO *)ASN1_item_new(&PKCS7_SIGNER_INFO_it);
228}
229
230void
231PKCS7_SIGNER_INFO_free(PKCS7_SIGNER_INFO *a)
232{
233 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGNER_INFO_it);
234}
163 235
164ASN1_SEQUENCE(PKCS7_ISSUER_AND_SERIAL) = { 236ASN1_SEQUENCE(PKCS7_ISSUER_AND_SERIAL) = {
165 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, issuer, X509_NAME), 237 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, issuer, X509_NAME),
166 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, serial, ASN1_INTEGER) 238 ASN1_SIMPLE(PKCS7_ISSUER_AND_SERIAL, serial, ASN1_INTEGER)
167} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SERIAL) 239} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SERIAL)
168 240
169IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) 241
242PKCS7_ISSUER_AND_SERIAL *
243d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, const unsigned char **in, long len)
244{
245 return (PKCS7_ISSUER_AND_SERIAL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
246 &PKCS7_ISSUER_AND_SERIAL_it);
247}
248
249int
250i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *a, unsigned char **out)
251{
252 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ISSUER_AND_SERIAL_it);
253}
254
255PKCS7_ISSUER_AND_SERIAL *
256PKCS7_ISSUER_AND_SERIAL_new(void)
257{
258 return (PKCS7_ISSUER_AND_SERIAL *)ASN1_item_new(&PKCS7_ISSUER_AND_SERIAL_it);
259}
260
261void
262PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a)
263{
264 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ISSUER_AND_SERIAL_it);
265}
170 266
171ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = { 267ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = {
172 ASN1_SIMPLE(PKCS7_ENVELOPE, version, ASN1_INTEGER), 268 ASN1_SIMPLE(PKCS7_ENVELOPE, version, ASN1_INTEGER),
@@ -174,7 +270,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = {
174 ASN1_SIMPLE(PKCS7_ENVELOPE, enc_data, PKCS7_ENC_CONTENT) 270 ASN1_SIMPLE(PKCS7_ENVELOPE, enc_data, PKCS7_ENC_CONTENT)
175} ASN1_NDEF_SEQUENCE_END(PKCS7_ENVELOPE) 271} ASN1_NDEF_SEQUENCE_END(PKCS7_ENVELOPE)
176 272
177IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENVELOPE) 273
274PKCS7_ENVELOPE *
275d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, const unsigned char **in, long len)
276{
277 return (PKCS7_ENVELOPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
278 &PKCS7_ENVELOPE_it);
279}
280
281int
282i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *a, unsigned char **out)
283{
284 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENVELOPE_it);
285}
286
287PKCS7_ENVELOPE *
288PKCS7_ENVELOPE_new(void)
289{
290 return (PKCS7_ENVELOPE *)ASN1_item_new(&PKCS7_ENVELOPE_it);
291}
292
293void
294PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a)
295{
296 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENVELOPE_it);
297}
178 298
179/* Minor tweak to operation: free up X509 */ 299/* Minor tweak to operation: free up X509 */
180static int 300static int
@@ -195,7 +315,31 @@ ASN1_SEQUENCE_cb(PKCS7_RECIP_INFO, ri_cb) = {
195 ASN1_SIMPLE(PKCS7_RECIP_INFO, enc_key, ASN1_OCTET_STRING) 315 ASN1_SIMPLE(PKCS7_RECIP_INFO, enc_key, ASN1_OCTET_STRING)
196} ASN1_SEQUENCE_END_cb(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) 316} ASN1_SEQUENCE_END_cb(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO)
197 317
198IMPLEMENT_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) 318
319PKCS7_RECIP_INFO *
320d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a, const unsigned char **in, long len)
321{
322 return (PKCS7_RECIP_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
323 &PKCS7_RECIP_INFO_it);
324}
325
326int
327i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *a, unsigned char **out)
328{
329 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_RECIP_INFO_it);
330}
331
332PKCS7_RECIP_INFO *
333PKCS7_RECIP_INFO_new(void)
334{
335 return (PKCS7_RECIP_INFO *)ASN1_item_new(&PKCS7_RECIP_INFO_it);
336}
337
338void
339PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a)
340{
341 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_RECIP_INFO_it);
342}
199 343
200ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = { 344ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = {
201 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT), 345 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT),
@@ -203,7 +347,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = {
203 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING_NDEF, 0) 347 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING_NDEF, 0)
204} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT) 348} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT)
205 349
206IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) 350
351PKCS7_ENC_CONTENT *
352d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a, const unsigned char **in, long len)
353{
354 return (PKCS7_ENC_CONTENT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
355 &PKCS7_ENC_CONTENT_it);
356}
357
358int
359i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *a, unsigned char **out)
360{
361 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENC_CONTENT_it);
362}
363
364PKCS7_ENC_CONTENT *
365PKCS7_ENC_CONTENT_new(void)
366{
367 return (PKCS7_ENC_CONTENT *)ASN1_item_new(&PKCS7_ENC_CONTENT_it);
368}
369
370void
371PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a)
372{
373 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENC_CONTENT_it);
374}
207 375
208ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = { 376ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = {
209 ASN1_SIMPLE(PKCS7_SIGN_ENVELOPE, version, ASN1_INTEGER), 377 ASN1_SIMPLE(PKCS7_SIGN_ENVELOPE, version, ASN1_INTEGER),
@@ -215,14 +383,62 @@ ASN1_NDEF_SEQUENCE(PKCS7_SIGN_ENVELOPE) = {
215 ASN1_SET_OF(PKCS7_SIGN_ENVELOPE, signer_info, PKCS7_SIGNER_INFO) 383 ASN1_SET_OF(PKCS7_SIGN_ENVELOPE, signer_info, PKCS7_SIGNER_INFO)
216} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGN_ENVELOPE) 384} ASN1_NDEF_SEQUENCE_END(PKCS7_SIGN_ENVELOPE)
217 385
218IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) 386
387PKCS7_SIGN_ENVELOPE *
388d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, const unsigned char **in, long len)
389{
390 return (PKCS7_SIGN_ENVELOPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
391 &PKCS7_SIGN_ENVELOPE_it);
392}
393
394int
395i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **out)
396{
397 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_SIGN_ENVELOPE_it);
398}
399
400PKCS7_SIGN_ENVELOPE *
401PKCS7_SIGN_ENVELOPE_new(void)
402{
403 return (PKCS7_SIGN_ENVELOPE *)ASN1_item_new(&PKCS7_SIGN_ENVELOPE_it);
404}
405
406void
407PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a)
408{
409 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_SIGN_ENVELOPE_it);
410}
219 411
220ASN1_NDEF_SEQUENCE(PKCS7_ENCRYPT) = { 412ASN1_NDEF_SEQUENCE(PKCS7_ENCRYPT) = {
221 ASN1_SIMPLE(PKCS7_ENCRYPT, version, ASN1_INTEGER), 413 ASN1_SIMPLE(PKCS7_ENCRYPT, version, ASN1_INTEGER),
222 ASN1_SIMPLE(PKCS7_ENCRYPT, enc_data, PKCS7_ENC_CONTENT) 414 ASN1_SIMPLE(PKCS7_ENCRYPT, enc_data, PKCS7_ENC_CONTENT)
223} ASN1_NDEF_SEQUENCE_END(PKCS7_ENCRYPT) 415} ASN1_NDEF_SEQUENCE_END(PKCS7_ENCRYPT)
224 416
225IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENCRYPT) 417
418PKCS7_ENCRYPT *
419d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, const unsigned char **in, long len)
420{
421 return (PKCS7_ENCRYPT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
422 &PKCS7_ENCRYPT_it);
423}
424
425int
426i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *a, unsigned char **out)
427{
428 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_ENCRYPT_it);
429}
430
431PKCS7_ENCRYPT *
432PKCS7_ENCRYPT_new(void)
433{
434 return (PKCS7_ENCRYPT *)ASN1_item_new(&PKCS7_ENCRYPT_it);
435}
436
437void
438PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a)
439{
440 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_ENCRYPT_it);
441}
226 442
227ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = { 443ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = {
228 ASN1_SIMPLE(PKCS7_DIGEST, version, ASN1_INTEGER), 444 ASN1_SIMPLE(PKCS7_DIGEST, version, ASN1_INTEGER),
@@ -231,7 +447,31 @@ ASN1_NDEF_SEQUENCE(PKCS7_DIGEST) = {
231 ASN1_SIMPLE(PKCS7_DIGEST, digest, ASN1_OCTET_STRING) 447 ASN1_SIMPLE(PKCS7_DIGEST, digest, ASN1_OCTET_STRING)
232} ASN1_NDEF_SEQUENCE_END(PKCS7_DIGEST) 448} ASN1_NDEF_SEQUENCE_END(PKCS7_DIGEST)
233 449
234IMPLEMENT_ASN1_FUNCTIONS(PKCS7_DIGEST) 450
451PKCS7_DIGEST *
452d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, const unsigned char **in, long len)
453{
454 return (PKCS7_DIGEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
455 &PKCS7_DIGEST_it);
456}
457
458int
459i2d_PKCS7_DIGEST(PKCS7_DIGEST *a, unsigned char **out)
460{
461 return ASN1_item_i2d((ASN1_VALUE *)a, out, &PKCS7_DIGEST_it);
462}
463
464PKCS7_DIGEST *
465PKCS7_DIGEST_new(void)
466{
467 return (PKCS7_DIGEST *)ASN1_item_new(&PKCS7_DIGEST_it);
468}
469
470void
471PKCS7_DIGEST_free(PKCS7_DIGEST *a)
472{
473 ASN1_item_free((ASN1_VALUE *)a, &PKCS7_DIGEST_it);
474}
235 475
236/* Specials for authenticated attributes */ 476/* Specials for authenticated attributes */
237 477
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
index 573b9f8b8d..a75b80fa10 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_asn1.c,v 1.9 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: rsa_asn1.c,v 1.10 2015/02/09 16:04:46 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 */
@@ -105,7 +105,31 @@ ASN1_SEQUENCE(RSA_PSS_PARAMS) = {
105 ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3) 105 ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3)
106} ASN1_SEQUENCE_END(RSA_PSS_PARAMS) 106} ASN1_SEQUENCE_END(RSA_PSS_PARAMS)
107 107
108IMPLEMENT_ASN1_FUNCTIONS(RSA_PSS_PARAMS) 108
109RSA_PSS_PARAMS *
110d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len)
111{
112 return (RSA_PSS_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
113 &RSA_PSS_PARAMS_it);
114}
115
116int
117i2d_RSA_PSS_PARAMS(RSA_PSS_PARAMS *a, unsigned char **out)
118{
119 return ASN1_item_i2d((ASN1_VALUE *)a, out, &RSA_PSS_PARAMS_it);
120}
121
122RSA_PSS_PARAMS *
123RSA_PSS_PARAMS_new(void)
124{
125 return (RSA_PSS_PARAMS *)ASN1_item_new(&RSA_PSS_PARAMS_it);
126}
127
128void
129RSA_PSS_PARAMS_free(RSA_PSS_PARAMS *a)
130{
131 ASN1_item_free((ASN1_VALUE *)a, &RSA_PSS_PARAMS_it);
132}
109 133
110IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPrivateKey, RSAPrivateKey) 134IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPrivateKey, RSAPrivateKey)
111 135