87 lines
2.6 KiB
C
87 lines
2.6 KiB
C
|
|
#ifndef __SSL_SOCKET_ADAPTER_H__
|
|||
|
|
#define __SSL_SOCKET_ADAPTER_H__
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
int8 is_server;
|
|||
|
|
int8 verify_cert; // 是否验证客户端证书(0=不验证,1=验证)
|
|||
|
|
int8 debug, r2;
|
|||
|
|
const char *cert; // 服务器证书数据(PEM/DER 自动识别)
|
|||
|
|
const char *key; // 服务器私钥数据(PEM/DER 自动识别)
|
|||
|
|
const char *ca_cert; // CA证书数据(仅verify_cert=1时需传)
|
|||
|
|
uint32 max_session_cache; // 会话缓存最大条目(默认100)
|
|||
|
|
uint32 session_timeout_sec; // 会话超时时间(秒,默认30)
|
|||
|
|
} ssl_sock_init_param;
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
/**
|
|||
|
|
* @brief 初始化SSL全局上下文
|
|||
|
|
* @param param 初始化参数
|
|||
|
|
* @return void * 全局上下文指针
|
|||
|
|
*/
|
|||
|
|
void *(*global_init)(const ssl_sock_init_param *param);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 全局资源销毁
|
|||
|
|
* @param global_ctx 全局上下文指针
|
|||
|
|
*/
|
|||
|
|
void (*global_destroy)(void *global_ctx);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 创建连接上下文
|
|||
|
|
* @param global_ctx 全局上下文指针
|
|||
|
|
* @return void * 连接上下文指针
|
|||
|
|
*/
|
|||
|
|
void *(*conn_create)(void *global_ctx);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 连接上下文销毁
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
*/
|
|||
|
|
void (*conn_destroy)(void *conn_ctx);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief TLS握手
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
* @param sockfd 套接字文件描述符
|
|||
|
|
* @param step 是否由外部代码控制握手过程
|
|||
|
|
* @return int 0成功,-1失败
|
|||
|
|
*/
|
|||
|
|
int (*handshake)(void *conn_ctx, int sockfd, int step);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 加密发送
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
* @param data 数据指针
|
|||
|
|
* @param len 数据长度
|
|||
|
|
* @return int32 发送字节数
|
|||
|
|
*/
|
|||
|
|
int32(*send)(void *conn_ctx, const uint8 *data, uint32 len);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 加密接收
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
* @param buf 接收缓冲区指针
|
|||
|
|
* @param buf_len 接收缓冲区长度
|
|||
|
|
* @return int32 接收字节数
|
|||
|
|
*/
|
|||
|
|
int32(*recv)(void *conn_ctx, uint8 *buf, uint32 buf_len);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 优雅关闭
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
*/
|
|||
|
|
void (*shutdown)(void *conn_ctx);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取错误信息
|
|||
|
|
* @param conn_ctx 连接上下文指针
|
|||
|
|
* @return const char* 错误信息指针
|
|||
|
|
*/
|
|||
|
|
const char *(*get_error)(void *conn_ctx);
|
|||
|
|
} sslsock_ops;
|
|||
|
|
|
|||
|
|
extern const sslsock_ops sslsock_mbedtls_ops;
|
|||
|
|
|
|||
|
|
#endif // __UHTTPD_SSL_ADAPTER_H__
|
|||
|
|
|