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 INT_T(*tuya_tls_send_cb)(VOID *p_custom_net_ctx, CONST BYTE_T *buf, SIZE_T len);
34typedef INT_T(*tuya_tls_recv_cb)(VOID *p_custom_net_ctx, BYTE_T *buf, SIZE_T len);
35
36typedef enum {
37 TUYA_TLS_PSK_MODE,
38 TUYA_TLS_SERVER_CERT_MODE,
39 TUYA_TLS_MUTUAL_CERT_MODE,
40 TUYA_TLS_HARDWARE_CERT_MODE,
41 TUYA_TLS_AWS_FFS_CERT_MODE,
42} tuya_tls_mode_t;
43
44typedef struct {
45 tuya_tls_mode_t mode;
46 CHAR_T* hostname;
47 UINT_T port;
48 INT_T timeout;
49
50 CHAR_T *psk_key;
51 INT_T psk_key_size;
52 CHAR_T *psk_id;
53 INT_T psk_id_size;
54
55 BOOL_T verify;
56 CHAR_T *ca_cert;
57 INT_T ca_cert_size;
58
59 CHAR_T *client_cert;
60 INT_T client_cert_size;
61 CHAR_T *client_pkey;
62 INT_T client_pkey_size;
63
64 size_t in_content_len;
65 size_t out_content_len;
66
67 tuya_tls_send_cb f_send;
68 tuya_tls_recv_cb f_recv;
69 tuya_tls_event_cb exception_cb;
70 void* user_data;
72
79
87int tuya_tls_random(unsigned char *output, size_t output_len);
88
95
102
111VOID tuya_tls_register_constant(IN CHAR_T *p_uuid, IN CHAR_T *p_authkey, IN CHAR_T *p_psk_key);
112
122INT_T tuya_tls_register_x509_crt_der(VOID *p_ctx, UCHAR_T *p_der, UINT_T der_len);
123
129OPERATE_RET tuya_tls_init();
130
136tuya_tls_hander* tuya_tls_connect_create(void);
137
143void tuya_tls_connect_destroy(tuya_tls_hander p_tls_hander);
144
152OPERATE_RET tuya_tls_config_set(tuya_tls_hander p_tls_handler, tuya_tls_config_t* config);
153
160tuya_tls_config_t* tuya_tls_config_get(tuya_tls_hander p_tls_handler);
161
173OPERATE_RET tuya_tls_connect(tuya_tls_hander p_tls_handler, IN CHAR_T *hostname, IN INT_T port_num,
174 IN INT_T socket_fd, IN INT_T overtime_s);
175
185INT_T tuya_tls_write(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len);
186
196INT_T tuya_tls_read(IN tuya_tls_hander tls_handler, BYTE_T *buf, UINT_T len);
197
205OPERATE_RET tuya_tls_disconnect(IN tuya_tls_hander tls_handler);
206
216int __tuya_tls_random(void *p_rng, unsigned char *output, size_t output_len);
217
223
230
231#ifdef __cplusplus
232}
233
234#endif
235#endif
236
237
Definition: tuya_tls.h:44
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)
OPERATE_RET tuya_tls_disconnect(IN tuya_tls_hander tls_handler)
generated random