1#ifndef NEFORCE_NETWORK_SSL_SNI_MANAGER_HPP__
2#define NEFORCE_NETWORK_SSL_SNI_MANAGER_HPP__
14NEFORCE_BEGIN_NAMESPACE__
39class NEFORCE_API sni_manager {
46 bool has_default_ =
false;
49 sni_manager() =
default;
85 NEFORCE_NODISCARD
bool has_host(
const string& hostname)
const;
90 NEFORCE_NODISCARD
size_t host_count() const noexcept {
return hosts_.size(); }
103NEFORCE_END_NAMESPACE__
bool has_host(const string &hostname) const
检查是否有指定域名的证书
void add_host(const string &hostname, ssl_context ctx)
添加域名及其SSL上下文
void remove_host(const string &hostname)
移除域名
size_t host_count() const noexcept
获取配置的域名数量
void set_default_context(ssl_context ctx)
设置默认SSL上下文(SNI未匹配时使用)
void * select_ssl_ctx(const string &server_name) const
根据SNI hostname选择SSL_CTX
static int sni_callback(void *ssl, int *alert, void *arg)
SNI回调函数(用于SSL_CTX_set_tlsext_servername_callback)