忽略调用openssl EVP_cleanup会导致严重的缺陷或内存泄漏

Will ignoring to call openssl EVP_cleanup result in serious flaws or memory leaks?

本文关键字:缺陷 泄漏 内存 openssl 调用 EVP cleanup      更新时间:2023-10-16

我的申请中有一个奇怪的情况。我正在使用OpenSSL中的EVP方法来计算摘要并执行加密。最后,我在我的 CryptoProvider 类(我的应用程序的主要网关)的析构函数中执行 EVP_cleanup()。它从OpenSSL状态卸载所有算法等。

但是,如果客户端将其用于其他用途,则无法在我的应用程序之外无缝使用 OpenSSL。它也清理了他们的工作。

现在,我只剩下这些选择:

  • 忽略 EVP_cleanup()。这会导致泄漏或其他后果吗?

  • 在我的
  • 应用程序中设置一个用于清理的静态 API,客户端必须在其生存期结束时调用该 API,这远远晚于我的应用程序生存期。

  • 只需信任客户端在其生命周期结束时调用EVP_cleanup即可。

你认为你会在这里做什么?

我今天早上有这个问题,遇到了这个线程......如果我能找到以下响应,这将节省我的时间:

EVP_cleanup() 函数在 OpenSSL 版本 1.0.2h 和 1.1.0 中已弃用。

有关完整详细信息,请参阅他们的更新日志。

摘录:

"使各种清理例程成为无操作,并将它们标记为已弃用。不再需要大多数全局清理函数,因为它们是通过 auto-deinit 处理的(请参见手册页OPENSSL_init_crypto和OPENSSL_init_ssl)。显式取消启动可能会导致问题(例如,使用 OpenSSL 的库取消初始化,但应用程序仍在使用它)。受影响的函数是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()"。