acl
3.5.3.0
mbedtls_conf.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "../stdlib/thread_mutex.hpp"
4
#include "
sslbase_conf.hpp
"
5
#include <vector>
6
7
namespace
acl
8
{
9
10
/**
11
* SSL 证书校验级别类型定义
12
*/
13
typedef
enum
14
{
15
MBEDTLS_VERIFY_NONE
,
// 不校验证书
16
MBEDTLS_VERIFY_OPT
,
// 选择性校验,可以在握手时或握手后校验
17
MBEDTLS_VERIFY_REQ
// 要求在握手时校验
18
}
mbedtls_verify_t
;
19
20
class
mbedtls_io;
21
22
/**
23
* SSL 连接对象的配置类,该类对象一般可以声明为全局对象,用来对每一个 SSL
24
* 连接对象进行证书配置;该类加载了全局性的证书、密钥等信息;每一个 SSL 对象
25
* (mbedtls_io) 调用本对象的setup_certs 方法来初始化自身的证书、密钥等信息
26
*/
27
class
ACL_CPP_API
mbedtls_conf
:
public
sslbase_conf
28
{
29
public
:
30
/**
31
* 构造函数
32
* @param server_side {bool} 用来指定是服务端还是客户端,当为 true 时
33
* 为服务端模式,否则为客户端模式
34
* @param verify_mode {mbedtls_verify_t} SSL 证书校验级别
35
*/
36
mbedtls_conf
(
bool
server_side =
false
,
37
mbedtls_verify_t
verify_mode =
MBEDTLS_VERIFY_NONE
);
38
~
mbedtls_conf
(
void
);
39
40
/**
41
* @override
42
*/
43
bool
load_ca(
const
char
* ca_file,
const
char
* ca_path);
44
45
/**
46
* @override
47
*/
48
bool
append_key_cert(
const
char
* crt_file,
const
char
* key_file,
49
const
char
* key_pass = NULL);
50
51
/**
52
* @override
53
*/
54
bool
add_cert(
const
char
* crt_file);
55
56
/**
57
* @override
58
*/
59
bool
set_key(
const
char
* key_file,
const
char
* key_pass = NULL);
60
61
/**
62
* @override
63
*/
64
void
enable_cache(
bool
on);
65
66
public
:
67
/**
68
* mbedtls_io::open 内部会调用本方法用来安装当前 SSL 连接对象的证书
69
* @param ssl {void*} SSL 连接对象,为 ssl_context 类型
70
* @return {bool} 配置 SSL 对象是否成功
71
*/
72
bool
setup_certs(
void
* ssl);
73
74
/**
75
* 获得随机数生成器的熵对象
76
* @return {void*},返回值为 entropy_context 类型
77
*/
78
void
*
get_entropy
(
void
)
79
{
80
return
entropy_;
81
}
82
83
public
:
84
/**
85
* 如果 mbedtls 分成三个库,可以调用本函数设置三个动态库的全路径
86
* @param libmbedcrypto {const char*} libmbedcrypto 动态库的全路径
87
* @param libmbedx509 {const char*} libmbedx509 动态库的全路径
88
* @param libmbedtls {const char*} libmbedtls 动态库的全路径
89
*/
90
static
void
set_libpath(
const
char
* libmbedcrypto,
91
const
char
* libmbedx509,
const
char
* libmbedtls);
92
93
/**
94
* 如果 mbedtls 合成一个库,可以调用本函数设置一个动态库的全路径
95
* @param libmbedtls {const char*} libmbedtls 动态库的全路径
96
*/
97
static
void
set_libpath(
const
char
* libmbedtls);
98
99
/**
100
* 显式调用本方法,动态加载 mbedtls 动态库
101
* @return {bool} 加载是否成功
102
*/
103
static
bool
load(
void
);
104
105
public
:
106
// @override sslbase_conf
107
sslbase_io
* create(
bool
nblock);
108
109
private
:
110
friend
class
mbedtls_io
;
111
112
unsigned
init_status_;
113
unsigned
cert_status_;
114
thread_mutex
lock_;
115
116
bool
server_side_;
117
118
void
* conf_;
119
void
* entropy_;
120
void
* rnd_;
121
void
* cacert_;
122
void
* pkey_;
123
void
* cert_chain_;
124
void
* cache_;
125
mbedtls_verify_t
verify_mode_;
126
std::vector<std::pair<void*, void*> > cert_keys_;
127
128
private
:
129
bool
init_once(
void
);
130
bool
init_rand(
void
);
131
void
free_ca(
void
);
132
};
133
134
}
// namespace acl
acl::MBEDTLS_VERIFY_OPT
Definition:
mbedtls_conf.hpp:16
acl::mbedtls_io
Definition:
mbedtls_io.hpp:16
acl::sslbase_io
Definition:
sslbase_io.hpp:13
acl::MBEDTLS_VERIFY_REQ
Definition:
mbedtls_conf.hpp:17
acl::mbedtls_conf::get_entropy
void * get_entropy(void)
Definition:
mbedtls_conf.hpp:78
acl
Definition:
acl_cpp_init.hpp:4
sslbase_conf.hpp
acl::mbedtls_conf
Definition:
mbedtls_conf.hpp:27
acl::sslbase_conf
Definition:
sslbase_conf.hpp:10
acl::thread_mutex
Definition:
thread_mutex.hpp:19
acl::MBEDTLS_VERIFY_NONE
Definition:
mbedtls_conf.hpp:15
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::mbedtls_verify_t
mbedtls_verify_t
Definition:
mbedtls_conf.hpp:13
include
acl_cpp
stream
mbedtls_conf.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15