mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-13 16:35:35 +08:00
90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#pragma once
|
|
#include "../acl_cpp_define.hpp"
|
|
#include "../stdlib/noncopyable.hpp"
|
|
|
|
namespace acl {
|
|
|
|
class sslbase_io;
|
|
|
|
class ACL_CPP_API sslbase_conf : public noncopyable {
|
|
public:
|
|
sslbase_conf(void) {}
|
|
virtual ~sslbase_conf(void) {}
|
|
|
|
/**
|
|
* 纯虚方法,创建 SSL IO 对象
|
|
* @param nblock {bool} 是否为非阻塞模式
|
|
* @return {sslbase_io*}
|
|
*/
|
|
virtual sslbase_io* create(bool nblock) = 0;
|
|
|
|
public:
|
|
/**
|
|
* 加载 CA 根证书(每个配置实例只需调用一次本方法)
|
|
* @param ca_file {const char*} CA 证书文件全路径
|
|
* @param ca_path {const char*} 多个 CA 证书文件所在目录
|
|
* @return {bool} 加载 CA 根证书是否成功
|
|
* 注:如果 ca_file、ca_path 均非空,则会依次加载所有证书
|
|
*/
|
|
virtual bool load_ca(const char* ca_file, const char* ca_path)
|
|
{
|
|
(void) ca_file;
|
|
(void) ca_path;
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 添加一个服务端/客户端自己的证书,可以多次调用本方法加载多个证书
|
|
* @param crt_file {const char*} 证书文件全路径,非空
|
|
* @param key_file {const char*} 密钥文件全路径,非空
|
|
* @param key_pass {const char*} 密钥文件的密码,没有密钥密码可写 NULL
|
|
* @return {bool} 添加证书是否成功
|
|
*/
|
|
virtual bool add_cert(const char* crt_file, const char* key_file,
|
|
const char* key_pass = NULL)
|
|
{
|
|
(void) crt_file;
|
|
(void) key_file;
|
|
(void) key_pass;
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 添加一个服务端/客户端自己的证书,可以多次调用本方法加载多个证书
|
|
* @param crt_file {const char*} 证书文件全路径,非空
|
|
* @return {bool} 添加证书是否成功
|
|
* @deprecated use add_cert(const char*, const char*, const char*)
|
|
*/
|
|
virtual bool add_cert(const char* crt_file)
|
|
{
|
|
(void) crt_file;
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 添加服务端/客户端的密钥(每个配置实例只需调用一次本方法)
|
|
* @param key_file {const char*} 密钥文件全路径,非空
|
|
* @param key_pass {const char*} 密钥文件的密码,没有密钥密码可写 NULL
|
|
* @return {bool} 设置是否成功
|
|
* @deprecated use add_cert(const char*, const char*, const char*)
|
|
*/
|
|
virtual bool set_key(const char* key_file, const char* key_pass = NULL)
|
|
{
|
|
(void) key_file;
|
|
(void) key_pass;
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 当为服务端模式时是否启用会话缓存功能,有助于提高 SSL 握手效率
|
|
* @param on {bool}
|
|
* 注:该函数仅对服务端模式有效
|
|
*/
|
|
virtual void enable_cache(bool on)
|
|
{
|
|
(void) on;
|
|
}
|
|
};
|
|
|
|
} // namespace acl
|