According to manual page of ENGINE_init, it should be called explicitly
before any key operations happens. Make it active whole lifetime.
(cherry picked from commit
71a8f1e7cd83075416a4edd71572c9aec0ec49d5)
result = DST_R_NOENGINE;
goto cleanup_rm;
}
+ if (!ENGINE_init(e)) {
+ result = DST_R_NOENGINE;
+ goto cleanup_rm;
+ }
/* This will init the engine. */
if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {
result = DST_R_NOENGINE;
- goto cleanup_rm;
+ goto cleanup_init;
}
}
return (ISC_R_SUCCESS);
+cleanup_init:
+ ENGINE_finish(e);
cleanup_rm:
if (e != NULL) {
ENGINE_free(e);
dst__openssl_destroy(void) {
#if !defined(OPENSSL_NO_ENGINE) && OPENSSL_API_LEVEL < 30000
if (e != NULL) {
+ ENGINE_finish(e);
ENGINE_free(e);
}
e = NULL;