NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
sni_manager.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_SSL_SNI_MANAGER_HPP__
2#define NEFORCE_NETWORK_SSL_SNI_MANAGER_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
20
39class NEFORCE_API sni_manager {
40private:
44 ssl_context default_context_;
46 bool has_default_ = false;
47
48public:
49 sni_manager() = default;
50
56 void add_host(const string& hostname, ssl_context ctx);
57
62 void remove_host(const string& hostname);
63
69
80 NEFORCE_NODISCARD void* select_ssl_ctx(const string& server_name) const;
81
85 NEFORCE_NODISCARD bool has_host(const string& hostname) const;
86
90 NEFORCE_NODISCARD size_t host_count() const noexcept { return hosts_.size(); }
91
98 static int sni_callback(void* ssl, int* alert, void* arg);
99};
100 // SSL/TLS
102
103NEFORCE_END_NAMESPACE__
104#endif // NEFORCE_NETWORK_SSL_SNI_MANAGER_HPP__
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)
SSL/TLS上下文管理类
SSL/TLS上下文管理
无序映射容器