acl/lib_acl_cpp/include/acl_cpp/stream/sslbase_conf.hpp
2022-08-21 17:34:05 +08:00

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