9#ifndef __TUYA_IOT_DEV_CHECK__
10#define __TUYA_IOT_DEV_CHECK__
11#include "tuya_cloud_types.h"
13#define TY_DEV_RANDOM_LENGTH 16
14#define TY_DEV_KEY_LENGTH 16
15#define TY_DEV_SHA256_DIGEST_SIZE 32
16#define TY_DEV_RANDOM_AES_LEN 32
17#define TY_DEV_SESSION_KEY_LEN 16
18#define ENCRYPT_AUTHKEY_HMACRA_NAME "hmacRandomA"
19#define ENCRYPT_AUTHKEY_HMACRB_NAME "hmacRandomB"
20#define ENCRYPT_AUTHKEY_AESRB_NAME "aesRandomB"
21#define ENCRYPT_AUTHKEY_SESSIONKEY_NAME "sessionKey"
22#define TY_DEV_IS_INDEPENDENT_NAME "isIndependent"
23#define TY_DEV_IS_SUB_NAME "isSub"
24#define TY_DEV_IS_FAMILY_NAME "isFamily"
37OPERATE_RET tuya_dev_gen_ra_check(OUT BYTE_T RA[TY_DEV_RANDOM_LENGTH], OUT BYTE_T ra_en_hex[TY_DEV_RANDOM_AES_LEN],
38 OUT BYTE_T ra_uuid_hmac[TY_DEV_SHA256_DIGEST_SIZE], OUT BYTE_T ra_hmac[TY_DEV_SHA256_DIGEST_SIZE]);
56OPERATE_RET tuya_dev_http_ra_check_exchange(IN CONST CHAR_T* uuid, IN CONST BYTE_T* ra_aes_hex, UINT_T ra_aes_hex_len,
57 IN CONST BYTE_T* ra_uuid_hmac_hex, UINT_T ra_uuid_hmac_hex_len, OUT BYTE_T* ra_hmac, OUT BYTE_T* rb_aes,
58 OUT BYTE_T* rb_hmac, OUT BYTE_T* session_key);
72OPERATE_RET tuya_dev_rarb_session_key_calc(IN BYTE_T* auth_key, IN BYTE_T rb_aes[TY_DEV_RANDOM_AES_LEN],
73 IN BYTE_T RA[TY_DEV_RANDOM_LENGTH], OUT BYTE_T rb_hmac[TY_DEV_SHA256_DIGEST_SIZE],
74 OUT BYTE_T session_key[TY_DEV_SESSION_KEY_LEN]);
84OPERATE_RET tuya_dev_gen_uuid_hmac(OUT BYTE_T uuid_hmac[TY_DEV_SHA256_DIGEST_SIZE]);
99OPERATE_RET tuya_dev_http_relation_exchange(IN CONST CHAR_T* uuid, IN CONST BYTE_T* hmacAuthKey_hex, UINT_T hmacAuthKey_hex_len,
100 OUT INT_T *isIndependent, OUT INT_T *isSub, OUT INT_T *isFamily);