summaryrefslogtreecommitdiff
path: root/src/usr.bin/openssl/genpkey.c
diff options
context:
space:
mode:
authorbcook <>2015-09-11 14:30:23 +0000
committerbcook <>2015-09-11 14:30:23 +0000
commite2fad4e6bdd4e404b3f4c186de52078738af2271 (patch)
treecc1109842924cab95a77b6863b32de51b6d4f960 /src/usr.bin/openssl/genpkey.c
parent7cea1ef22b79637be449efa70b99c6deaf74ef10 (diff)
downloadopenbsd-e2fad4e6bdd4e404b3f4c186de52078738af2271.tar.gz
openbsd-e2fad4e6bdd4e404b3f4c186de52078738af2271.tar.bz2
openbsd-e2fad4e6bdd4e404b3f4c186de52078738af2271.zip
Remove engine command and parameters from openssl(1).
We do not have any builtin or dynamic engines, meaning openssl(1) has no way to use the engine command or parameters at all. ok jsing@
Diffstat (limited to '')
-rw-r--r--src/usr.bin/openssl/genpkey.c44
1 files changed, 9 insertions, 35 deletions
diff --git a/src/usr.bin/openssl/genpkey.c b/src/usr.bin/openssl/genpkey.c
index 1ebc4e7d3c..d76e2febd8 100644
--- a/src/usr.bin/openssl/genpkey.c
+++ b/src/usr.bin/openssl/genpkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: genpkey.c,v 1.4 2015/08/22 16:36:05 jsing Exp $ */ 1/* $OpenBSD: genpkey.c,v 1.5 2015/09/11 14:30:23 bcook 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 2006 3 * project 2006
4 */ 4 */
@@ -65,19 +65,13 @@
65#include <openssl/evp.h> 65#include <openssl/evp.h>
66#include <openssl/pem.h> 66#include <openssl/pem.h>
67 67
68#ifndef OPENSSL_NO_ENGINE
69#include <openssl/engine.h>
70#endif
71
72static int 68static int
73init_keygen_file(BIO * err, EVP_PKEY_CTX ** pctx, const char *file, 69init_keygen_file(BIO * err, EVP_PKEY_CTX ** pctx, const char *file);
74 ENGINE * e);
75static int genpkey_cb(EVP_PKEY_CTX * ctx); 70static int genpkey_cb(EVP_PKEY_CTX * ctx);
76 71
77int 72int
78genpkey_main(int argc, char **argv) 73genpkey_main(int argc, char **argv)
79{ 74{
80 ENGINE *e = NULL;
81 char **args, *outfile = NULL; 75 char **args, *outfile = NULL;
82 char *passarg = NULL; 76 char *passarg = NULL;
83 BIO *in = NULL, *out = NULL; 77 BIO *in = NULL, *out = NULL;
@@ -107,20 +101,13 @@ genpkey_main(int argc, char **argv)
107 goto bad; 101 goto bad;
108 passarg = *(++args); 102 passarg = *(++args);
109 } 103 }
110#ifndef OPENSSL_NO_ENGINE
111 else if (strcmp(*args, "-engine") == 0) {
112 if (!args[1])
113 goto bad;
114 e = setup_engine(bio_err, *(++args), 0);
115 }
116#endif
117 else if (!strcmp(*args, "-paramfile")) { 104 else if (!strcmp(*args, "-paramfile")) {
118 if (!args[1]) 105 if (!args[1])
119 goto bad; 106 goto bad;
120 args++; 107 args++;
121 if (do_param == 1) 108 if (do_param == 1)
122 goto bad; 109 goto bad;
123 if (!init_keygen_file(bio_err, &ctx, *args, e)) 110 if (!init_keygen_file(bio_err, &ctx, *args))
124 goto end; 111 goto end;
125 } else if (!strcmp(*args, "-out")) { 112 } else if (!strcmp(*args, "-out")) {
126 if (args[1]) { 113 if (args[1]) {
@@ -131,7 +118,7 @@ genpkey_main(int argc, char **argv)
131 } else if (strcmp(*args, "-algorithm") == 0) { 118 } else if (strcmp(*args, "-algorithm") == 0) {
132 if (!args[1]) 119 if (!args[1])
133 goto bad; 120 goto bad;
134 if (!init_gen_str(bio_err, &ctx, *(++args), e, do_param)) 121 if (!init_gen_str(bio_err, &ctx, *(++args), do_param))
135 goto end; 122 goto end;
136 } else if (strcmp(*args, "-pkeyopt") == 0) { 123 } else if (strcmp(*args, "-pkeyopt") == 0) {
137 if (!args[1]) 124 if (!args[1])
@@ -174,9 +161,6 @@ bad:
174 BIO_printf(bio_err, "-outform X output format (DER or PEM)\n"); 161 BIO_printf(bio_err, "-outform X output format (DER or PEM)\n");
175 BIO_printf(bio_err, "-pass arg output file pass phrase source\n"); 162 BIO_printf(bio_err, "-pass arg output file pass phrase source\n");
176 BIO_printf(bio_err, "-<cipher> use cipher <cipher> to encrypt the key\n"); 163 BIO_printf(bio_err, "-<cipher> use cipher <cipher> to encrypt the key\n");
177#ifndef OPENSSL_NO_ENGINE
178 BIO_printf(bio_err, "-engine e use engine e, possibly a hardware device.\n");
179#endif
180 BIO_printf(bio_err, "-paramfile file parameters file\n"); 164 BIO_printf(bio_err, "-paramfile file parameters file\n");
181 BIO_printf(bio_err, "-algorithm alg the public key algorithm\n"); 165 BIO_printf(bio_err, "-algorithm alg the public key algorithm\n");
182 BIO_printf(bio_err, "-pkeyopt opt:value set the public key algorithm option <opt>\n" 166 BIO_printf(bio_err, "-pkeyopt opt:value set the public key algorithm option <opt>\n"
@@ -261,7 +245,7 @@ end:
261 245
262static int 246static int
263init_keygen_file(BIO * err, EVP_PKEY_CTX ** pctx, 247init_keygen_file(BIO * err, EVP_PKEY_CTX ** pctx,
264 const char *file, ENGINE * e) 248 const char *file)
265{ 249{
266 BIO *pbio; 250 BIO *pbio;
267 EVP_PKEY *pkey = NULL; 251 EVP_PKEY *pkey = NULL;
@@ -282,7 +266,7 @@ init_keygen_file(BIO * err, EVP_PKEY_CTX ** pctx,
282 BIO_printf(bio_err, "Error reading parameter file %s\n", file); 266 BIO_printf(bio_err, "Error reading parameter file %s\n", file);
283 return 0; 267 return 0;
284 } 268 }
285 ctx = EVP_PKEY_CTX_new(pkey, e); 269 ctx = EVP_PKEY_CTX_new(pkey, NULL);
286 if (!ctx) 270 if (!ctx)
287 goto err; 271 goto err;
288 if (EVP_PKEY_keygen_init(ctx) <= 0) 272 if (EVP_PKEY_keygen_init(ctx) <= 0)
@@ -304,23 +288,17 @@ err:
304 288
305int 289int
306init_gen_str(BIO * err, EVP_PKEY_CTX ** pctx, 290init_gen_str(BIO * err, EVP_PKEY_CTX ** pctx,
307 const char *algname, ENGINE * e, int do_param) 291 const char *algname, int do_param)
308{ 292{
309 EVP_PKEY_CTX *ctx = NULL; 293 EVP_PKEY_CTX *ctx = NULL;
310 const EVP_PKEY_ASN1_METHOD *ameth; 294 const EVP_PKEY_ASN1_METHOD *ameth;
311 ENGINE *tmpeng = NULL;
312 int pkey_id; 295 int pkey_id;
313 296
314 if (*pctx) { 297 if (*pctx) {
315 BIO_puts(err, "Algorithm already set!\n"); 298 BIO_puts(err, "Algorithm already set!\n");
316 return 0; 299 return 0;
317 } 300 }
318 ameth = EVP_PKEY_asn1_find_str(&tmpeng, algname, -1); 301 ameth = EVP_PKEY_asn1_find_str(NULL, algname, -1);
319
320#ifndef OPENSSL_NO_ENGINE
321 if (!ameth && e)
322 ameth = ENGINE_get_pkey_asn1_meth_str(e, algname, -1);
323#endif
324 302
325 if (!ameth) { 303 if (!ameth) {
326 BIO_printf(bio_err, "Algorithm %s not found\n", algname); 304 BIO_printf(bio_err, "Algorithm %s not found\n", algname);
@@ -329,11 +307,7 @@ init_gen_str(BIO * err, EVP_PKEY_CTX ** pctx,
329 ERR_clear_error(); 307 ERR_clear_error();
330 308
331 EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, NULL, NULL, ameth); 309 EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, NULL, NULL, ameth);
332#ifndef OPENSSL_NO_ENGINE 310 ctx = EVP_PKEY_CTX_new_id(pkey_id, NULL);
333 if (tmpeng)
334 ENGINE_finish(tmpeng);
335#endif
336 ctx = EVP_PKEY_CTX_new_id(pkey_id, e);
337 311
338 if (!ctx) 312 if (!ctx)
339 goto err; 313 goto err;