【发布时间】:2021-09-03 09:49:27
【问题描述】:
是否可以从现有的SSL_CTX 创建boost::asio::ssl::context?
我想避免将所有选项从一个复制到另一个(从而冒错误的风险)。
【问题讨论】:
标签: c++ ssl openssl boost-asio
是否可以从现有的SSL_CTX 创建boost::asio::ssl::context?
我想避免将所有选项从一个复制到另一个(从而冒错误的风险)。
【问题讨论】:
标签: c++ ssl openssl boost-asio
前两个构造函数I see are
/// Constructor.
BOOST_ASIO_DECL explicit context(method m);
/// Construct to take ownership of a native handle.
BOOST_ASIO_DECL explicit context(native_handle_type native_handle);
所以第二个在逻辑上就是你所追求的:
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
int main() {
const SSL_METHOD* raw_method = SSLv23_server_method();
SSL_CTX* raw_ctx = SSL_CTX_new(raw_method);
boost::asio::ssl::context ctx(raw_ctx);
} // Note: no SSL_CTX_free(raw_ctx)!
小心:如果你使用这个构造函数,它确实拥有所有权。这意味着您不得尝试释放上下文(或任何替代部分,(默认)密码应用程序用户数据),因为这将导致双重释放。无法从 asio::ssl::context 实例中释放所有权。
【讨论】:
raw_ctx 吗?看起来它应该是不可能的,但它似乎工作......
libwebsocketpp 并想知道我应该在 on_tls_init 处理程序中写什么。