acl  3.5.3.0
sslbase_conf.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/noncopyable.hpp"
4 
5 namespace acl
6 {
7 
8 class sslbase_io;
9 
11 {
12 public:
13  sslbase_conf(void) {}
14  virtual ~sslbase_conf(void) {}
15 
16  /**
17  * 纯虚方法,创建 SSL IO 对象
18  * @param nblock {bool} 是否为非阻塞模式
19  * @return {sslbase_io*}
20  */
21  virtual sslbase_io* create(bool nblock) = 0;
22 
23 public:
24  /**
25  * 加载 CA 根证书(每个配置实例只需调用一次本方法)
26  * @param ca_file {const char*} CA 证书文件全路径
27  * @param ca_path {const char*} 多个 CA 证书文件所在目录
28  * @return {bool} 加载 CA 根证书是否成功
29  * 注:如果 ca_file、ca_path 均非空,则会依次加载所有证书
30  */
31  virtual bool load_ca(const char* ca_file, const char* ca_path)
32  {
33  (void) ca_file;
34  (void) ca_path;
35  return false;
36  }
37 
38  /**
39  * 添加一个服务端/客户端自己的证书,可以多次调用本方法加载多个证书
40  * @param crt_file {const char*} 证书文件全路径,非空
41  * @param key_file {const char*} 密钥文件全路径,非空
42  * @param key_pass {const char*} 密钥文件的密码,没有密钥密码可写 NULL
43  * @return {bool} 添加证书是否成功
44  */
45  virtual bool append_key_cert(const char* crt_file, const char* key_file,
46  const char* key_pass = NULL)
47  {
48  (void) crt_file;
49  (void) key_file;
50  (void) key_pass;
51  return false;
52  }
53 
54  /**
55  * 添加一个服务端/客户端自己的证书,可以多次调用本方法加载多个证书
56  * @param crt_file {const char*} 证书文件全路径,非空
57  * @return {bool} 添加证书是否成功
58  * @deprecated use append_key_cert
59  */
60  virtual bool add_cert(const char* crt_file)
61  {
62  (void) crt_file;
63  return false;
64  }
65 
66  /**
67  * 添加服务端/客户端的密钥(每个配置实例只需调用一次本方法)
68  * @param key_file {const char*} 密钥文件全路径,非空
69  * @param key_pass {const char*} 密钥文件的密码,没有密钥密码可写 NULL
70  * @return {bool} 设置是否成功
71  * @deprecated use append_key_cert
72  */
73  virtual bool set_key(const char* key_file, const char* key_pass = NULL)
74  {
75  (void) key_file;
76  (void) key_pass;
77  return false;
78  }
79 
80  /**
81  * 当为服务端模式时是否启用会话缓存功能,有助于提高 SSL 握手效率
82  * @param on {bool}
83  * 注:该函数仅对服务端模式有效
84  */
85  virtual void enable_cache(bool on)
86  {
87  (void) on;
88  }
89 };
90 
91 } // namespace acl
virtual void enable_cache(bool on)
virtual ~sslbase_conf(void)
virtual bool add_cert(const char *crt_file)
virtual bool load_ca(const char *ca_file, const char *ca_path)
#define ACL_CPP_API
virtual bool append_key_cert(const char *crt_file, const char *key_file, const char *key_pass=NULL)
virtual bool set_key(const char *key_file, const char *key_pass=NULL)