summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_pubkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/x_pubkey.c')
-rw-r--r--src/lib/libcrypto/asn1/x_pubkey.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/lib/libcrypto/asn1/x_pubkey.c b/src/lib/libcrypto/asn1/x_pubkey.c
index 4c255d634e..29211b3190 100644
--- a/src/lib/libcrypto/asn1/x_pubkey.c
+++ b/src/lib/libcrypto/asn1/x_pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_pubkey.c,v 1.33 2022/11/26 16:08:50 tb Exp $ */ 1/* $OpenBSD: x_pubkey.c,v 1.34 2023/07/05 21:23:37 beck 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 *
@@ -118,24 +118,28 @@ d2i_X509_PUBKEY(X509_PUBKEY **a, const unsigned char **in, long len)
118 return (X509_PUBKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, 118 return (X509_PUBKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
119 &X509_PUBKEY_it); 119 &X509_PUBKEY_it);
120} 120}
121LCRYPTO_ALIAS(d2i_X509_PUBKEY);
121 122
122int 123int
123i2d_X509_PUBKEY(X509_PUBKEY *a, unsigned char **out) 124i2d_X509_PUBKEY(X509_PUBKEY *a, unsigned char **out)
124{ 125{
125 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_PUBKEY_it); 126 return ASN1_item_i2d((ASN1_VALUE *)a, out, &X509_PUBKEY_it);
126} 127}
128LCRYPTO_ALIAS(i2d_X509_PUBKEY);
127 129
128X509_PUBKEY * 130X509_PUBKEY *
129X509_PUBKEY_new(void) 131X509_PUBKEY_new(void)
130{ 132{
131 return (X509_PUBKEY *)ASN1_item_new(&X509_PUBKEY_it); 133 return (X509_PUBKEY *)ASN1_item_new(&X509_PUBKEY_it);
132} 134}
135LCRYPTO_ALIAS(X509_PUBKEY_new);
133 136
134void 137void
135X509_PUBKEY_free(X509_PUBKEY *a) 138X509_PUBKEY_free(X509_PUBKEY *a)
136{ 139{
137 ASN1_item_free((ASN1_VALUE *)a, &X509_PUBKEY_it); 140 ASN1_item_free((ASN1_VALUE *)a, &X509_PUBKEY_it);
138} 141}
142LCRYPTO_ALIAS(X509_PUBKEY_free);
139 143
140int 144int
141X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) 145X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
@@ -174,6 +178,7 @@ X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
174 X509_PUBKEY_free(pk); 178 X509_PUBKEY_free(pk);
175 return 0; 179 return 0;
176} 180}
181LCRYPTO_ALIAS(X509_PUBKEY_set);
177 182
178EVP_PKEY * 183EVP_PKEY *
179X509_PUBKEY_get0(X509_PUBKEY *key) 184X509_PUBKEY_get0(X509_PUBKEY *key)
@@ -226,6 +231,7 @@ X509_PUBKEY_get0(X509_PUBKEY *key)
226 EVP_PKEY_free(ret); 231 EVP_PKEY_free(ret);
227 return (NULL); 232 return (NULL);
228} 233}
234LCRYPTO_ALIAS(X509_PUBKEY_get0);
229 235
230EVP_PKEY * 236EVP_PKEY *
231X509_PUBKEY_get(X509_PUBKEY *key) 237X509_PUBKEY_get(X509_PUBKEY *key)
@@ -239,6 +245,7 @@ X509_PUBKEY_get(X509_PUBKEY *key)
239 245
240 return pkey; 246 return pkey;
241} 247}
248LCRYPTO_ALIAS(X509_PUBKEY_get);
242 249
243/* 250/*
244 * Decode an X509_PUBKEY into the specified key type. 251 * Decode an X509_PUBKEY into the specified key type.
@@ -403,12 +410,14 @@ d2i_PUBKEY(EVP_PKEY **pkey, const unsigned char **in, long len)
403 return (EVP_PKEY *)ASN1_item_d2i((ASN1_VALUE **)pkey, in, len, 410 return (EVP_PKEY *)ASN1_item_d2i((ASN1_VALUE **)pkey, in, len,
404 &EVP_PKEY_PUBKEY_it); 411 &EVP_PKEY_PUBKEY_it);
405} 412}
413LCRYPTO_ALIAS(d2i_PUBKEY);
406 414
407int 415int
408i2d_PUBKEY(EVP_PKEY *pkey, unsigned char **out) 416i2d_PUBKEY(EVP_PKEY *pkey, unsigned char **out)
409{ 417{
410 return ASN1_item_i2d((ASN1_VALUE *)pkey, out, &EVP_PKEY_PUBKEY_it); 418 return ASN1_item_i2d((ASN1_VALUE *)pkey, out, &EVP_PKEY_PUBKEY_it);
411} 419}
420LCRYPTO_ALIAS(i2d_PUBKEY);
412 421
413EVP_PKEY * 422EVP_PKEY *
414d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **pkey) 423d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **pkey)
@@ -416,12 +425,14 @@ d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **pkey)
416 return (EVP_PKEY *)ASN1_item_d2i_bio(&EVP_PKEY_PUBKEY_it, bp, 425 return (EVP_PKEY *)ASN1_item_d2i_bio(&EVP_PKEY_PUBKEY_it, bp,
417 (ASN1_VALUE **)pkey); 426 (ASN1_VALUE **)pkey);
418} 427}
428LCRYPTO_ALIAS(d2i_PUBKEY_bio);
419 429
420int 430int
421i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) 431i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey)
422{ 432{
423 return ASN1_item_i2d_bio(&EVP_PKEY_PUBKEY_it, bp, (ASN1_VALUE *)pkey); 433 return ASN1_item_i2d_bio(&EVP_PKEY_PUBKEY_it, bp, (ASN1_VALUE *)pkey);
424} 434}
435LCRYPTO_ALIAS(i2d_PUBKEY_bio);
425 436
426EVP_PKEY * 437EVP_PKEY *
427d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **pkey) 438d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **pkey)
@@ -429,12 +440,14 @@ d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **pkey)
429 return (EVP_PKEY *)ASN1_item_d2i_fp(&EVP_PKEY_PUBKEY_it, fp, 440 return (EVP_PKEY *)ASN1_item_d2i_fp(&EVP_PKEY_PUBKEY_it, fp,
430 (ASN1_VALUE **)pkey); 441 (ASN1_VALUE **)pkey);
431} 442}
443LCRYPTO_ALIAS(d2i_PUBKEY_fp);
432 444
433int 445int
434i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) 446i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey)
435{ 447{
436 return ASN1_item_i2d_fp(&EVP_PKEY_PUBKEY_it, fp, (ASN1_VALUE *)pkey); 448 return ASN1_item_i2d_fp(&EVP_PKEY_PUBKEY_it, fp, (ASN1_VALUE *)pkey);
437} 449}
450LCRYPTO_ALIAS(i2d_PUBKEY_fp);
438 451
439/* 452/*
440 * The following are equivalents but which return RSA and DSA keys. 453 * The following are equivalents but which return RSA and DSA keys.
@@ -497,36 +510,42 @@ d2i_RSA_PUBKEY(RSA **rsa, const unsigned char **in, long len)
497 return (RSA *)ASN1_item_d2i((ASN1_VALUE **)rsa, in, len, 510 return (RSA *)ASN1_item_d2i((ASN1_VALUE **)rsa, in, len,
498 &RSA_PUBKEY_it); 511 &RSA_PUBKEY_it);
499} 512}
513LCRYPTO_ALIAS(d2i_RSA_PUBKEY);
500 514
501int 515int
502i2d_RSA_PUBKEY(RSA *rsa, unsigned char **out) 516i2d_RSA_PUBKEY(RSA *rsa, unsigned char **out)
503{ 517{
504 return ASN1_item_i2d((ASN1_VALUE *)rsa, out, &RSA_PUBKEY_it); 518 return ASN1_item_i2d((ASN1_VALUE *)rsa, out, &RSA_PUBKEY_it);
505} 519}
520LCRYPTO_ALIAS(i2d_RSA_PUBKEY);
506 521
507RSA * 522RSA *
508d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) 523d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa)
509{ 524{
510 return (RSA *)ASN1_item_d2i_bio(&RSA_PUBKEY_it, bp, (ASN1_VALUE **)rsa); 525 return (RSA *)ASN1_item_d2i_bio(&RSA_PUBKEY_it, bp, (ASN1_VALUE **)rsa);
511} 526}
527LCRYPTO_ALIAS(d2i_RSA_PUBKEY_bio);
512 528
513int 529int
514i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) 530i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa)
515{ 531{
516 return ASN1_item_i2d_bio(&RSA_PUBKEY_it, bp, (ASN1_VALUE *)rsa); 532 return ASN1_item_i2d_bio(&RSA_PUBKEY_it, bp, (ASN1_VALUE *)rsa);
517} 533}
534LCRYPTO_ALIAS(i2d_RSA_PUBKEY_bio);
518 535
519RSA * 536RSA *
520d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) 537d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa)
521{ 538{
522 return (RSA *)ASN1_item_d2i_fp(&RSA_PUBKEY_it, fp, (ASN1_VALUE **)rsa); 539 return (RSA *)ASN1_item_d2i_fp(&RSA_PUBKEY_it, fp, (ASN1_VALUE **)rsa);
523} 540}
541LCRYPTO_ALIAS(d2i_RSA_PUBKEY_fp);
524 542
525int 543int
526i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) 544i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa)
527{ 545{
528 return ASN1_item_i2d_fp(&RSA_PUBKEY_it, fp, (ASN1_VALUE *)rsa); 546 return ASN1_item_i2d_fp(&RSA_PUBKEY_it, fp, (ASN1_VALUE *)rsa);
529} 547}
548LCRYPTO_ALIAS(i2d_RSA_PUBKEY_fp);
530#endif 549#endif
531 550
532#ifndef OPENSSL_NO_DSA 551#ifndef OPENSSL_NO_DSA
@@ -587,36 +606,42 @@ d2i_DSA_PUBKEY(DSA **dsa, const unsigned char **in, long len)
587 return (DSA *)ASN1_item_d2i((ASN1_VALUE **)dsa, in, len, 606 return (DSA *)ASN1_item_d2i((ASN1_VALUE **)dsa, in, len,
588 &DSA_PUBKEY_it); 607 &DSA_PUBKEY_it);
589} 608}
609LCRYPTO_ALIAS(d2i_DSA_PUBKEY);
590 610
591int 611int
592i2d_DSA_PUBKEY(DSA *dsa, unsigned char **out) 612i2d_DSA_PUBKEY(DSA *dsa, unsigned char **out)
593{ 613{
594 return ASN1_item_i2d((ASN1_VALUE *)dsa, out, &DSA_PUBKEY_it); 614 return ASN1_item_i2d((ASN1_VALUE *)dsa, out, &DSA_PUBKEY_it);
595} 615}
616LCRYPTO_ALIAS(i2d_DSA_PUBKEY);
596 617
597DSA * 618DSA *
598d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) 619d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa)
599{ 620{
600 return (DSA *)ASN1_item_d2i_bio(&DSA_PUBKEY_it, bp, (ASN1_VALUE **)dsa); 621 return (DSA *)ASN1_item_d2i_bio(&DSA_PUBKEY_it, bp, (ASN1_VALUE **)dsa);
601} 622}
623LCRYPTO_ALIAS(d2i_DSA_PUBKEY_bio);
602 624
603int 625int
604i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) 626i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa)
605{ 627{
606 return ASN1_item_i2d_bio(&DSA_PUBKEY_it, bp, (ASN1_VALUE *)dsa); 628 return ASN1_item_i2d_bio(&DSA_PUBKEY_it, bp, (ASN1_VALUE *)dsa);
607} 629}
630LCRYPTO_ALIAS(i2d_DSA_PUBKEY_bio);
608 631
609DSA * 632DSA *
610d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) 633d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa)
611{ 634{
612 return (DSA *)ASN1_item_d2i_fp(&DSA_PUBKEY_it, fp, (ASN1_VALUE **)dsa); 635 return (DSA *)ASN1_item_d2i_fp(&DSA_PUBKEY_it, fp, (ASN1_VALUE **)dsa);
613} 636}
637LCRYPTO_ALIAS(d2i_DSA_PUBKEY_fp);
614 638
615int 639int
616i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) 640i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa)
617{ 641{
618 return ASN1_item_i2d_fp(&DSA_PUBKEY_it, fp, (ASN1_VALUE *)dsa); 642 return ASN1_item_i2d_fp(&DSA_PUBKEY_it, fp, (ASN1_VALUE *)dsa);
619} 643}
644LCRYPTO_ALIAS(i2d_DSA_PUBKEY_fp);
620 645
621#endif 646#endif
622 647
@@ -678,36 +703,42 @@ d2i_EC_PUBKEY(EC_KEY **ec, const unsigned char **in, long len)
678 return (EC_KEY *)ASN1_item_d2i((ASN1_VALUE **)ec, in, len, 703 return (EC_KEY *)ASN1_item_d2i((ASN1_VALUE **)ec, in, len,
679 &EC_PUBKEY_it); 704 &EC_PUBKEY_it);
680} 705}
706LCRYPTO_ALIAS(d2i_EC_PUBKEY);
681 707
682int 708int
683i2d_EC_PUBKEY(EC_KEY *ec, unsigned char **out) 709i2d_EC_PUBKEY(EC_KEY *ec, unsigned char **out)
684{ 710{
685 return ASN1_item_i2d((ASN1_VALUE *)ec, out, &EC_PUBKEY_it); 711 return ASN1_item_i2d((ASN1_VALUE *)ec, out, &EC_PUBKEY_it);
686} 712}
713LCRYPTO_ALIAS(i2d_EC_PUBKEY);
687 714
688EC_KEY * 715EC_KEY *
689d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **ec) 716d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **ec)
690{ 717{
691 return (EC_KEY *)ASN1_item_d2i_bio(&EC_PUBKEY_it, bp, (ASN1_VALUE **)ec); 718 return (EC_KEY *)ASN1_item_d2i_bio(&EC_PUBKEY_it, bp, (ASN1_VALUE **)ec);
692} 719}
720LCRYPTO_ALIAS(d2i_EC_PUBKEY_bio);
693 721
694int 722int
695i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ec) 723i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ec)
696{ 724{
697 return ASN1_item_i2d_bio(&EC_PUBKEY_it, bp, (ASN1_VALUE *)ec); 725 return ASN1_item_i2d_bio(&EC_PUBKEY_it, bp, (ASN1_VALUE *)ec);
698} 726}
727LCRYPTO_ALIAS(i2d_EC_PUBKEY_bio);
699 728
700EC_KEY * 729EC_KEY *
701d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **ec) 730d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **ec)
702{ 731{
703 return (EC_KEY *)ASN1_item_d2i_fp(&EC_PUBKEY_it, fp, (ASN1_VALUE **)ec); 732 return (EC_KEY *)ASN1_item_d2i_fp(&EC_PUBKEY_it, fp, (ASN1_VALUE **)ec);
704} 733}
734LCRYPTO_ALIAS(d2i_EC_PUBKEY_fp);
705 735
706int 736int
707i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *ec) 737i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *ec)
708{ 738{
709 return ASN1_item_i2d_fp(&EC_PUBKEY_it, fp, (ASN1_VALUE *)ec); 739 return ASN1_item_i2d_fp(&EC_PUBKEY_it, fp, (ASN1_VALUE *)ec);
710} 740}
741LCRYPTO_ALIAS(i2d_EC_PUBKEY_fp);
711#endif 742#endif
712 743
713int 744int
@@ -724,6 +755,7 @@ X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype,
724 755
725 return asn1_abs_set_unused_bits(pub->public_key, 0); 756 return asn1_abs_set_unused_bits(pub->public_key, 0);
726} 757}
758LCRYPTO_ALIAS(X509_PUBKEY_set0_param);
727 759
728int 760int
729X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, const unsigned char **pk, 761X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, const unsigned char **pk,
@@ -739,3 +771,4 @@ X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, const unsigned char **pk,
739 *pa = pub->algor; 771 *pa = pub->algor;
740 return 1; 772 return 1;
741} 773}
774LCRYPTO_ALIAS(X509_PUBKEY_get0_param);