54#ifndef MBEDTLS_CONFIG_H_TY
55#define MBEDTLS_CONFIG_H_TY
57#define TUYA_TLS_DYNAMIC_MEMORY_ALLOCATION 1
59#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
60#define _CRT_SECURE_NO_DEPRECATE 1
162#ifdef ENABLE_MBEDTLS_HAVE_TIME
163#define MBEDTLS_HAVE_TIME
165#undef MBEDTLS_HAVE_TIME
187#ifdef ENABLE_MBEDTLS_HAVE_TIME_DATE
188#define MBEDTLS_HAVE_TIME_DATE
190#undef MBEDTLS_HAVE_TIME_DATE
214#define MBEDTLS_PLATFORM_MEMORY
278#define MBEDTLS_DEPRECATED_WARNING
682#define MBEDTLS_CIPHER_MODE_CBC
689#define MBEDTLS_CIPHER_MODE_CFB
696#define MBEDTLS_CIPHER_MODE_CTR
703#define MBEDTLS_CIPHER_MODE_OFB
710#define MBEDTLS_CIPHER_MODE_XTS
756#define MBEDTLS_CIPHER_PADDING_PKCS7
757#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
758#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
759#define MBEDTLS_CIPHER_PADDING_ZEROS
797#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
827#ifdef ENABLE_MBEDTLS_ECP_DP_SECP192R1_ENABLED
828#define MBEDTLS_ECP_DP_SECP192R1_ENABLED
830#undef MBEDTLS_ECP_DP_SECP192R1_ENABLED
833#ifdef ENABLE_MBEDTLS_ECP_DP_SECP224R1_ENABLED
834#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
836#undef MBEDTLS_ECP_DP_SECP224R1_ENABLED
839#ifdef ENABLE_MBEDTLS_ECP_DP_SECP256R1_ENABLED
840#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
842#undef MBEDTLS_ECP_DP_SECP256R1_ENABLED
845#ifdef ENABLE_MBEDTLS_ECP_DP_SECP384R1_ENABLED
846#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
848#undef MBEDTLS_ECP_DP_SECP384R1_ENABLED
851#ifdef ENABLE_MBEDTLS_ECP_DP_SECP521R1_ENABLED
852#define MBEDTLS_ECP_DP_SECP521R1_ENABLED
854#undef MBEDTLS_ECP_DP_SECP521R1_ENABLED
857#ifdef ENABLE_MBEDTLS_ECP_DP_SECP192K1_ENABLED
858#define MBEDTLS_ECP_DP_SECP192K1_ENABLED
860#undef MBEDTLS_ECP_DP_SECP192K1_ENABLED
863#ifdef ENABLE_MBEDTLS_ECP_DP_SECP224K1_ENABLED
864#define MBEDTLS_ECP_DP_SECP224K1_ENABLED
866#undef MBEDTLS_ECP_DP_SECP224K1_ENABLED
869#ifdef ENABLE_MBEDTLS_ECP_DP_SECP256K1_ENABLED
870#define MBEDTLS_ECP_DP_SECP256K1_ENABLED
872#undef MBEDTLS_ECP_DP_SECP256K1_ENABLED
875#ifdef ENABLE_MBEDTLS_ECP_DP_BP256R1_ENABLED
876#define MBEDTLS_ECP_DP_BP256R1_ENABLED
878#undef MBEDTLS_ECP_DP_BP256R1_ENABLED
881#ifdef ENABLE_MBEDTLS_ECP_DP_BP384R1_ENABLED
882#define MBEDTLS_ECP_DP_BP384R1_ENABLED
884#undef MBEDTLS_ECP_DP_BP384R1_ENABLED
887#ifdef ENABLE_MBEDTLS_ECP_DP_BP512R1_ENABLED
888#define MBEDTLS_ECP_DP_BP512R1_ENABLED
890#undef MBEDTLS_ECP_DP_BP512R1_ENABLED
893#ifdef ENABLE_MBEDTLS_ECP_DP_CURVE25519_ENABLED
894#define MBEDTLS_ECP_DP_CURVE25519_ENABLED
896#undef MBEDTLS_ECP_DP_CURVE25519_ENABLED
899#ifdef ENABLE_MBEDTLS_ECP_DP_CURVE448_ENABLED
900#define MBEDTLS_ECP_DP_CURVE448_ENABLED
902#undef MBEDTLS_ECP_DP_CURVE448_ENABLED
914#ifdef ENABLE_MBEDTLS_ECP_NIST_OPTIM
915#define MBEDTLS_ECP_NIST_OPTIM
917#undef MBEDTLS_ECP_NIST_OPTIM
999#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_PSK
1000#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
1002#undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
1034#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_DHE_PSK
1035#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
1037#undef MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
1058#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK
1059#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
1061#undef MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
1087#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_RSA_PSK
1088#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
1090#undef MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
1119#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_RSA
1120#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
1122#undef MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
1156#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_DHE_RSA
1157#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
1159#undef MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
1185#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA
1186#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
1188#undef MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
1213#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA
1214#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
1216#undef MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
1241#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA
1242#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
1244#undef MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
1269#ifdef ENABLE_MBEDTLS_KEY_EXCHANGE_ECDH_RSA
1270#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
1272#undef MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
1306#define MBEDTLS_PK_PARSE_EC_EXTENDED
1321#define MBEDTLS_ERROR_STRERROR_DUMMY
1330#ifdef ENABLE_MBEDTLS_GENPRIME
1331#define MBEDTLS_GENPRIME
1333#undef MBEDTLS_GENPRIME
1341#ifdef ENABLE_MBEDTLS_FS_IO
1342#define MBEDTLS_FS_IO
1368#define MBEDTLS_NO_PLATFORM_ENTROPY
1411#define MBEDTLS_ENTROPY_NV_SEED
1456#ifdef ENABLE_MBEDTLS_RSA_C
1457#define MBEDTLS_PKCS1_V15
1459#undef MBEDTLS_PKCS1_V15
1470#ifdef ENABLE_MBEDTLS_RSA_C
1471#define MBEDTLS_PKCS1_V21
1473#undef MBEDTLS_PKCS1_V21
1521#define MBEDTLS_SSL_ALL_ALERT_MESSAGES
1566#define MBEDTLS_SSL_ENCRYPT_THEN_MAC
1584#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET
1674#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1698#ifdef ENABLE_MBEDTLS_SSL_PROTO_TLS1
1699#define MBEDTLS_SSL_PROTO_TLS1
1701#undef MBEDTLS_SSL_PROTO_TLS1
1714#ifdef ENABLE_MBEDTLS_SSL_PROTO_TLS1_1
1715#define MBEDTLS_SSL_PROTO_TLS1_1
1717#undef MBEDTLS_SSL_PROTO_TLS1_1
1730#ifdef ENABLE_MBEDTLS_SSL_PROTO_TLS1_2
1731#define MBEDTLS_SSL_PROTO_TLS1_2
1733#undef MBEDTLS_SSL_PROTO_TLS1_2
1831#ifdef ENABLE_MBEDTLS_CLIENT_SSL_SESSION_TICKETS
1832#define MBEDTLS_SSL_SESSION_TICKETS
1834#undef MBEDTLS_SSL_SESSION_TICKETS
1917#define MBEDTLS_THREADING_ALT
1941#define MBEDTLS_VERSION_FEATURES
1977#ifdef ENABLE_MBEDTLS_X509_CRT
1978#define MBEDTLS_X509_CHECK_KEY_USAGE
1980#undef MBEDTLS_X509_CHECK_KEY_USAGE
1994#ifdef ENABLE_MBEDTLS_X509_CRT
1995#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE
1997#undef MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE
2007#ifdef ENABLE_MBEDTLS_X509_CRT
2008#define MBEDTLS_X509_RSASSA_PSS_SUPPORT
2010#undef MBEDTLS_X509_RSASSA_PSS_SUPPORT
2132#ifdef ENABLE_MBEDTLS_AES_C
2133#define MBEDTLS_AES_C
2164#ifdef ENABLE_MBEDTLS_RC4_ENABLED
2165#define MBEDTLS_ARC4_C
2166#undef MBEDTLS_REMOVE_ARC4_CIPHERSUITES
2167#elif defined ENABLE_MBEDTLS_RC4_ENABLED_NO_DEFAULT
2168#define MBEDTLS_ARC4_C
2169#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
2171#undef MBEDTLS_ARC4_C
2172#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
2187#define MBEDTLS_ASN1_PARSE_C
2201#define MBEDTLS_ASN1_WRITE_C
2213#define MBEDTLS_BASE64_C
2230#define MBEDTLS_BIGNUM_C
2239#ifdef ENABLE_MBEDTLS_BLOWFISH_C
2240#define MBEDTLS_BLOWFISH_C
2242#undef MBEDTLS_BLOWFISH_C
2298#ifdef ENABLE_MBEDTLS_CAMELLIA_C
2299#define MBEDTLS_CAMELLIA_C
2301#undef MBEDTLS_CAMELLIA_C
2368#ifdef ENABLE_MBEDTLS_CCM_C
2369#define MBEDTLS_CCM_C
2393#ifdef ENABLE_MBEDTLS_CHACHA20_C
2394#define MBEDTLS_CHACHA20_C
2396#undef MBEDTLS_CHACHA20_C
2408#ifdef ENABLE_MBEDTLS_CHACHAPOLY_C
2409#define MBEDTLS_CHACHAPOLY_C
2411#undef MBEDTLS_CHACHAPOLY_C
2424#define MBEDTLS_CIPHER_C
2437#ifdef ENABLE_MBEDTLS_CMAC_C
2438#define MBEDTLS_CMAC_C
2440#undef MBEDTLS_CMAC_C
2460#define MBEDTLS_CTR_DRBG_C
2474#if ENABLE_MBEDTLS_DEBUG
2475#define MBEDTLS_DEBUG_C
2477#undef MBEDTLS_DEBUG_C
2507#ifdef ENABLE_MBEDTLS_DES_C
2508#define MBEDTLS_DES_C
2532#ifdef ENABLE_MBEDTLS_DHM_C
2533#define MBEDTLS_DHM_C
2552#ifdef ENABLE_MBEDTLS_ECDH_C
2553#define MBEDTLS_ECDH_C
2555#undef MBEDTLS_ECDH_C
2571#ifdef ENABLE_MBEDTLS_ECDSA_C
2572#define MBEDTLS_ECDSA_C
2574#undef MBEDTLS_ECDSA_C
2608#ifdef ENABLE_MBEDTLS_ECP_C
2609#define MBEDTLS_ECP_C
2626#define MBEDTLS_ENTROPY_C
2638#define MBEDTLS_ERROR_C
2652#ifdef ENABLE_MBEDTLS_GCM_C
2653#define MBEDTLS_GCM_C
2693#define MBEDTLS_HKDF_C
2707#ifdef ENABLE_MBEDTLS_HMAC_DRBG_C
2708#define MBEDTLS_HMAC_DRBG_C
2710#undef MBEDTLS_HMAC_DRBG_C
2791#define MBEDTLS_MD5_C
2826#ifdef ENABLE_MBEDTLS_NET_C
2827#define MBEDTLS_NET_C
2853#define MBEDTLS_OID_C
2885#ifdef ENABLE_MBEDTLS_PEM_PARSE_C
2886#define MBEDTLS_PEM_PARSE_C
2888#undef MBEDTLS_PEM_PARSE_C
2905#ifdef ENABLE_MBEDTLS_PEM_WRITE_C
2906#define MBEDTLS_PEM_WRITE_C
2908#undef MBEDTLS_PEM_WRITE_C
2925#ifdef ENABLE_MBEDTLS_PK_C
2943#ifdef ENABLE_MBEDTLS_PK_C
2944#define MBEDTLS_PK_PARSE_C
2946#undef MBEDTLS_PK_PARSE_C
2961#ifdef ENABLE_MBEDTLS_PK_C
2962#define MBEDTLS_PK_WRITE_C
2964#undef MBEDTLS_PK_WRITE_C
2977#define MBEDTLS_PKCS5_C
3008#ifdef ENABLE_MBEDTLS_PK_C
3009#define MBEDTLS_PKCS12_C
3011#undef MBEDTLS_PKCS12_C
3031#define MBEDTLS_PLATFORM_C
3041#ifdef ENABLE_MBEDTLS_POLY1305_C
3042#define MBEDTLS_POLY1305_C
3044#undef MBEDTLS_POLY1305_C
3056#ifdef ENABLE_MBEDTLS_RIPEMD160_C
3057#define MBEDTLS_RIPEMD160_C
3059#undef MBEDTLS_RIPEMD160_C
3079#ifdef ENABLE_MBEDTLS_RSA_C
3080#define MBEDTLS_RSA_C
3105#define MBEDTLS_SHA1_C
3122#define MBEDTLS_SHA256_C
3137#define MBEDTLS_SHA512_C
3185#ifdef ENABLE_MBEDTLS_SSL_CLI_C
3186#define MBEDTLS_SSL_CLI_C
3188#undef MBEDTLS_SSL_CLI_C
3203#ifdef ENABLE_MBEDTLS_SSL_SRV_C
3204#define MBEDTLS_SSL_SRV_C
3206#undef MBEDTLS_SSL_SRV_C
3223#define MBEDTLS_SSL_TLS_C
3245#define MBEDTLS_THREADING_C
3279#define MBEDTLS_VERSION_C
3296#ifdef ENABLE_MBEDTLS_X509_CRT
3297#define MBEDTLS_X509_USE_C
3299#undef MBEDTLS_X509_USE_C
3316#ifdef ENABLE_MBEDTLS_X509_CRT
3317#define MBEDTLS_X509_CRT_PARSE_C
3319#undef MBEDTLS_X509_CRT_PARSE_C
3333#ifdef ENABLE_MBEDTLS_X509_CRL_PARSE_C
3334#define MBEDTLS_X509_CRL_PARSE_C
3336#undef MBEDTLS_X509_CRL_PARSE_C
3351#ifdef ENABLE_MBEDTLS_X509_CSR_PARSE_C
3352#define MBEDTLS_X509_CSR_PARSE_C
3354#undef MBEDTLS_X509_CSR_PARSE_C
3368#ifdef ENABLE_MBEDTLS_X509_CRT
3369#define MBEDTLS_X509_CREATE_C
3371#undef MBEDTLS_X509_CREATE_C
3384#ifdef ENABLE_MBEDTLS_X509_CRT
3385#define MBEDTLS_X509_CRT_WRITE_C
3387#undef MBEDTLS_X509_CRT_WRITE_C
3401#ifdef ENABLE_MBEDTLS_X509_CSR_WRITE_C
3402#define MBEDTLS_X509_CSR_WRITE_C
3404#undef MBEDTLS_X509_CSR_WRITE_C
3415#ifdef ENABLE_MBEDTLS_XTEA_C
3416#define MBEDTLS_XTEA_C
3418#undef MBEDTLS_XTEA_C
3496#ifdef ENABLE_MBEDTLS_PLATFORM_NV_SEED
3497#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO __tuya_tls_nv_seed_read
3498#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO __tuya_tls_nv_seed_write
3569#ifdef ENABLE_MBEDTLS_SSL_MAX_CONTENT_LEN
3570#define MBEDTLS_SSL_MAX_CONTENT_LEN ENABLE_MBEDTLS_SSL_MAX_CONTENT_LEN
3597#if defined(TUYA_TLS_DYNAMIC_MEMORY_ALLOCATION)
3598#define MBEDTLS_SSL_IN_CONTENT_LEN (ssl->in_content_len)
3599#define MBEDTLS_SSL_OUT_CONTENT_LEN (ssl->out_content_len)
3742#if defined(MBEDTLS_USER_CONFIG_FILE)
3743#include MBEDTLS_USER_CONFIG_FILE