diff options
author | Geoff Thorpe <geoff@openssl.org> | 2001-09-28 02:25:14 +0000 |
---|---|---|
committer | Geoff Thorpe <geoff@openssl.org> | 2001-09-28 02:25:14 +0000 |
commit | 34c66925aad7d10c034b0ddce99e1bfcf9a04ea8 (patch) | |
tree | 32e27851a1762c70d31cd9ea780040f1f11f357c | |
parent | cb7fd76f572c6535856e882a6e9225163a45d977 (diff) |
ENGINE_register_all_complete() will register all implementations of all
algorithms present in all loaded ENGINEs. The result is that if any of
those ENGINEs successfully initialises, and the ENGINE_TABLE_FLAG_NOINIT
flag isn't set, then they will always be used (and cached as defaults) in
preference to software implementations. Ie. accidental auto-detection of
acceleration hardware :-)
This change stops all implementations being automatically registered in
"openssl" sub-commands, so that the "setup_engine()" handler in apps.c
controls which ENGINEs are registered for use. A special case has been
added that will revert to this "auto-detect" logic, ie. if the "-engine"
switch is used as;
-engine auto
-rw-r--r-- | apps/apps.c | 6 | ||||
-rw-r--r-- | apps/apps.h | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/apps/apps.c b/apps/apps.c index 2c2974224f..1089c8b8a3 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -1150,6 +1150,12 @@ ENGINE *setup_engine(BIO *err, const char *engine, int debug) if (engine) { + if(strcmp(engine, "auto") == 0) + { + BIO_printf(err,"enabling auto ENGINE support\n"); + ENGINE_register_all_complete(); + return NULL; + } if((e = ENGINE_by_id(engine)) == NULL) { BIO_printf(err,"invalid engine \"%s\"\n", engine); diff --git a/apps/apps.h b/apps/apps.h index 810710909c..57ca7659ae 100644 --- a/apps/apps.h +++ b/apps/apps.h @@ -127,20 +127,18 @@ extern BIO *bio_err; # define apps_startup() \ do { _fmode=_O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \ ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \ - ENGINE_load_builtin_engines(); ENGINE_register_all_complete(); \ - setup_ui_method(); } while(0) + ENGINE_load_builtin_engines(); setup_ui_method(); } while(0) # else # define apps_startup() \ do { _fmode=O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \ ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \ - ENGINE_load_builtin_engines(); ENGINE_register_all_complete(); \ - setup_ui_method(); } while(0) + ENGINE_load_builtin_engines(); setup_ui_method(); } while(0) # endif # else # define apps_startup() \ do { do_pipe_sig(); OpenSSL_add_all_algorithms(); \ ERR_load_crypto_strings(); ENGINE_load_builtin_engines(); \ - ENGINE_register_all_complete(); setup_ui_method(); } while(0) + setup_ui_method(); } while(0) # endif # define apps_shutdown() \ do { destroy_ui_method(); EVP_cleanup(); \ |