SSL/TLS
如果对SSL/TLS不是很熟悉,觉得各种证书很混乱,可以参照这篇文章生成证书
例程:demo/ssl
1. 枚举类型
1.1. SSL_Version_t
SSL/TLS版本
typedef enum{
SSL_VERSION_SSLv3 = 0,
SSL_VERSION_TLSv1 ,
SSL_VERSION_TLSv1_1 ,
SSL_VERSION_TLSv1_2 ,
SSL_VERSION_MAX
}SSL_Version_t;
1.2. SSL_Error_t
错误信息
typedef enum{
SSL_ERROR_NONE = 0x00 ,
SSL_ERROR_PARAM = -0x01 ,
SSL_ERROR_PARSE = -0x02 ,
SSL_ERROR_MALLOC_FAIL= -3 ,
SSL_ERROR_CONNECTION = -4 ,
SSL_ERROR_TIMEOUT = -5 ,
SSL_ERROR_FAIL = -6 ,
SSL_ERROR_INTERNAL ,
SSL_ERROR_MAX
} SSL_Error_t;
1.3. SSL_Verify_Mode_t
验证模式
typedef enum{
SSL_VERIFY_MODE_NONE = 0,
SSL_VERIFY_MODE_OPTIONAL = 1,
SSL_VERIFY_MODE_REQUIRED = 2,
SSL_VERIFY_MODE_MAX
}SSL_Verify_Mode_t;
2. 结构体类型
2.1. SSL_Config_t
SSL/TLS配置
typedef struct{
const char* caCert;
const char* caCrl;
const char* clientCert;
const char* clientKey;
const char* clientKeyPasswd;
const char* hostName;
SSL_Version_t minVersion;
SSL_Version_t maxVersion;
SSL_Verify_Mode_t verifyMode;
const char* entropyCustom; //自定义混淆字符
//////////////////////////////////
void* obj;//do not edit it
//////////////////////////////////
} SSL_Config_t;
3. 功能函数
3.1. SSL_Init
SSL_Error_t SSL_Init(SSL_Config_t* sslConfig);
功能
初始化SSL/TLS
参数
- sslConfig:初始化配置参数
返回值
- 返回错误信息
3.2. SSL_Connect
SSL_Error_t SSL_Connect(SSL_Config_t* sslConfig, const char* server, const char* port);
功能
用SSL/TLS协议连接服务器
参数
- sslConfig:SSL/TLS配置信息
- server:需要连接的SSL/TLS服务器
- port:服务器端口
返回值
- 返回错误信息
3.3. SSL_Write
int SSL_Write(SSL_Config_t* sslConfig, uint8_t* data, int length, int timeoutMs);
功能
SSL/TLS发送数据(阻塞)
参数
- sslConfig:SSL/TLS配置
- data:发送给服务器的数据
- length:发送给服务器的数据的长度
- timeoutMs:发送超时时间(保留,暂不可用)
返回值
- 成功发送的数据长度或错误代码
3.4. SSL_Read
int SSL_Read(SSL_Config_t* sslConfig, uint8_t* data, int length, int timeoutMs);
功能
读取数据
参数
- sslConfig:SSL/TLS配置
- data:接收到的数据
- length:接收到的数据的长度
- timeoutMs:接收超时时间
返回值
- 成功接收的数据长度或者错误代码
3.5. SSL_Close
SSL_Error_t SSL_Close(SSL_Config_t* sslConfig);
功能
关闭连接
参数
- sslConfig:SSL/TLS配置
返回值
- 关闭错误信息
3.6. SSL_Destroy
SSL_Error_t SSL_Destroy(SSL_Config_t* sslConfig);
功能
释放SSL/TLS占用的空间
参数
- sslConfig:SSL/TLS配置
返回值
- 释放错误信息