summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2016-09-04 15:53:03 +0000
committerjsing <>2016-09-04 15:53:03 +0000
commit04eb134ce1ed30093ff08d9ef481d7de69068a52 (patch)
tree6b84449056c3649980487f20cff5536ddd248a74 /src
parent20323935e1006deec963ad00e5d00972d7ade3f1 (diff)
downloadopenbsd-04eb134ce1ed30093ff08d9ef481d7de69068a52.tar.gz
openbsd-04eb134ce1ed30093ff08d9ef481d7de69068a52.tar.bz2
openbsd-04eb134ce1ed30093ff08d9ef481d7de69068a52.zip
Expand IMPLEMENT_PEM macros.
No change in generated assembly.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/pem/pem_all.c422
-rw-r--r--src/lib/libcrypto/pem/pem_pk8.c61
-rw-r--r--src/lib/libcrypto/pem/pem_x509.c31
-rw-r--r--src/lib/libcrypto/pem/pem_xaux.c61
4 files changed, 545 insertions, 30 deletions
diff --git a/src/lib/libcrypto/pem/pem_all.c b/src/lib/libcrypto/pem/pem_all.c
index 7df917b01c..befa37c654 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.15 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: pem_all.c,v 1.16 2016/09/04 15:53:03 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 *
@@ -140,16 +140,136 @@ static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa);
140static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey); 140static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey);
141#endif 141#endif
142 142
143IMPLEMENT_PEM_rw(X509_REQ, X509_REQ, PEM_STRING_X509_REQ, X509_REQ)
144 143
145IMPLEMENT_PEM_write(X509_REQ_NEW, X509_REQ, PEM_STRING_X509_REQ_OLD, X509_REQ) 144X509_REQ *
145PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u)
146{
147 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp,
148 (void **)x, cb, u);
149}
150
151X509_REQ *
152PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u)
153{
154 return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp,
155 (void **)x, cb, u);
156}
146 157
147IMPLEMENT_PEM_rw(X509_CRL, X509_CRL, PEM_STRING_X509_CRL, X509_CRL) 158int
159PEM_write_bio_X509_REQ(BIO *bp, X509_REQ *x)
160{
161 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, bp,
162 x, NULL, NULL, 0, NULL, NULL);
163}
148 164
149IMPLEMENT_PEM_rw(PKCS7, PKCS7, PEM_STRING_PKCS7, PKCS7) 165int
166PEM_write_X509_REQ(FILE *fp, X509_REQ *x)
167{
168 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp,
169 x, NULL, NULL, 0, NULL, NULL);
170}
150 171
151IMPLEMENT_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE, 172
152 PEM_STRING_X509, NETSCAPE_CERT_SEQUENCE) 173int
174PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x)
175{
176 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, bp,
177 x, NULL, NULL, 0, NULL, NULL);
178}
179
180int
181PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x)
182{
183 return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp,
184 x, NULL, NULL, 0, NULL, NULL);
185}
186
187
188X509_CRL *
189PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u)
190{
191 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, bp,
192 (void **)x, cb, u);
193}
194
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
203PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x)
204{
205 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, bp,
206 x, NULL, NULL, 0, NULL, NULL);
207}
208
209int
210PEM_write_X509_CRL(FILE *fp, X509_CRL *x)
211{
212 return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp,
213 x, NULL, NULL, 0, NULL, NULL);
214}
215
216
217PKCS7 *
218PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u)
219{
220 return PEM_ASN1_read_bio((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, bp,
221 (void **)x, cb, u);
222}
223
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
232PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x)
233{
234 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, bp,
235 x, NULL, NULL, 0, NULL, NULL);
236}
237
238int
239PEM_write_PKCS7(FILE *fp, PKCS7 *x)
240{
241 return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp,
242 x, NULL, NULL, 0, NULL, NULL);
243}
244
245
246NETSCAPE_CERT_SEQUENCE *
247PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u)
248{
249 return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp,
250 (void **)x, cb, u);
251}
252
253NETSCAPE_CERT_SEQUENCE *
254PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u)
255{
256 return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp,
257 (void **)x, cb, u);
258}
259
260int
261PEM_write_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE *x)
262{
263 return PEM_ASN1_write_bio((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp,
264 x, NULL, NULL, 0, NULL, NULL);
265}
266
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}
153 273
154 274
155#ifndef OPENSSL_NO_RSA 275#ifndef OPENSSL_NO_RSA
@@ -200,10 +320,80 @@ PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u)
200} 320}
201 321
202 322
203IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, RSAPrivateKey)
204 323
205IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey) 324int
206IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY) 325PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x,
326 const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb,
327 void *u)
328{
329 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, bp,
330 x, enc, kstr, klen, cb, u);
331}
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 *
350PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
351{
352 return PEM_ASN1_read((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp,
353 (void **)x, cb, u);
354}
355
356int
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)
365{
366 return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp,
367 (void *)x, NULL, NULL, 0, NULL, NULL);
368}
369
370RSA *
371PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u)
372{
373 return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp,
374 (void **)x, cb, u);
375}
376
377RSA *
378PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u)
379{
380 return PEM_ASN1_read((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, fp,
381 (void **)x, cb, u);
382}
383
384int
385PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x)
386{
387 return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp,
388 x, NULL, NULL, 0, NULL, NULL);
389}
390
391int
392PEM_write_RSA_PUBKEY(FILE *fp, RSA *x)
393{
394 return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp,
395 x, NULL, NULL, 0, NULL, NULL);
396}
207 397
208#endif 398#endif
209 399
@@ -236,9 +426,52 @@ PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u)
236 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ 426 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
237} 427}
238 428
239IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey)
240 429
241IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) 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
440PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc,
441 unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
442{
443 return PEM_ASN1_write((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, fp,
444 x, enc, kstr, klen, cb, u);
445}
446
447
448DSA *
449PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u)
450{
451 return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp,
452 (void **)x, cb, u);
453}
454
455DSA *
456PEM_read_DSA_PUBKEY(FILE *fp, DSA **x, pem_password_cb *cb, void *u)
457{
458 return PEM_ASN1_read((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, fp,
459 (void **)x, cb, u);
460}
461
462int
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)
471{
472 return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp,
473 x, NULL, NULL, 0, NULL, NULL);
474}
242 475
243 476
244DSA * 477DSA *
@@ -251,7 +484,34 @@ PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u)
251} 484}
252 485
253 486
254IMPLEMENT_PEM_rw_const(DSAparams, DSA, PEM_STRING_DSAPARAMS, DSAparams) 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
495DSA *
496PEM_read_DSAparams(FILE *fp, DSA **x, pem_password_cb *cb, void *u)
497{
498 return PEM_ASN1_read((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, fp,
499 (void **)x, cb, u);
500}
501
502int
503PEM_write_bio_DSAparams(BIO *bp, const DSA *x)
504{
505 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp,
506 (void *)x, NULL, NULL, 0, NULL, NULL);
507}
508
509int
510PEM_write_DSAparams(FILE *fp, const DSA *x)
511{
512 return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp,
513 (void *)x, NULL, NULL, 0, NULL, NULL);
514}
255 515
256#endif 516#endif
257 517
@@ -283,13 +543,81 @@ PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u)
283 return pkey_get_eckey(pktmp, key); /* will free pktmp */ 543 return pkey_get_eckey(pktmp, key); /* will free pktmp */
284} 544}
285 545
286IMPLEMENT_PEM_rw_const(ECPKParameters, EC_GROUP, PEM_STRING_ECPARAMETERS,
287 ECPKParameters)
288 546
289IMPLEMENT_PEM_write_cb(ECPrivateKey, EC_KEY, PEM_STRING_ECPRIVATEKEY, 547EC_GROUP *
290 ECPrivateKey) 548PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u)
549{
550 return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp,
551 (void **)x, cb, u);
552}
553
554EC_GROUP *
555PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u)
556{
557 return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp,
558 (void **)x, cb, u);
559}
560
561int
562PEM_write_bio_ECPKParameters(BIO *bp, const EC_GROUP *x)
563{
564 return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, bp,
565 (void *)x, NULL, NULL, 0, NULL, NULL);
566}
291 567
292IMPLEMENT_PEM_rw(EC_PUBKEY, EC_KEY, PEM_STRING_PUBLIC, EC_PUBKEY) 568int
569PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x)
570{
571 return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp,
572 (void *)x, NULL, NULL, 0, NULL, NULL);
573}
574
575
576int
577PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x,
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}
584
585int
586PEM_write_ECPrivateKey(FILE *fp, EC_KEY *x, const EVP_CIPHER *enc,
587 unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
588{
589 return PEM_ASN1_write((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, fp,
590 x, enc, kstr, klen, cb, u);
591}
592
593
594EC_KEY *
595PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u)
596{
597 return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp,
598 (void **)x, cb, u);
599}
600
601EC_KEY *
602PEM_read_EC_PUBKEY(FILE *fp, EC_KEY **x, pem_password_cb *cb, void *u)
603{
604 return PEM_ASN1_read((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, fp,
605 (void **)x, cb, u);
606}
607
608int
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)
617{
618 return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp,
619 x, NULL, NULL, 0, NULL, NULL);
620}
293 621
294 622
295EC_KEY * 623EC_KEY *
@@ -306,8 +634,62 @@ PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u)
306 634
307#ifndef OPENSSL_NO_DH 635#ifndef OPENSSL_NO_DH
308 636
309IMPLEMENT_PEM_rw_const(DHparams, DH, PEM_STRING_DHPARAMS, DHparams) 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 *
646PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u)
647{
648 return PEM_ASN1_read((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, fp,
649 (void **)x, cb, u);
650}
651
652int
653PEM_write_bio_DHparams(BIO *bp, const DH *x)
654{
655 return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp,
656 (void *)x, NULL, NULL, 0, NULL, NULL);
657}
658
659int
660PEM_write_DHparams(FILE *fp, const DH *x)
661{
662 return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp,
663 (void *)x, NULL, NULL, 0, NULL, NULL);
664}
310 665
311#endif 666#endif
312 667
313IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY) 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 *
677PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
678{
679 return PEM_ASN1_read((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, fp,
680 (void **)x, cb, u);
681}
682
683int
684PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x)
685{
686 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp,
687 x, NULL, NULL, 0, NULL, NULL);
688}
689
690int
691PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x)
692{
693 return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp,
694 x, NULL, NULL, 0, NULL, NULL);
695}
diff --git a/src/lib/libcrypto/pem/pem_pk8.c b/src/lib/libcrypto/pem/pem_pk8.c
index d02dec1546..50aafb7655 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.10 2015/09/10 15:56:25 jsing Exp $ */ 1/* $OpenBSD: pem_pk8.c,v 1.11 2016/09/04 15:53:03 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 *
@@ -251,6 +251,59 @@ d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
251} 251}
252 252
253 253
254IMPLEMENT_PEM_rw(PKCS8, X509_SIG, PEM_STRING_PKCS8, X509_SIG) 254
255IMPLEMENT_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, 255X509_SIG *
256 PKCS8_PRIV_KEY_INFO) 256PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u)
257{
258 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp,
259 (void **)x, cb, u);
260}
261
262X509_SIG *
263PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u)
264{
265 return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp,
266 (void **)x, cb, u);
267}
268
269int
270PEM_write_bio_PKCS8(BIO *bp, X509_SIG *x)
271{
272 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, bp,
273 x, NULL, NULL, 0, NULL, NULL);
274}
275
276int
277PEM_write_PKCS8(FILE *fp, X509_SIG *x)
278{
279 return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp,
280 x, NULL, NULL, 0, NULL, NULL);
281}
282
283PKCS8_PRIV_KEY_INFO *
284PEM_read_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u)
285{
286 return PEM_ASN1_read_bio((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp,
287 (void **)x, cb, u);
288}
289
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
298PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x)
299{
300 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp,
301 x, NULL, NULL, 0, NULL, NULL);
302}
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 e4b7f1c2c6..350c48ba9a 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.6 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: pem_x509.c,v 1.7 2016/09/04 15:53:03 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 */
@@ -64,4 +64,31 @@
64#include <openssl/pkcs7.h> 64#include <openssl/pkcs7.h>
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66 66
67IMPLEMENT_PEM_rw(X509, X509, PEM_STRING_X509, X509) 67
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)
77{
78 return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp,
79 (void **)x, cb, u);
80}
81
82int
83PEM_write_bio_X509(BIO *bp, X509 *x)
84{
85 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp,
86 x, NULL, NULL, 0, NULL, NULL);
87}
88
89int
90PEM_write_X509(FILE *fp, X509 *x)
91{
92 return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp,
93 x, NULL, NULL, 0, NULL, NULL);
94}
diff --git a/src/lib/libcrypto/pem/pem_xaux.c b/src/lib/libcrypto/pem/pem_xaux.c
index eb76840532..f5dfb8476c 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.7 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: pem_xaux.c,v 1.8 2016/09/04 15:53:03 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 */
@@ -64,6 +64,59 @@
64#include <openssl/pkcs7.h> 64#include <openssl/pkcs7.h>
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66 66
67IMPLEMENT_PEM_rw(X509_AUX, X509, PEM_STRING_X509_TRUSTED, X509_AUX) 67
68IMPLEMENT_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR, PEM_STRING_X509_PAIR, 68X509 *
69 X509_CERT_PAIR) 69PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
70{
71 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp,
72 (void **)x, cb, u);
73}
74
75X509 *
76PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u)
77{
78 return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp,
79 (void **)x, cb, u);
80}
81
82int
83PEM_write_bio_X509_AUX(BIO *bp, X509 *x)
84{
85 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, bp,
86 x, NULL, NULL, 0, NULL, NULL);
87}
88
89int
90PEM_write_X509_AUX(FILE *fp, X509 *x)
91{
92 return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp,
93 x, NULL, NULL, 0, NULL, NULL);
94}
95
96X509_CERT_PAIR *
97PEM_read_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u)
98{
99 return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp,
100 (void **)x, cb, u);
101}
102
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
111PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x)
112{
113 return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp,
114 x, NULL, NULL, 0, NULL, NULL);
115}
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}