diff options
Diffstat (limited to '')
-rw-r--r-- | src/usr.bin/openssl/apps.c | 103 |
1 files changed, 11 insertions, 92 deletions
diff --git a/src/usr.bin/openssl/apps.c b/src/usr.bin/openssl/apps.c index acd95abc7f..f8cad1a703 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.34 2015/09/10 16:01:06 jsing Exp $ */ | 1 | /* $OpenBSD: apps.c,v 1.35 2015/09/11 14:30:23 bcook Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -146,10 +146,6 @@ | |||
146 | #include <openssl/x509.h> | 146 | #include <openssl/x509.h> |
147 | #include <openssl/x509v3.h> | 147 | #include <openssl/x509v3.h> |
148 | 148 | ||
149 | #ifndef OPENSSL_NO_ENGINE | ||
150 | #include <openssl/engine.h> | ||
151 | #endif | ||
152 | |||
153 | #include <openssl/rsa.h> | 149 | #include <openssl/rsa.h> |
154 | 150 | ||
155 | typedef struct { | 151 | typedef struct { |
@@ -190,8 +186,6 @@ str2fmt(char *s) | |||
190 | (strcmp(s, "PKCS12") == 0) || (strcmp(s, "pkcs12") == 0) || | 186 | (strcmp(s, "PKCS12") == 0) || (strcmp(s, "pkcs12") == 0) || |
191 | (strcmp(s, "P12") == 0) || (strcmp(s, "p12") == 0)) | 187 | (strcmp(s, "P12") == 0) || (strcmp(s, "p12") == 0)) |
192 | return (FORMAT_PKCS12); | 188 | return (FORMAT_PKCS12); |
193 | else if ((*s == 'E') || (*s == 'e')) | ||
194 | return (FORMAT_ENGINE); | ||
195 | else if ((*s == 'P') || (*s == 'p')) { | 189 | else if ((*s == 'P') || (*s == 'p')) { |
196 | if (s[1] == 'V' || s[1] == 'v') | 190 | if (s[1] == 'V' || s[1] == 'v') |
197 | return FORMAT_PVK; | 191 | return FORMAT_PVK; |
@@ -626,7 +620,7 @@ die: | |||
626 | } | 620 | } |
627 | 621 | ||
628 | X509 * | 622 | X509 * |
629 | load_cert(BIO *err, const char *file, int format, const char *pass, ENGINE *e, | 623 | load_cert(BIO *err, const char *file, int format, const char *pass, |
630 | const char *cert_descrip) | 624 | const char *cert_descrip) |
631 | { | 625 | { |
632 | X509 *x = NULL; | 626 | X509 *x = NULL; |
@@ -690,7 +684,7 @@ end: | |||
690 | 684 | ||
691 | EVP_PKEY * | 685 | EVP_PKEY * |
692 | load_key(BIO *err, const char *file, int format, int maybe_stdin, | 686 | load_key(BIO *err, const char *file, int format, int maybe_stdin, |
693 | const char *pass, ENGINE *e, const char *key_descrip) | 687 | const char *pass, const char *key_descrip) |
694 | { | 688 | { |
695 | BIO *key = NULL; | 689 | BIO *key = NULL; |
696 | EVP_PKEY *pkey = NULL; | 690 | EVP_PKEY *pkey = NULL; |
@@ -699,26 +693,10 @@ load_key(BIO *err, const char *file, int format, int maybe_stdin, | |||
699 | cb_data.password = pass; | 693 | cb_data.password = pass; |
700 | cb_data.prompt_info = file; | 694 | cb_data.prompt_info = file; |
701 | 695 | ||
702 | if (file == NULL && (!maybe_stdin || format == FORMAT_ENGINE)) { | 696 | if (file == NULL && (!maybe_stdin)) { |
703 | BIO_printf(err, "no keyfile specified\n"); | 697 | BIO_printf(err, "no keyfile specified\n"); |
704 | goto end; | 698 | goto end; |
705 | } | 699 | } |
706 | #ifndef OPENSSL_NO_ENGINE | ||
707 | if (format == FORMAT_ENGINE) { | ||
708 | if (!e) | ||
709 | BIO_printf(err, "no engine specified\n"); | ||
710 | else { | ||
711 | pkey = ENGINE_load_private_key(e, file, | ||
712 | ui_method, &cb_data); | ||
713 | if (!pkey) { | ||
714 | BIO_printf(err, "cannot load %s from engine\n", | ||
715 | key_descrip); | ||
716 | ERR_print_errors(err); | ||
717 | } | ||
718 | } | ||
719 | goto end; | ||
720 | } | ||
721 | #endif | ||
722 | key = BIO_new(BIO_s_file()); | 700 | key = BIO_new(BIO_s_file()); |
723 | if (key == NULL) { | 701 | if (key == NULL) { |
724 | ERR_print_errors(err); | 702 | ERR_print_errors(err); |
@@ -769,7 +747,7 @@ end: | |||
769 | 747 | ||
770 | EVP_PKEY * | 748 | EVP_PKEY * |
771 | load_pubkey(BIO *err, const char *file, int format, int maybe_stdin, | 749 | load_pubkey(BIO *err, const char *file, int format, int maybe_stdin, |
772 | const char *pass, ENGINE *e, const char *key_descrip) | 750 | const char *pass, const char *key_descrip) |
773 | { | 751 | { |
774 | BIO *key = NULL; | 752 | BIO *key = NULL; |
775 | EVP_PKEY *pkey = NULL; | 753 | EVP_PKEY *pkey = NULL; |
@@ -778,20 +756,10 @@ load_pubkey(BIO *err, const char *file, int format, int maybe_stdin, | |||
778 | cb_data.password = pass; | 756 | cb_data.password = pass; |
779 | cb_data.prompt_info = file; | 757 | cb_data.prompt_info = file; |
780 | 758 | ||
781 | if (file == NULL && (!maybe_stdin || format == FORMAT_ENGINE)) { | 759 | if (file == NULL && !maybe_stdin) { |
782 | BIO_printf(err, "no keyfile specified\n"); | 760 | BIO_printf(err, "no keyfile specified\n"); |
783 | goto end; | 761 | goto end; |
784 | } | 762 | } |
785 | #ifndef OPENSSL_NO_ENGINE | ||
786 | if (format == FORMAT_ENGINE) { | ||
787 | if (!e) | ||
788 | BIO_printf(bio_err, "no engine specified\n"); | ||
789 | else | ||
790 | pkey = ENGINE_load_public_key(e, file, | ||
791 | ui_method, &cb_data); | ||
792 | goto end; | ||
793 | } | ||
794 | #endif | ||
795 | key = BIO_new(BIO_s_file()); | 763 | key = BIO_new(BIO_s_file()); |
796 | if (key == NULL) { | 764 | if (key == NULL) { |
797 | ERR_print_errors(err); | 765 | ERR_print_errors(err); |
@@ -899,7 +867,7 @@ error: | |||
899 | 867 | ||
900 | static int | 868 | static int |
901 | load_certs_crls(BIO *err, const char *file, int format, const char *pass, | 869 | load_certs_crls(BIO *err, const char *file, int format, const char *pass, |
902 | ENGINE *e, const char *desc, STACK_OF(X509) **pcerts, | 870 | const char *desc, STACK_OF(X509) **pcerts, |
903 | STACK_OF(X509_CRL) **pcrls) | 871 | STACK_OF(X509_CRL) **pcrls) |
904 | { | 872 | { |
905 | int i; | 873 | int i; |
@@ -983,22 +951,22 @@ end: | |||
983 | 951 | ||
984 | STACK_OF(X509) * | 952 | STACK_OF(X509) * |
985 | load_certs(BIO *err, const char *file, int format, const char *pass, | 953 | load_certs(BIO *err, const char *file, int format, const char *pass, |
986 | ENGINE *e, const char *desc) | 954 | const char *desc) |
987 | { | 955 | { |
988 | STACK_OF(X509) *certs; | 956 | STACK_OF(X509) *certs; |
989 | 957 | ||
990 | if (!load_certs_crls(err, file, format, pass, e, desc, &certs, NULL)) | 958 | if (!load_certs_crls(err, file, format, pass, desc, &certs, NULL)) |
991 | return NULL; | 959 | return NULL; |
992 | return certs; | 960 | return certs; |
993 | } | 961 | } |
994 | 962 | ||
995 | STACK_OF(X509_CRL) * | 963 | STACK_OF(X509_CRL) * |
996 | load_crls(BIO *err, const char *file, int format, const char *pass, ENGINE *e, | 964 | load_crls(BIO *err, const char *file, int format, const char *pass, |
997 | const char *desc) | 965 | const char *desc) |
998 | { | 966 | { |
999 | STACK_OF(X509_CRL) *crls; | 967 | STACK_OF(X509_CRL) *crls; |
1000 | 968 | ||
1001 | if (!load_certs_crls(err, file, format, pass, e, desc, NULL, &crls)) | 969 | if (!load_certs_crls(err, file, format, pass, desc, NULL, &crls)) |
1002 | return NULL; | 970 | return NULL; |
1003 | return crls; | 971 | return crls; |
1004 | } | 972 | } |
@@ -1248,55 +1216,6 @@ end: | |||
1248 | return NULL; | 1216 | return NULL; |
1249 | } | 1217 | } |
1250 | 1218 | ||
1251 | #ifndef OPENSSL_NO_ENGINE | ||
1252 | |||
1253 | ENGINE * | ||
1254 | setup_engine(BIO *err, const char *engine, int debug) | ||
1255 | { | ||
1256 | ENGINE *e = NULL; | ||
1257 | |||
1258 | if (engine) { | ||
1259 | if (strcmp(engine, "auto") == 0) { | ||
1260 | BIO_printf(err, "enabling auto ENGINE support\n"); | ||
1261 | ENGINE_register_all_complete(); | ||
1262 | return NULL; | ||
1263 | } | ||
1264 | if ((e = ENGINE_by_id(engine)) == NULL) { | ||
1265 | BIO_printf(err, "invalid engine \"%s\"\n", engine); | ||
1266 | ERR_print_errors(err); | ||
1267 | return NULL; | ||
1268 | } | ||
1269 | if (debug) { | ||
1270 | if (ENGINE_ctrl(e, ENGINE_CTRL_SET_LOGSTREAM, | ||
1271 | 0, err, 0) <= 0) { | ||
1272 | BIO_printf(err, "Cannot set logstream for " | ||
1273 | "engine \"%s\"\n", engine); | ||
1274 | ERR_print_errors(err); | ||
1275 | ENGINE_free(e); | ||
1276 | return NULL; | ||
1277 | } | ||
1278 | } | ||
1279 | if (!ENGINE_ctrl_cmd(e, "SET_USER_INTERFACE", 0, ui_method, 0, 1)) { | ||
1280 | BIO_printf(err, "can't set user interface\n"); | ||
1281 | ERR_print_errors(err); | ||
1282 | ENGINE_free(e); | ||
1283 | return NULL; | ||
1284 | } | ||
1285 | if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { | ||
1286 | BIO_printf(err, "can't use that engine\n"); | ||
1287 | ERR_print_errors(err); | ||
1288 | ENGINE_free(e); | ||
1289 | return NULL; | ||
1290 | } | ||
1291 | BIO_printf(err, "engine \"%s\" set.\n", ENGINE_get_id(e)); | ||
1292 | |||
1293 | /* Free our "structural" reference. */ | ||
1294 | ENGINE_free(e); | ||
1295 | } | ||
1296 | return e; | ||
1297 | } | ||
1298 | #endif | ||
1299 | |||
1300 | int | 1219 | int |
1301 | load_config(BIO *err, CONF *cnf) | 1220 | load_config(BIO *err, CONF *cnf) |
1302 | { | 1221 | { |