我正在使用 mbedtls 连接到 aws iot,但由于 mbedtls 缺少一些定义,我无法编译代码。
我使用的是 ESP8266_RTOS_SDK 1.5 中的原始 libmbedtls.a,我试图编辑 config.h,但这并不重要,我真的需要 mbedtls 的源代码来使用必要的配置重新编译它。
/root/esp-open-sdk/ESP8266_RTOS_SDK/lib/libmbedtls.a(ssl_tls.o):(.text.mbedtls_ssl_fetch_input 0x4):对“max_content_len”的未定义引用
这是正确的 config.h:
#ifndef MBEDTLS_CONFIG_H
#define MBEDTLS_CONFIG_H
/* 系统支持 */
#define MBEDTLS_HAVE_ASM
#define MBEDTLS_DEPRECATED_WARNING
#define MBEDTLS_ENTROPY_HARDWARE_ALT
#define MBEDTLS_NO_PLATFORM_ENTROPY
/* mbed TLS 功能支持 */
#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
#define MBEDTLS_SSL_PROTO_TLS1_2
/* 调试支持(可选)*/
//
//
/* mbed TLS 模块 */
#define MBEDTLS_AES_C
#define MBEDTLS_ASN1_PARSE_C
#define MBEDTLS_ASN1_WRITE_C
#define MBEDTLS_BIGNUM_C
#define MBEDTLS_CIPHER_C
#define MBEDTLS_CTR_DRBG_C
#define MBEDTLS_ECDH_C
#define MBEDTLS_ECDSA_C
#define MBEDTLS_ECP_C
#define MBEDTLS_ENTROPY_C
#define MBEDTLS_GCM_C
#define MBEDTLS_MD_C
#define MBEDTLS_NET_C
#define MBEDTLS_OID_C
#define MBEDTLS_PK_C
#define MBEDTLS_PK_PARSE_C
#define MBEDTLS_SHA256_C
#define MBEDTLS_SHA512_C
#define MBEDTLS_SSL_CLI_C
#define MBEDTLS_SSL_SRV_C
#define MBEDTLS_SSL_TLS_C
#define MBEDTLS_X509_CRT_PARSE_C
#define MBEDTLS_X509_USE_C
/* 用于验证基于 RSA 的根 CA 证书(如果根 CA 证书是使用 ECC 签名的,则可选)*/
#define MBEDTLS_RSA_C
#define MBEDTLS_SHA1_C
#define MBEDTLS_PKCS1_V15
#define MBEDTLS_PKCS1_V21
/* 对于测试证书 */
#define MBEDTLS_BASE64_C
#define MBEDTLS_CERTS_C
#define MBEDTLS_PEM_PARSE_C
/* 以牺牲 ROM 为代价节省 RAM */
#define MBEDTLS_AES_ROM_TABLES
/* 通过根据我们的确切需求进行调整来节省 RAM */
#define MBEDTLS_ECP_MAX_BITS 384
#define MBEDTLS_MPI_MAX_SIZE 256 // 2048 bits
/* 以牺牲速度为代价节省 RAM,参见 ecp.h */
#define MBEDTLS_ECP_WINDOW_SIZE 2
#define MBEDTLS_ECP_FIXED_POINT_OP
tiM 0
/* 以牺牲某些 ROM 为代价的显着速度优势 */
#define MBEDTLS_ECP_NIST_OPTIM
/*
* You should adjust this to the exact number of sources you're using: default
* is the "mbedtls_platform_entropy_poll" source, but you may want to add other ones.
* Minimum is 2 for the entropy test suite.
*/
#define MBEDTLS_ENTROPY_MAX_SOURCES 2
/* 通过指定我们自己的密码套件列表来节省 ROM 和几个字节的 RAM */
#define MBEDTLS_SSL_CIPHERSUITES
MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
/*
* Save RAM at the expense of interoperability: do this only if you control
* both ends of the connection! (See coments in "mbedtls/ssl.h".)
* The minimum size here depends on the certificate chain used as well as the
* typical size of records.
*/
#define MBEDTLS_SSL_MAX_CONTENT_LEN 4096
#include "mbedtls/check_config.h"
#endif /* MBEDTLS_CONFIG_H */
有什么想法吗?