--- a/src/lib/crypto/OSSLCryptoFactory.cpp +++ b/src/lib/crypto/OSSLCryptoFactory.cpp @@ -213,6 +213,10 @@ ERROR_MSG("can't set params of the GOST engine"); goto err; } + + // TODO: error handling + legacy_provider = OSSL_PROVIDER_load(NULL, "legacy"); + default_provider = OSSL_PROVIDER_load(NULL, "default"); return; err: @@ -241,6 +245,8 @@ ossl_shutdown = !OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL); (void)ERR_pop_to_mark(); #endif + OSSL_PROVIDER_unload(default_provider); + OSSL_PROVIDER_unload(legacy_provider); if (!ossl_shutdown) { #ifdef WITH_GOST --- a/src/lib/crypto/OSSLCryptoFactory.h +++ b/src/lib/crypto/OSSLCryptoFactory.h @@ -106,6 +106,9 @@ // And RDRAND engine to use with it ENGINE *rdrand_engine; + OSSL_PROVIDER *default_provider; + OSSL_PROVIDER *legacy_provider; + #ifdef WITH_GOST // The GOST engine ENGINE *eg;