summaryrefslogtreecommitdiff
path: root/src/usr.bin/openssl/apps.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr.bin/openssl/apps.c')
-rw-r--r--src/usr.bin/openssl/apps.c82
1 files changed, 2 insertions, 80 deletions
diff --git a/src/usr.bin/openssl/apps.c b/src/usr.bin/openssl/apps.c
index 5e4e8d521c..392d3cc339 100644
--- a/src/usr.bin/openssl/apps.c
+++ b/src/usr.bin/openssl/apps.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: apps.c,v 1.60 2021/03/31 17:13:54 tb Exp $ */ 1/* $OpenBSD: apps.c,v 1.61 2021/11/26 16:23:27 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -160,12 +160,6 @@ static int set_table_opts(unsigned long *flags, const char *arg,
160static int set_multi_opts(unsigned long *flags, const char *arg, 160static int set_multi_opts(unsigned long *flags, const char *arg,
161 const NAME_EX_TBL *in_tbl); 161 const NAME_EX_TBL *in_tbl);
162 162
163#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
164/* Looks like this stuff is worth moving into separate function */
165static EVP_PKEY *load_netscape_key(BIO *err, BIO *key, const char *file,
166 const char *key_descrip, int format);
167#endif
168
169int 163int
170str2fmt(char *s) 164str2fmt(char *s)
171{ 165{
@@ -175,8 +169,6 @@ str2fmt(char *s)
175 return (FORMAT_ASN1); 169 return (FORMAT_ASN1);
176 else if ((*s == 'T') || (*s == 't')) 170 else if ((*s == 'T') || (*s == 't'))
177 return (FORMAT_TEXT); 171 return (FORMAT_TEXT);
178 else if ((*s == 'N') || (*s == 'n'))
179 return (FORMAT_NETSCAPE);
180 else if ((*s == 'S') || (*s == 's')) 172 else if ((*s == 'S') || (*s == 's'))
181 return (FORMAT_SMIME); 173 return (FORMAT_SMIME);
182 else if ((*s == 'M') || (*s == 'm')) 174 else if ((*s == 'M') || (*s == 'm'))
@@ -612,24 +604,7 @@ load_cert(BIO *err, const char *file, int format, const char *pass,
612 604
613 if (format == FORMAT_ASN1) 605 if (format == FORMAT_ASN1)
614 x = d2i_X509_bio(cert, NULL); 606 x = d2i_X509_bio(cert, NULL);
615 else if (format == FORMAT_NETSCAPE) { 607 else if (format == FORMAT_PEM)
616 NETSCAPE_X509 *nx;
617 nx = ASN1_item_d2i_bio(&NETSCAPE_X509_it,
618 cert, NULL);
619 if (nx == NULL)
620 goto end;
621
622 if ((strncmp(NETSCAPE_CERT_HDR, (char *) nx->header->data,
623 nx->header->length) != 0)) {
624 NETSCAPE_X509_free(nx);
625 BIO_printf(err,
626 "Error reading header on certificate\n");
627 goto end;
628 }
629 x = nx->cert;
630 nx->cert = NULL;
631 NETSCAPE_X509_free(nx);
632 } else if (format == FORMAT_PEM)
633 x = PEM_read_bio_X509_AUX(cert, NULL, password_callback, NULL); 608 x = PEM_read_bio_X509_AUX(cert, NULL, password_callback, NULL);
634 else if (format == FORMAT_PKCS12) { 609 else if (format == FORMAT_PKCS12) {
635 if (!load_pkcs12(err, cert, cert_descrip, NULL, NULL, 610 if (!load_pkcs12(err, cert, cert_descrip, NULL, NULL,
@@ -684,10 +659,6 @@ load_key(BIO *err, const char *file, int format, int maybe_stdin,
684 } else if (format == FORMAT_PEM) { 659 } else if (format == FORMAT_PEM) {
685 pkey = PEM_read_bio_PrivateKey(key, NULL, password_callback, &cb_data); 660 pkey = PEM_read_bio_PrivateKey(key, NULL, password_callback, &cb_data);
686 } 661 }
687#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
688 else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
689 pkey = load_netscape_key(err, key, file, key_descrip, format);
690#endif
691 else if (format == FORMAT_PKCS12) { 662 else if (format == FORMAT_PKCS12) {
692 if (!load_pkcs12(err, key, key_descrip, password_callback, &cb_data, 663 if (!load_pkcs12(err, key, key_descrip, password_callback, &cb_data,
693 &pkey, NULL, NULL)) 664 &pkey, NULL, NULL))
@@ -768,10 +739,6 @@ load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
768 else if (format == FORMAT_PEM) { 739 else if (format == FORMAT_PEM) {
769 pkey = PEM_read_bio_PUBKEY(key, NULL, password_callback, &cb_data); 740 pkey = PEM_read_bio_PUBKEY(key, NULL, password_callback, &cb_data);
770 } 741 }
771#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
772 else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
773 pkey = load_netscape_key(err, key, file, key_descrip, format);
774#endif
775#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA) 742#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA)
776 else if (format == FORMAT_MSBLOB) 743 else if (format == FORMAT_MSBLOB)
777 pkey = b2i_PublicKey_bio(key); 744 pkey = b2i_PublicKey_bio(key);
@@ -788,51 +755,6 @@ load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
788 return (pkey); 755 return (pkey);
789} 756}
790 757
791#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
792static EVP_PKEY *
793load_netscape_key(BIO *err, BIO *key, const char *file,
794 const char *key_descrip, int format)
795{
796 EVP_PKEY *pkey;
797 BUF_MEM *buf;
798 RSA *rsa;
799 const unsigned char *p;
800 int size, i;
801
802 buf = BUF_MEM_new();
803 pkey = EVP_PKEY_new();
804 size = 0;
805 if (buf == NULL || pkey == NULL)
806 goto error;
807 for (;;) {
808 if (!BUF_MEM_grow_clean(buf, size + 1024 * 10))
809 goto error;
810 i = BIO_read(key, &(buf->data[size]), 1024 * 10);
811 size += i;
812 if (i == 0)
813 break;
814 if (i < 0) {
815 BIO_printf(err, "Error reading %s %s",
816 key_descrip, file);
817 goto error;
818 }
819 }
820 p = (unsigned char *) buf->data;
821 rsa = d2i_RSA_NET(NULL, &p, (long) size, NULL,
822 (format == FORMAT_IISSGC ? 1 : 0));
823 if (rsa == NULL)
824 goto error;
825 BUF_MEM_free(buf);
826 EVP_PKEY_set1_RSA(pkey, rsa);
827 return pkey;
828
829 error:
830 BUF_MEM_free(buf);
831 EVP_PKEY_free(pkey);
832 return NULL;
833}
834#endif /* ndef OPENSSL_NO_RC4 */
835
836static int 758static int
837load_certs_crls(BIO *err, const char *file, int format, const char *pass, 759load_certs_crls(BIO *err, const char *file, int format, const char *pass,
838 const char *desc, STACK_OF(X509) **pcerts, 760 const char *desc, STACK_OF(X509) **pcerts,