summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2016-09-04 16:12:33 +0000
committerjsing <>2016-09-04 16:12:33 +0000
commitc29e0e7bf4ee4f4a903f455070be2bcaec93ff48 (patch)
tree591ddd28ce7f4122267861faeff1465838eed4f3 /src
parent255f36cd6161a4a0acf9be1147be1341488d11f2 (diff)
downloadopenbsd-c29e0e7bf4ee4f4a903f455070be2bcaec93ff48.tar.gz
openbsd-c29e0e7bf4ee4f4a903f455070be2bcaec93ff48.tar.bz2
openbsd-c29e0e7bf4ee4f4a903f455070be2bcaec93ff48.zip
Sort and group functions.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/pem/pem_all.c343
-rw-r--r--src/lib/libcrypto/pem/pem_pk8.c44
-rw-r--r--src/lib/libcrypto/pem/pem_x509.c24
-rw-r--r--src/lib/libcrypto/pem/pem_xaux.c42
-rw-r--r--src/lib/libssl/ssl_sess.c23
5 files changed, 226 insertions, 250 deletions
diff --git a/src/lib/libcrypto/pem/pem_all.c b/src/lib/libcrypto/pem/pem_all.c
index befa37c654..f5211f29a6 100644
--- a/src/lib/libcrypto/pem/pem_all.c
+++ b/src/lib/libcrypto/pem/pem_all.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pem_all.c,v 1.16 2016/09/04 15:53:03 jsing Exp $ */ 1/* $OpenBSD: pem_all.c,v 1.17 2016/09/04 16:10:38 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -142,16 +142,23 @@ static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey);
142 142
143 143
144X509_REQ * 144X509_REQ *
145PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u) 145PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u)
146{ 146{
147 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp, 147 return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp,
148 (void **)x, cb, u); 148 (void **)x, cb, u);
149} 149}
150 150
151int
152PEM_write_X509_REQ(FILE *fp, X509_REQ *x)
153{
154 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp,
155 x, NULL, NULL, 0, NULL, NULL);
156}
157
151X509_REQ * 158X509_REQ *
152PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u) 159PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u)
153{ 160{
154 return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp, 161 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp,
155 (void **)x, cb, u); 162 (void **)x, cb, u);
156} 163}
157 164
@@ -163,13 +170,12 @@ PEM_write_bio_X509_REQ(BIO *bp, X509_REQ *x)
163} 170}
164 171
165int 172int
166PEM_write_X509_REQ(FILE *fp, X509_REQ *x) 173PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x)
167{ 174{
168 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp, 175 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp,
169 x, NULL, NULL, 0, NULL, NULL); 176 x, NULL, NULL, 0, NULL, NULL);
170} 177}
171 178
172
173int 179int
174PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x) 180PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x)
175{ 181{
@@ -177,14 +183,20 @@ PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x)
177 x, NULL, NULL, 0, NULL, NULL); 183 x, NULL, NULL, 0, NULL, NULL);
178} 184}
179 185
186X509_CRL *
187PEM_read_X509_CRL(FILE *fp, X509_CRL **x, pem_password_cb *cb, void *u)
188{
189 return PEM_ASN1_read((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, fp,
190 (void **)x, cb, u);
191}
192
180int 193int
181PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x) 194PEM_write_X509_CRL(FILE *fp, X509_CRL *x)
182{ 195{
183 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp, 196 return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp,
184 x, NULL, NULL, 0, NULL, NULL); 197 x, NULL, NULL, 0, NULL, NULL);
185} 198}
186 199
187
188X509_CRL * 200X509_CRL *
189PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u) 201PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u)
190{ 202{
@@ -192,13 +204,6 @@ PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u)
192 (void **)x, cb, u); 204 (void **)x, cb, u);
193} 205}
194 206
195X509_CRL *
196PEM_read_X509_CRL(FILE *fp, X509_CRL **x, pem_password_cb *cb, void *u)
197{
198 return PEM_ASN1_read((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, fp,
199 (void **)x, cb, u);
200}
201
202int 207int
203PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x) 208PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x)
204{ 209{
@@ -206,14 +211,20 @@ PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x)
206 x, NULL, NULL, 0, NULL, NULL); 211 x, NULL, NULL, 0, NULL, NULL);
207} 212}
208 213
214PKCS7 *
215PEM_read_PKCS7(FILE *fp, PKCS7 **x, pem_password_cb *cb, void *u)
216{
217 return PEM_ASN1_read((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, fp,
218 (void **)x, cb, u);
219}
220
209int 221int
210PEM_write_X509_CRL(FILE *fp, X509_CRL *x) 222PEM_write_PKCS7(FILE *fp, PKCS7 *x)
211{ 223{
212 return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp, 224 return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp,
213 x, NULL, NULL, 0, NULL, NULL); 225 x, NULL, NULL, 0, NULL, NULL);
214} 226}
215 227
216
217PKCS7 * 228PKCS7 *
218PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u) 229PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u)
219{ 230{
@@ -221,13 +232,6 @@ PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u)
221 (void **)x, cb, u); 232 (void **)x, cb, u);
222} 233}
223 234
224PKCS7 *
225PEM_read_PKCS7(FILE *fp, PKCS7 **x, pem_password_cb *cb, void *u)
226{
227 return PEM_ASN1_read((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, fp,
228 (void **)x, cb, u);
229}
230
231int 235int
232PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x) 236PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x)
233{ 237{
@@ -236,24 +240,23 @@ PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x)
236} 240}
237 241
238int 242int
239PEM_write_PKCS7(FILE *fp, PKCS7 *x) 243PEM_write_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE *x)
240{ 244{
241 return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp, 245 return PEM_ASN1_write((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp,
242 x, NULL, NULL, 0, NULL, NULL); 246 x, NULL, NULL, 0, NULL, NULL);
243} 247}
244 248
245
246NETSCAPE_CERT_SEQUENCE * 249NETSCAPE_CERT_SEQUENCE *
247PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) 250PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u)
248{ 251{
249 return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp, 252 return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp,
250 (void **)x, cb, u); 253 (void **)x, cb, u);
251} 254}
252 255
253NETSCAPE_CERT_SEQUENCE * 256NETSCAPE_CERT_SEQUENCE *
254PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) 257PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u)
255{ 258{
256 return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, 259 return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp,
257 (void **)x, cb, u); 260 (void **)x, cb, u);
258} 261}
259 262
@@ -264,14 +267,6 @@ PEM_write_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE *x)
264 x, NULL, NULL, 0, NULL, NULL); 267 x, NULL, NULL, 0, NULL, NULL);
265} 268}
266 269
267int
268PEM_write_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE *x)
269{
270 return PEM_ASN1_write((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp,
271 x, NULL, NULL, 0, NULL, NULL);
272}
273
274
275#ifndef OPENSSL_NO_RSA 270#ifndef OPENSSL_NO_RSA
276 271
277/* We treat RSA or DSA private keys as a special case. 272/* We treat RSA or DSA private keys as a special case.
@@ -301,26 +296,31 @@ pkey_get_rsa(EVP_PKEY *key, RSA **rsa)
301} 296}
302 297
303RSA * 298RSA *
304PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, void *u) 299PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u)
305{ 300{
306 EVP_PKEY *pktmp; 301 EVP_PKEY *pktmp;
307 302
308 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); 303 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
309 return pkey_get_rsa(pktmp, rsa); 304 return pkey_get_rsa(pktmp, rsa);
310} 305}
311 306
307int
308PEM_write_RSAPrivateKey(FILE *fp, RSA *x, const EVP_CIPHER *enc,
309 unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
310{
311 return PEM_ASN1_write((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, fp,
312 x, enc, kstr, klen, cb, u);
313}
312 314
313RSA * 315RSA *
314PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) 316PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, void *u)
315{ 317{
316 EVP_PKEY *pktmp; 318 EVP_PKEY *pktmp;
317 319
318 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); 320 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u);
319 return pkey_get_rsa(pktmp, rsa); 321 return pkey_get_rsa(pktmp, rsa);
320} 322}
321 323
322
323
324int 324int
325PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, 325PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x,
326 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, 326 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
@@ -330,22 +330,6 @@ PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x,
330 x, enc, kstr, klen, cb, u); 330 x, enc, kstr, klen, cb, u);
331} 331}
332 332
333int
334PEM_write_RSAPrivateKey(FILE *fp, RSA *x, const EVP_CIPHER *enc,
335 unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
336{
337 return PEM_ASN1_write((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, fp,
338 x, enc, kstr, klen, cb, u);
339}
340
341
342RSA *
343PEM_read_bio_RSAPublicKey(BIO *bp, RSA **x, pem_password_cb *cb, void *u)
344{
345 return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp,
346 (void **)x, cb, u);
347}
348
349RSA * 333RSA *
350PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u) 334PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
351{ 335{
@@ -354,13 +338,6 @@ PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
354} 338}
355 339
356int 340int
357PEM_write_bio_RSAPublicKey(BIO *bp, const RSA *x)
358{
359 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp,
360 (void *)x, NULL, NULL, 0, NULL, NULL);
361}
362
363int
364PEM_write_RSAPublicKey(FILE *fp, const RSA *x) 341PEM_write_RSAPublicKey(FILE *fp, const RSA *x)
365{ 342{
366 return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp, 343 return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp,
@@ -368,12 +345,19 @@ PEM_write_RSAPublicKey(FILE *fp, const RSA *x)
368} 345}
369 346
370RSA * 347RSA *
371PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u) 348PEM_read_bio_RSAPublicKey(BIO *bp, RSA **x, pem_password_cb *cb, void *u)
372{ 349{
373 return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, 350 return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp,
374 (void **)x, cb, u); 351 (void **)x, cb, u);
375} 352}
376 353
354int
355PEM_write_bio_RSAPublicKey(BIO *bp, const RSA *x)
356{
357 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp,
358 (void *)x, NULL, NULL, 0, NULL, NULL);
359}
360
377RSA * 361RSA *
378PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u) 362PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
379{ 363{
@@ -382,16 +366,23 @@ PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
382} 366}
383 367
384int 368int
385PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x) 369PEM_write_RSA_PUBKEY(FILE *fp, RSA *x)
386{ 370{
387 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, 371 return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp,
388 x, NULL, NULL, 0, NULL, NULL); 372 x, NULL, NULL, 0, NULL, NULL);
389} 373}
390 374
375RSA *
376PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u)
377{
378 return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp,
379 (void **)x, cb, u);
380}
381
391int 382int
392PEM_write_RSA_PUBKEY(FILE *fp, RSA *x) 383PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x)
393{ 384{
394 return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp, 385 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp,
395 x, NULL, NULL, 0, NULL, NULL); 386 x, NULL, NULL, 0, NULL, NULL);
396} 387}
397 388
@@ -418,24 +409,14 @@ pkey_get_dsa(EVP_PKEY *key, DSA **dsa)
418} 409}
419 410
420DSA * 411DSA *
421PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u) 412PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u)
422{ 413{
423 EVP_PKEY *pktmp; 414 EVP_PKEY *pktmp;
424 415
425 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); 416 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
426 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ 417 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
427} 418}
428 419
429
430int
431PEM_write_bio_DSAPrivateKey(BIO *bp, DSA *x,
432 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
433 void *u)
434{
435 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, bp,
436 x, enc, kstr, klen, cb, u);
437}
438
439int 420int
440PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc, 421PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc,
441 unsigned char *kstr, int klen, pem_password_cb *cb, void *u) 422 unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
@@ -444,12 +425,22 @@ PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc,
444 x, enc, kstr, klen, cb, u); 425 x, enc, kstr, klen, cb, u);
445} 426}
446 427
447
448DSA * 428DSA *
449PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u) 429PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u)
450{ 430{
451 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, 431 EVP_PKEY *pktmp;
452 (void **)x, cb, u); 432
433 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u);
434 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
435}
436
437int
438PEM_write_bio_DSAPrivateKey(BIO *bp, DSA *x,
439 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
440 void *u)
441{
442 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, bp,
443 x, enc, kstr, klen, cb, u);
453} 444}
454 445
455DSA * 446DSA *
@@ -460,35 +451,23 @@ PEM_read_DSA_PUBKEY(FILE *fp, DSA **x, pem_password_cb *cb, void *u)
460} 451}
461 452
462int 453int
463PEM_write_bio_DSA_PUBKEY(BIO *bp, DSA *x)
464{
465 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, bp,
466 x, NULL, NULL, 0, NULL, NULL);
467}
468
469int
470PEM_write_DSA_PUBKEY(FILE *fp, DSA *x) 454PEM_write_DSA_PUBKEY(FILE *fp, DSA *x)
471{ 455{
472 return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp, 456 return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp,
473 x, NULL, NULL, 0, NULL, NULL); 457 x, NULL, NULL, 0, NULL, NULL);
474} 458}
475 459
476 460int
477DSA * 461PEM_write_bio_DSA_PUBKEY(BIO *bp, DSA *x)
478PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u)
479{ 462{
480 EVP_PKEY *pktmp; 463 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, bp,
481 464 x, NULL, NULL, 0, NULL, NULL);
482 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
483 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
484} 465}
485 466
486
487
488DSA * 467DSA *
489PEM_read_bio_DSAparams(BIO *bp, DSA **x, pem_password_cb *cb, void *u) 468PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u)
490{ 469{
491 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, bp, 470 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp,
492 (void **)x, cb, u); 471 (void **)x, cb, u);
493} 472}
494 473
@@ -500,16 +479,23 @@ PEM_read_DSAparams(FILE *fp, DSA **x, pem_password_cb *cb, void *u)
500} 479}
501 480
502int 481int
503PEM_write_bio_DSAparams(BIO *bp, const DSA *x) 482PEM_write_DSAparams(FILE *fp, const DSA *x)
504{ 483{
505 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp, 484 return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp,
506 (void *)x, NULL, NULL, 0, NULL, NULL); 485 (void *)x, NULL, NULL, 0, NULL, NULL);
507} 486}
508 487
488DSA *
489PEM_read_bio_DSAparams(BIO *bp, DSA **x, pem_password_cb *cb, void *u)
490{
491 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, bp,
492 (void **)x, cb, u);
493}
494
509int 495int
510PEM_write_DSAparams(FILE *fp, const DSA *x) 496PEM_write_bio_DSAparams(BIO *bp, const DSA *x)
511{ 497{
512 return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp, 498 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp,
513 (void *)x, NULL, NULL, 0, NULL, NULL); 499 (void *)x, NULL, NULL, 0, NULL, NULL);
514} 500}
515 501
@@ -535,26 +521,24 @@ pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey)
535 return dtmp; 521 return dtmp;
536} 522}
537 523
538EC_KEY * 524EC_GROUP *
539PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u) 525PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u)
540{ 526{
541 EVP_PKEY *pktmp; 527 return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp,
542 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); 528 (void **)x, cb, u);
543 return pkey_get_eckey(pktmp, key); /* will free pktmp */
544} 529}
545 530
546 531int
547EC_GROUP * 532PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x)
548PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u)
549{ 533{
550 return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp, 534 return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp,
551 (void **)x, cb, u); 535 (void *)x, NULL, NULL, 0, NULL, NULL);
552} 536}
553 537
554EC_GROUP * 538EC_GROUP *
555PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u) 539PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u)
556{ 540{
557 return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, 541 return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp,
558 (void **)x, cb, u); 542 (void **)x, cb, u);
559} 543}
560 544
@@ -565,21 +549,13 @@ PEM_write_bio_ECPKParameters(BIO *bp, const EC_GROUP *x)
565 (void *)x, NULL, NULL, 0, NULL, NULL); 549 (void *)x, NULL, NULL, 0, NULL, NULL);
566} 550}
567 551
568int 552EC_KEY *
569PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x) 553PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u)
570{ 554{
571 return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, 555 EVP_PKEY *pktmp;
572 (void *)x, NULL, NULL, 0, NULL, NULL);
573}
574
575 556
576int 557 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
577PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x, 558 return pkey_get_eckey(pktmp, eckey); /* will free pktmp */
578 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
579 void *u)
580{
581 return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, bp,
582 x, enc, kstr, klen, cb, u);
583} 559}
584 560
585int 561int
@@ -590,12 +566,21 @@ PEM_write_ECPrivateKey(FILE *fp, EC_KEY *x, const EVP_CIPHER *enc,
590 x, enc, kstr, klen, cb, u); 566 x, enc, kstr, klen, cb, u);
591} 567}
592 568
593
594EC_KEY * 569EC_KEY *
595PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u) 570PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u)
596{ 571{
597 return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp, 572 EVP_PKEY *pktmp;
598 (void **)x, cb, u); 573 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u);
574 return pkey_get_eckey(pktmp, key); /* will free pktmp */
575}
576
577int
578PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x,
579 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
580 void *u)
581{
582 return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, bp,
583 x, enc, kstr, klen, cb, u);
599} 584}
600 585
601EC_KEY * 586EC_KEY *
@@ -606,42 +591,30 @@ PEM_read_EC_PUBKEY(FILE *fp, EC_KEY **x, pem_password_cb *cb, void *u)
606} 591}
607 592
608int 593int
609PEM_write_bio_EC_PUBKEY(BIO *bp, EC_KEY *x)
610{
611 return PEM_ASN1_write_bio((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, bp,
612 x, NULL, NULL, 0, NULL, NULL);
613}
614
615int
616PEM_write_EC_PUBKEY(FILE *fp, EC_KEY *x) 594PEM_write_EC_PUBKEY(FILE *fp, EC_KEY *x)
617{ 595{
618 return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp, 596 return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp,
619 x, NULL, NULL, 0, NULL, NULL); 597 x, NULL, NULL, 0, NULL, NULL);
620} 598}
621 599
622
623EC_KEY * 600EC_KEY *
624PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u) 601PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u)
625{ 602{
626 EVP_PKEY *pktmp; 603 return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp,
627 604 (void **)x, cb, u);
628 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
629 return pkey_get_eckey(pktmp, eckey); /* will free pktmp */
630} 605}
631 606
607int
608PEM_write_bio_EC_PUBKEY(BIO *bp, EC_KEY *x)
609{
610 return PEM_ASN1_write_bio((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, bp,
611 x, NULL, NULL, 0, NULL, NULL);
612}
632 613
633#endif 614#endif
634 615
635#ifndef OPENSSL_NO_DH 616#ifndef OPENSSL_NO_DH
636 617
637
638DH *
639PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u)
640{
641 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, bp,
642 (void **)x, cb, u);
643}
644
645DH * 618DH *
646PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u) 619PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u)
647{ 620{
@@ -650,29 +623,28 @@ PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u)
650} 623}
651 624
652int 625int
653PEM_write_bio_DHparams(BIO *bp, const DH *x) 626PEM_write_DHparams(FILE *fp, const DH *x)
654{ 627{
655 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp, 628 return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp,
656 (void *)x, NULL, NULL, 0, NULL, NULL); 629 (void *)x, NULL, NULL, 0, NULL, NULL);
657} 630}
658 631
632DH *
633PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u)
634{
635 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, bp,
636 (void **)x, cb, u);
637}
638
659int 639int
660PEM_write_DHparams(FILE *fp, const DH *x) 640PEM_write_bio_DHparams(BIO *bp, const DH *x)
661{ 641{
662 return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp, 642 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp,
663 (void *)x, NULL, NULL, 0, NULL, NULL); 643 (void *)x, NULL, NULL, 0, NULL, NULL);
664} 644}
665 645
666#endif 646#endif
667 647
668
669EVP_PKEY *
670PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
671{
672 return PEM_ASN1_read_bio((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, bp,
673 (void **)x, cb, u);
674}
675
676EVP_PKEY * 648EVP_PKEY *
677PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) 649PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
678{ 650{
@@ -681,15 +653,22 @@ PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
681} 653}
682 654
683int 655int
684PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x) 656PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x)
685{ 657{
686 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp, 658 return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp,
687 x, NULL, NULL, 0, NULL, NULL); 659 x, NULL, NULL, 0, NULL, NULL);
688} 660}
689 661
662EVP_PKEY *
663PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
664{
665 return PEM_ASN1_read_bio((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, bp,
666 (void **)x, cb, u);
667}
668
690int 669int
691PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x) 670PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x)
692{ 671{
693 return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp, 672 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp,
694 x, NULL, NULL, 0, NULL, NULL); 673 x, NULL, NULL, 0, NULL, NULL);
695} 674}
diff --git a/src/lib/libcrypto/pem/pem_pk8.c b/src/lib/libcrypto/pem/pem_pk8.c
index 50aafb7655..4b3578f971 100644
--- a/src/lib/libcrypto/pem/pem_pk8.c
+++ b/src/lib/libcrypto/pem/pem_pk8.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pem_pk8.c,v 1.11 2016/09/04 15:53:03 jsing Exp $ */ 1/* $OpenBSD: pem_pk8.c,v 1.12 2016/09/04 16:10:38 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -250,19 +250,24 @@ d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
250 return ret; 250 return ret;
251} 251}
252 252
253
254
255X509_SIG * 253X509_SIG *
256PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u) 254PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u)
257{ 255{
258 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp, 256 return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp,
259 (void **)x, cb, u); 257 (void **)x, cb, u);
260} 258}
261 259
260int
261PEM_write_PKCS8(FILE *fp, X509_SIG *x)
262{
263 return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp,
264 x, NULL, NULL, 0, NULL, NULL);
265}
266
262X509_SIG * 267X509_SIG *
263PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u) 268PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u)
264{ 269{
265 return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp, 270 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp,
266 (void **)x, cb, u); 271 (void **)x, cb, u);
267} 272}
268 273
@@ -273,10 +278,17 @@ PEM_write_bio_PKCS8(BIO *bp, X509_SIG *x)
273 x, NULL, NULL, 0, NULL, NULL); 278 x, NULL, NULL, 0, NULL, NULL);
274} 279}
275 280
281PKCS8_PRIV_KEY_INFO *
282PEM_read_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u)
283{
284 return PEM_ASN1_read((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp,
285 (void **)x, cb, u);
286}
287
276int 288int
277PEM_write_PKCS8(FILE *fp, X509_SIG *x) 289PEM_write_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO *x)
278{ 290{
279 return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp, 291 return PEM_ASN1_write((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp,
280 x, NULL, NULL, 0, NULL, NULL); 292 x, NULL, NULL, 0, NULL, NULL);
281} 293}
282 294
@@ -287,23 +299,9 @@ PEM_read_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO **x, pem_password_
287 (void **)x, cb, u); 299 (void **)x, cb, u);
288} 300}
289 301
290PKCS8_PRIV_KEY_INFO *
291PEM_read_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u)
292{
293 return PEM_ASN1_read((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp,
294 (void **)x, cb, u);
295}
296
297int 302int
298PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x) 303PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x)
299{ 304{
300 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp, 305 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp,
301 x, NULL, NULL, 0, NULL, NULL); 306 x, NULL, NULL, 0, NULL, NULL);
302} 307}
303
304int
305PEM_write_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO *x)
306{
307 return PEM_ASN1_write((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp,
308 x, NULL, NULL, 0, NULL, NULL);
309}
diff --git a/src/lib/libcrypto/pem/pem_x509.c b/src/lib/libcrypto/pem/pem_x509.c
index 350c48ba9a..f440a9f0aa 100644
--- a/src/lib/libcrypto/pem/pem_x509.c
+++ b/src/lib/libcrypto/pem/pem_x509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pem_x509.c,v 1.7 2016/09/04 15:53:03 jsing Exp $ */ 1/* $OpenBSD: pem_x509.c,v 1.8 2016/09/04 16:10:38 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 2001. 3 * project 2001.
4 */ 4 */
@@ -66,13 +66,6 @@
66 66
67 67
68X509 * 68X509 *
69PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
70{
71 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509, PEM_STRING_X509, bp,
72 (void **)x, cb, u);
73}
74
75X509 *
76PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u) 69PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u)
77{ 70{
78 return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp, 71 return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp,
@@ -80,15 +73,22 @@ PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u)
80} 73}
81 74
82int 75int
83PEM_write_bio_X509(BIO *bp, X509 *x) 76PEM_write_X509(FILE *fp, X509 *x)
84{ 77{
85 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp, 78 return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp,
86 x, NULL, NULL, 0, NULL, NULL); 79 x, NULL, NULL, 0, NULL, NULL);
87} 80}
88 81
82X509 *
83PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
84{
85 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509, PEM_STRING_X509, bp,
86 (void **)x, cb, u);
87}
88
89int 89int
90PEM_write_X509(FILE *fp, X509 *x) 90PEM_write_bio_X509(BIO *bp, X509 *x)
91{ 91{
92 return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp, 92 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp,
93 x, NULL, NULL, 0, NULL, NULL); 93 x, NULL, NULL, 0, NULL, NULL);
94} 94}
diff --git a/src/lib/libcrypto/pem/pem_xaux.c b/src/lib/libcrypto/pem/pem_xaux.c
index f5dfb8476c..0dd81523b5 100644
--- a/src/lib/libcrypto/pem/pem_xaux.c
+++ b/src/lib/libcrypto/pem/pem_xaux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pem_xaux.c,v 1.8 2016/09/04 15:53:03 jsing Exp $ */ 1/* $OpenBSD: pem_xaux.c,v 1.9 2016/09/04 16:10:38 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 2001. 3 * project 2001.
4 */ 4 */
@@ -66,16 +66,23 @@
66 66
67 67
68X509 * 68X509 *
69PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u) 69PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u)
70{ 70{
71 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp, 71 return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp,
72 (void **)x, cb, u); 72 (void **)x, cb, u);
73} 73}
74 74
75int
76PEM_write_X509_AUX(FILE *fp, X509 *x)
77{
78 return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp,
79 x, NULL, NULL, 0, NULL, NULL);
80}
81
75X509 * 82X509 *
76PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u) 83PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
77{ 84{
78 return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp, 85 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp,
79 (void **)x, cb, u); 86 (void **)x, cb, u);
80} 87}
81 88
@@ -86,10 +93,17 @@ PEM_write_bio_X509_AUX(BIO *bp, X509 *x)
86 x, NULL, NULL, 0, NULL, NULL); 93 x, NULL, NULL, 0, NULL, NULL);
87} 94}
88 95
96X509_CERT_PAIR *
97PEM_read_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u)
98{
99 return PEM_ASN1_read((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp,
100 (void **)x, cb, u);
101}
102
89int 103int
90PEM_write_X509_AUX(FILE *fp, X509 *x) 104PEM_write_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR *x)
91{ 105{
92 return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp, 106 return PEM_ASN1_write((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp,
93 x, NULL, NULL, 0, NULL, NULL); 107 x, NULL, NULL, 0, NULL, NULL);
94} 108}
95 109
@@ -100,23 +114,9 @@ PEM_read_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR **x, pem_password_cb *cb, vo
100 (void **)x, cb, u); 114 (void **)x, cb, u);
101} 115}
102 116
103X509_CERT_PAIR *
104PEM_read_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u)
105{
106 return PEM_ASN1_read((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp,
107 (void **)x, cb, u);
108}
109
110int 117int
111PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x) 118PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x)
112{ 119{
113 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp, 120 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp,
114 x, NULL, NULL, 0, NULL, NULL); 121 x, NULL, NULL, 0, NULL, NULL);
115} 122}
116
117int
118PEM_write_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR *x)
119{
120 return PEM_ASN1_write((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp,
121 x, NULL, NULL, 0, NULL, NULL);
122}
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index 3748eff2f7..c2f37b46f2 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_sess.c,v 1.50 2016/09/04 16:11:47 jsing Exp $ */ 1/* $OpenBSD: ssl_sess.c,v 1.51 2016/09/04 16:12:33 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1096,12 +1096,11 @@ SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
1096 ctx->app_verify_cookie_cb = cb; 1096 ctx->app_verify_cookie_cb = cb;
1097} 1097}
1098 1098
1099 1099int
1100SSL_SESSION * 1100PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x)
1101PEM_read_bio_SSL_SESSION(BIO *bp, SSL_SESSION **x, pem_password_cb *cb, void *u)
1102{ 1101{
1103 return PEM_ASN1_read_bio((d2i_of_void *)d2i_SSL_SESSION, PEM_STRING_SSL_SESSION, bp, 1102 return PEM_ASN1_write((i2d_of_void *)i2d_SSL_SESSION, PEM_STRING_SSL_SESSION, fp,
1104 (void **)x, cb, u); 1103 x, NULL, NULL, 0, NULL, NULL);
1105} 1104}
1106 1105
1107SSL_SESSION * 1106SSL_SESSION *
@@ -1111,16 +1110,16 @@ PEM_read_SSL_SESSION(FILE *fp, SSL_SESSION **x, pem_password_cb *cb, void *u)
1111 (void **)x, cb, u); 1110 (void **)x, cb, u);
1112} 1111}
1113 1112
1114int 1113SSL_SESSION *
1115PEM_write_bio_SSL_SESSION(BIO *bp, SSL_SESSION *x) 1114PEM_read_bio_SSL_SESSION(BIO *bp, SSL_SESSION **x, pem_password_cb *cb, void *u)
1116{ 1115{
1117 return PEM_ASN1_write_bio((i2d_of_void *)i2d_SSL_SESSION, PEM_STRING_SSL_SESSION, bp, 1116 return PEM_ASN1_read_bio((d2i_of_void *)d2i_SSL_SESSION, PEM_STRING_SSL_SESSION, bp,
1118 x, NULL, NULL, 0, NULL, NULL); 1117 (void **)x, cb, u);
1119} 1118}
1120 1119
1121int 1120int
1122PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x) 1121PEM_write_bio_SSL_SESSION(BIO *bp, SSL_SESSION *x)
1123{ 1122{
1124 return PEM_ASN1_write((i2d_of_void *)i2d_SSL_SESSION, PEM_STRING_SSL_SESSION, fp, 1123 return PEM_ASN1_write_bio((i2d_of_void *)i2d_SSL_SESSION, PEM_STRING_SSL_SESSION, bp,
1125 x, NULL, NULL, 0, NULL, NULL); 1124 x, NULL, NULL, 0, NULL, NULL);
1126} 1125}