diff options
Diffstat (limited to 'src/usr.bin/openssl/apps.c')
| -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 | { |
