TuyaOS
tal_symmetry.h
浏览该文件的文档.
1
11#ifndef __TAL_SYMMETRY_H__
12#define __TAL_SYMMETRY_H__
13
14#include "tuya_cloud_types.h"
15#include "tkl_symmetry.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21typedef enum{
22 SYMMETRY_DECRYPT = 0,
23 SYMMETRY_ENCRYPT = 1,
24}TAL_SYMMETRY_CRYPT_MODE;
25
35OPERATE_RET tal_aes_create_init( TKL_SYMMETRY_HANDLE *ctx );
36
46OPERATE_RET tal_aes_free( TKL_SYMMETRY_HANDLE ctx );
47
63OPERATE_RET tal_aes_setkey_enc( TKL_SYMMETRY_HANDLE ctx, UINT8_T *key,
64 UINT32_T keybits );
65
81OPERATE_RET tal_aes_setkey_dec( TKL_SYMMETRY_HANDLE ctx, UINT8_T *key,
82 UINT32_T keybits );
83
101OPERATE_RET tal_aes_crypt_ecb( TKL_SYMMETRY_HANDLE ctx,
102 INT32_T mode,
103 size_t length,
104 UINT8_T *input,
105 UINT8_T *output );
106
142OPERATE_RET tal_aes_crypt_cbc( TKL_SYMMETRY_HANDLE ctx,
143 INT32_T mode,
144 size_t length,
145 UINT8_T iv[16],
146 UINT8_T *input,
147 UINT8_T *output );
148
149
150
151OPERATE_RET tal_aes_crypt_ctr(TKL_SYMMETRY_HANDLE ctx,
152 size_t length,
153 size_t * nc_off,
154 UINT8_T nonce_counter[16],
155 UINT8_T stream_block [16],
156 UINT8_T *input,
157 UINT8_T *output );
158
159OPERATE_RET tal_aes128_ecb_encode_raw(UINT8_T *data,
160 size_t len,
161 UINT8_T *ec_data,
162 UINT8_T *key );
163
164OPERATE_RET tal_aes128_ecb_decode_raw(UINT8_T *data,
165 size_t len,
166 UINT8_T *dec_data,
167 UINT8_T *key );
168
169OPERATE_RET tal_aes128_cbc_encode_raw(UINT8_T *data,
170 size_t len,
171 UINT8_T *key,
172 UINT8_T *iv,
173 UINT8_T *ec_data );
174
175OPERATE_RET tal_aes128_cbc_decode_raw(UINT8_T *data,
176 size_t len,
177 UINT8_T *key,
178 UINT8_T *iv,
179 UINT8_T *dec_data );
180
181OPERATE_RET tal_aes256_cbc_encode_raw(UINT8_T *data,
182 size_t len,
183 UINT8_T *key,
184 UINT8_T *iv,
185 UINT8_T *ec_data );
186
187OPERATE_RET tal_aes256_cbc_decode_raw(UINT8_T *data,
188 size_t len,
189 UINT8_T *key,
190 UINT8_T *iv,
191 UINT8_T *dec_data );
192
193OPERATE_RET tal_aes256_ctr_raw(UINT8_T *input,
194 size_t len,
195 UINT8_T *key,
196 size_t * nc_off,
197 UINT8_T nonce_counter[16],
198 UINT8_T stream_block [16],
199 UINT8_T *output );
200
201UINT32_T tal_pkcs7padding_buffer(UINT8_T *p_buffer, UINT32_T length);
202
203INT32_T tal_get_actual_length(IN UINT8_T *dec_data, IN UINT32_T dec_data_len);
204
205OPERATE_RET tal_aes128_ecb_encode(IN UINT8_T *data, IN UINT32_T len, \
206 OUT UINT8_T **ec_data, OUT UINT32_T *ec_len, \
207 IN UINT8_T *key);
208
209OPERATE_RET tal_aes128_ecb_decode(IN UINT8_T *data, IN UINT32_T len, \
210 OUT UINT8_T **dec_data, OUT UINT32_T *dec_len, \
211 IN UINT8_T *key);
212
213OPERATE_RET tal_aes128_cbc_encode(IN UINT8_T *data, IN UINT32_T len, \
214 IN UINT8_T *key, IN UINT8_T *iv, \
215 OUT UINT8_T **ec_data, OUT UINT32_T *ec_len);
216
217OPERATE_RET tal_aes128_cbc_decode(IN UINT8_T *data, IN UINT32_T len, \
218 IN UINT8_T *key, IN UINT8_T *iv, \
219 OUT UINT8_T **dec_data, OUT UINT32_T *dec_len);
220
221OPERATE_RET tal_aes_free_data(IN UINT8_T *data);
222
223OPERATE_RET tal_aes_self_test( INT32_T verbose );
224
225#ifdef __cplusplus
226} // extern "C"
227#endif
228
229#endif
230
OPERATE_RET tal_aes_crypt_cbc(TKL_SYMMETRY_HANDLE ctx, INT32_T mode, size_t length, UINT8_T iv[16], UINT8_T *input, UINT8_T *output)
This function performs an AES-CBC encryption or decryption operation on full blocks.
OPERATE_RET tal_aes_create_init(TKL_SYMMETRY_HANDLE *ctx)
This function Create&initializes a aes context.
OPERATE_RET tal_aes_free(TKL_SYMMETRY_HANDLE ctx)
This function releases and clears the specified AES context.
OPERATE_RET tal_aes_setkey_dec(TKL_SYMMETRY_HANDLE ctx, UINT8_T *key, UINT32_T keybits)
This function sets the decryption key.
OPERATE_RET tal_aes_crypt_ecb(TKL_SYMMETRY_HANDLE ctx, INT32_T mode, size_t length, UINT8_T *input, UINT8_T *output)
This function performs an AES encryption or decryption operation.
OPERATE_RET tal_aes_setkey_enc(TKL_SYMMETRY_HANDLE ctx, UINT8_T *key, UINT32_T keybits)
This function sets the encryption key.