Я сделал решение stm32 + rtos + lwip / mqtt, и оно хорошо работает. Теперь я хочу использовать его со встроенным безопасным соединением TLS. Примеров не нашел.
lwip mqtt api поддерживает связь tls. Но такого примера нет, просто простой клиент mqtt с использованием кода LWIP MQTT Client я использовал.
Я попытался включить встраивание и некоторые параметры в cubemx, LWIP_ALTCP & LWIP_ALTCP_TLS, добавить LWIP_ALTCP_TLS_MBEDTLS в путь. Он скомпилирован. Как запустить mbedtls и добавить сертификат tls. по этой ссылке требуется немного информации x/group__altcp__api.html" rel="nofollow noreferrer">altcp tls
Есть ли у кого-нибудь опыт или рабочий пример с stm32 lwip / mqtt + tls (mbedtls) для стека stm32 lwip?
UPD. Вот мой код настройки клиента mqtt:
struct mqtt_connect_client_info_t ci;
memset(&ci, 0, sizeof(ci));
ci.client_id = "lwip_test";
ci.client_user = "";
ci.client_pass = "";
ci.keep_alive = 0;
ci.tls_config = altcp_tls_create_config_client((const u8_t*)test_cert, sizeof(test_cert));
// create client
client = mqtt_client_new();
// connect client
mqtt_client_connect(client, &resolved, port, mqtt_on_connect, (void *)0, &ci);
Я даю сертификат CA клиента mqtt и длину. У меня ошибка в функции altcp_tls_create_config_client_common (altcp_tls_mbedtls.c) с кодом -4480 (Не удалось выделить память).
ret = mbedtls_x509_crt_parse(conf->ca, ca, ca_len);
if (ret != 0) {
LWIP_DEBUGF(ALTCP_MBEDTLS_DEBUG, ("mbedtls_x509_crt_parse ca failed: %d 0x%x", ret, -1*ret));
altcp_mbedtls_free_config(conf);
return NULL;
}
Что я делаю не так, какие еще параметры мне следует настроить в модуле mbedtls? Я использую по умолчанию, созданный CubeMX