跳转到内容

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 线程(或者两者,如果您的程序是跨平台的)。


Clipboard

要做到
解释如何设置线程回调


不是必需的,因为资源将在进程终止时释放,但您可以执行以下操作

ERR_free_strings ();
RAND_cleanup ();
EVP_cleanup ();
// this seems to cause double-frees for me: ENGINE_cleanup ();
CONF_modules_free ();
ERR_remove_state (0);
华夏公益教科书