TuyaOS
tuya_tls.h
浏览该文件的文档.
1
11#ifndef TUYA_TLS_H
12#define TUYA_TLS_H
13
14//mbedtls only used to encryption the seesion,not used to create the seesion
15#include "tuya_cloud_types.h"
16#include "ssl.h"
17#include "tuya_cert_manager.h"
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23typedef PVOID_T tuya_tls_hander;
24
25typedef enum {
26 TSS_INIT = 0,
27 TSS_START,
28 TSS_ACCEPT,
29 TSS_TLS_HAND,
30 TSS_TLS_APP,
31} TLS_TCP_STAT_E;
32
33typedef VOID(*tuya_tls_pre_conn_cb)(CONST CHAR_T *hostname, CONST tuya_tls_hander p_tls_hander);
34typedef INT_T(*tuya_tls_send_cb)(VOID *p_custom_net_ctx, CONST BYTE_T *buf, SIZE_T len);
35typedef INT_T(*tuya_tls_recv_cb)(VOID *p_custom_net_ctx, BYTE_T *buf, SIZE_T len);
36
37typedef enum {
38 TUYA_TLS_PSK_MODE,
39 TUYA_TLS_SERVER_CERT_MODE,
40 TUYA_TLS_MUTUAL_CERT_MODE,
41 TUYA_TLS_HARDWARE_CERT_MODE,
42 TUYA_TLS_AWS_FFS_CERT_MODE,
43} tuya_tls_mode_t;
44
45typedef struct {
46 tuya_tls_mode_t mode;
47 CHAR_T* hostname;
48 UINT_T port;
49 INT_T timeout;
50
51 CHAR_T *psk_key;
52 INT_T psk_key_size;
53 CHAR_T *psk_id;
54 INT_T psk_id_size;
55
56 BOOL_T verify;
57 CHAR_T *ca_cert;
58 INT_T ca_cert_size;
59
60 CHAR_T *client_cert;
61 INT_T client_cert_size;
62 CHAR_T *client_pkey;
63 INT_T client_pkey_size;
64
65 size_t in_content_len;
66 size_t out_content_len;
67
68 tuya_tls_send_cb f_send;
69 tuya_tls_recv_cb f_recv;
70 tuya_tls_event_cb exception_cb;
71 void* user_data;
73
80
88int tuya_tls_random(unsigned char *output, size_t output_len);
89
96
103
112VOID tuya_tls_register_constant(IN CHAR_T *p_uuid, IN CHAR_T *p_authkey, IN CHAR_T *p_psk_key);
113
123INT_T tuya_tls_register_x509_crt_der(VOID *p_ctx, UCHAR_T *p_der, UINT_T der_len);
124
130VOID tuya_tls_register_pre_conn_cb(tuya_tls_pre_conn_cb pre_conn);
131
137OPERATE_RET tuya_tls_init();
138
144tuya_tls_hander* tuya_tls_connect_create(void);
145
151void tuya_tls_connect_destroy(tuya_tls_hander p_tls_hander);
152
160OPERATE_RET tuya_tls_config_set(tuya_tls_hander p_tls_handler, tuya_tls_config_t* config);
161
168tuya_tls_config_t* tuya_tls_config_get(tuya_tls_hander p_tls_handler);
169
181OPERATE_RET tuya_tls_connect(tuya_tls_hander p_tls_handler, IN CHAR_T *hostname, IN INT_T port_num,
182 IN INT_T socket_fd, IN INT_T overtime_s);
183
193INT_T tuya_tls_write(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len);
194
204INT_T tuya_tls_read(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len);
205
213OPERATE_RET tuya_tls_disconnect(IN tuya_tls_hander tls_handler);
214
224int __tuya_tls_random(void *p_rng, unsigned char *output, size_t output_len);
225
231
238
239#ifdef __cplusplus
240}
241
242#endif
243#endif
244
245
Definition: tuya_tls.h:45
Tuya Cert Manager include
VOID(* tuya_tls_event_cb)(TY_TLS_EVENT_E event, VOID *p_args)
tls event cb
Definition: tuya_cert_manager.h:146
OPERATE_RET tuya_tls_init()
tls init
int tuya_tls_random(unsigned char *output, size_t output_len)
Get mbedtls random data in the specified length
OPERATE_RET tuya_tls_config_set(tuya_tls_hander p_tls_handler, tuya_tls_config_t *config)
VOID tuya_tls_register_constant(IN CHAR_T *p_uuid, IN CHAR_T *p_authkey, IN CHAR_T *p_psk_key)
tls register
const tuya_tls_config_t * tuya_tls_psk_mode_config_get(void)
int tuya_tls_random_init(void)
mbedtls random initialization
void tuya_tls_set_calloc_and_free(void)
set tls calloc and free function
tuya_tls_hander * tuya_tls_connect_create(void)
tls hander create
OPERATE_RET tuya_tls_connect(tuya_tls_hander p_tls_handler, IN CHAR_T *hostname, IN INT_T port_num, IN INT_T socket_fd, IN INT_T overtime_s)
tls connect
void tuya_tls_connect_destroy(tuya_tls_hander p_tls_hander)
INT_T tuya_tls_write(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len)
tls write
INT_T tuya_tls_read(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len)
tls read
int __tuya_tls_random(void *p_rng, unsigned char *output, size_t output_len)
generated random
int tuya_tls_random_deinit(void)
mbedtls random de-init, and free mbedtls random ctx
int tuya_tls_random_reinit(void)
mbedtls random re-initialization
INT_T tuya_tls_register_x509_crt_der(VOID *p_ctx, UCHAR_T *p_der, UINT_T der_len)
tls register x509 ca
tuya_tls_config_t * tuya_tls_config_get(tuya_tls_hander p_tls_handler)
VOID tuya_tls_register_pre_conn_cb(tuya_tls_pre_conn_cb pre_conn)
register cb invoked before tls handshake
OPERATE_RET tuya_tls_disconnect(IN tuya_tls_hander tls_handler)
generated random