У меня странная ситуация в моем приложении. Я использую методы EVP в OpenSSL для вычисления дайджестов и выполнения шифрования. В конце я выполняю EVP_cleanup () в деструкторе моего класса CryptoProvider (основной шлюз для моего приложения). Он выгружает все алгоритмы и т. Д. Из состояния OpenSSL.
Однако это делает невозможным беспрепятственное использование OpenSSL вне моего приложения, если клиент использует его для чего-то другого. Это очищает их работу, а также.
Теперь я остаюсь с этим выбором:
Игнорировать EVP_cleanup (). Это приведет к утечкам или другим последствиям?
Установите статическое API для очистки в моем приложении, которое клиент должен вызывать в конце своего срока службы, то есть намного позже срока службы моего приложения.
Просто доверьте клиенту вызов EVP_cleanup в конце его жизни.
Как вы думаете, что вы будете делать здесь?
У меня был этот вопрос сегодня утром, и я наткнулся на эту ветку … Это сэкономило бы мне время, если бы я нашел следующий ответ:
Функция EVP_cleanup () устарела в версиях OpenSSL 1.0.2h и 1.1.0.
Видеть их переключающий журнал для полной информации.
Выдержка:
Msgstr «Сделайте различные подпрограммы очистки неактивными и пометите их как устаревшие. Большинство глобальных функций очистки больше не требуются, потому что они обрабатываются с помощью auto-deinit (см. Справочные страницы OPENSSL_init_crypto и OPENSSL_init_ssl). Явное деинсталляция может вызвать проблемы (например, когда библиотека, которая использует OpenSSL-де-inits, но приложение все еще использует его). затронутые функции CONF_modules_free (), ENGINE_cleanup (), OBJ_cleanup (), EVP_cleanup (), BIO_sock_cleanup (), CRYPTO_cleanup_all_ex_data (), RAND_cleanup (), SSL_COMP_free_compression_methods (), ERR_free_strings () и COMP_zlib_cleanup (). «
Других решений пока нет …