NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ssl_context.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_SSL_SSL_CONTEXT_HPP__
2#define NEFORCE_NETWORK_SSL_SSL_CONTEXT_HPP__
3
11
14#include "NeForce/network/ssl/ssl_exception.hpp"
15#include <openssl/ssl.h>
16NEFORCE_BEGIN_NAMESPACE__
17
22
28
41
59class NEFORCE_API ssl_context {
60private:
61 struct ctx_deleter {
62 void operator()(::SSL_CTX* ctx) const noexcept {
63 if (ctx) {
64 ::SSL_CTX_free(ctx);
65 }
66 }
67 };
68
70
71public:
83
84 ~ssl_context() = default;
85
86 ssl_context(const ssl_context&) = delete;
87 ssl_context& operator=(const ssl_context&) = delete;
88
89 ssl_context(ssl_context&& other) noexcept = default;
90 ssl_context& operator=(ssl_context&& other) noexcept = default;
91
101 bool load_certificate(const string& cert_file, const string& key_file);
102
112 void load_certificate_from_memory(const string& cert_pem, const string& key_pem);
113
123 bool load_verify_locations(const string& ca_file, const string& ca_path = "");
124
132 void set_options(long options);
133
145 void set_verify_mode(int mode);
146
154
163 void set_cipher_list(const string& ciphers);
164
173 void set_ciphersuites(const string& ciphersuites);
174
187
197
206
216 void set_alpn_protos(const vector<string>& protocols);
217
222 NEFORCE_NODISCARD ::SSL_CTX* native_handle() const noexcept { return ctx_.get(); }
223
228 explicit operator bool() const noexcept { return ctx_ != nullptr; }
229
234 NEFORCE_NODISCARD bool is_valid() const noexcept { return ctx_ != nullptr; }
235};
236 // SSL/TLS
238 // Network
240
241NEFORCE_END_NAMESPACE__
242#endif // NEFORCE_NETWORK_SSL_SSL_CONTEXT_HPP__
bool load_certificate(const string &cert_file, const string &key_file)
加载证书和私钥(从文件)
void set_session_cache_size(long size)
设置会话缓存大小
void set_cipher_list(const string &ciphers)
设置密码套件列表(TLS 1.2及以下)
NEFORCE_NODISCARD bool is_valid() const noexcept
检查上下文是否有效
ssl_context(ssl_method method=ssl_method::TLS_SERVER)
构造函数
void set_options(long options)
设置SSL选项
void set_timeout(long seconds)
设置会话超时时间
NEFORCE_NODISCARD::SSL_CTX * native_handle() const noexcept
获取原生SSL_CTX句柄
void require_client_certificate()
要求客户端提供证书
void set_alpn_protos(const vector< string > &protocols)
设置ALPN协议列表
void set_default_options()
设置安全的默认选项
void load_certificate_from_memory(const string &cert_pem, const string &key_pem)
加载证书和私钥(从内存)
void set_ciphersuites(const string &ciphersuites)
设置密码套件列表(TLS 1.3)
bool load_verify_locations(const string &ca_file, const string &ca_path="")
加载CA证书用于验证
void set_verify_mode(int mode)
设置验证模式
独占智能指针
动态大小数组容器
duration< int64_t > seconds
秒持续时间
ssl_method
SSL/TLS方法类型
@ TLS_SERVER
TLS服务器端
@ TLS_CLIENT_DTLS
DTLS客户端端(数据报TLS)
@ TLS_CLIENT
TLS客户端端
@ TLS_SERVER_DTLS
DTLS服务器端(数据报TLS)
NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE constexpr decltype(auto) size(const Container &cont) noexcept(noexcept(cont.size()))
获取容器的大小
独占智能指针
动态大小数组容器