OpenSSL/初始化
外观
< OpenSSL
要初始化 libcrypto 和 libssl
[first, set up threading callbacks if your program is multithreaded] SSL_load_error_strings (); SSL_library_init (); OpenSSL_add_all_algorithms (); OPENSSL_config (NULL);
或者仅初始化 libcrypto,不初始化 libssl
[first, set up threading callbacks if your program is multithreaded] ERR_load_crypto_strings (); OpenSSL_add_all_algorithms (); OPENSSL_config (NULL);
注意:OPENSSL_config
会调用 ENGINE_load_builtin_engines
,因此如果您调用 OPENSSL_config
,则不需要调用 ENGINE_load_builtin_engines
(事实上,这样做似乎会导致内存泄漏)。
OpenSSL 无法识别 pthreads 或 Windows 线程。因此,如果您的程序是多线程的,则必须编写回调,将 OpenSSL 连接到 pthreads 或 Windows 线程(或者两者,如果您的程序是跨平台的)。
不是必需的,因为资源将在进程终止时释放,但您可以执行以下操作
ERR_free_strings (); RAND_cleanup (); EVP_cleanup (); // this seems to cause double-frees for me: ENGINE_cleanup (); CONF_modules_free (); ERR_remove_state (0);