From 53a71b7429a4315f7761bea1be20a6d0b9c9a502 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 28 Sep 2016 21:28:00 +0200 Subject: [PATCH] apps/apps.c: initialize and de-initialize engine around key loading Before loading a key from an engine, it may need to be initialized. When done loading the key, we must de-initialize the engine. (if the engine is already initialized somehow, only the reference counter will be incremented then decremented) Reviewed-by: Stephen Henson (cherry picked from commit 49e476a5382602d0bad1139d6f1f66ddbc7959d6) --- apps/apps.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/apps.c b/apps/apps.c index 9fdc3e0097..ff17b35820 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -972,7 +972,10 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin, if (!e) BIO_printf(err, "no engine specified\n"); else { - pkey = ENGINE_load_private_key(e, file, ui_method, &cb_data); + if (ENGINE_init(e)) { + pkey = ENGINE_load_private_key(e, file, ui_method, &cb_data); + ENGINE_finish(e); + } if (!pkey) { BIO_printf(err, "cannot load %s from engine\n", key_descrip); ERR_print_errors(err); -- 2.25.1