Я сделал решение stm32 + rtos + lwip / mqtt, и оно работает хорошо. Теперь я хочу использовать его с безопасным подключением. Я не нашел никаких примеров.
lwip mqtt api поддерживает связь tls. Но такого примера нет, просто простой mqtt-клиент, использующий код LWIP MQTT-клиент , который я использовал.
Я попытался включить embedtls и некоторые параметры в cubemx, LWIP_ALTCP & LWIP_ALTCP_TLS, добавить LWIP_ALTCP_TLS_MBEDTLS в , Это скомпилировано. Как инициировать mbedtls и добавить сертификат TLS. эта ссылка требует небольшой информации altcp tls
Есть ли у кого-нибудь опыт или рабочий пример с stm32 lwip / mqtt + tls (mbedtls) для стека lmip stm32?
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);
Я даю клиенту 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