提交 34c66925 编写于 作者: G Geoff Thorpe

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
上级 cb7fd76f
......@@ -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);
......
......@@ -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(); \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册