mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 11:17:20 +02:00
esp_tls: add initial support for TLS 1.3 connection
This commit is contained in:
committed by
Harshit Malpani
parent
e1dfcbc567
commit
0b7bb679bb
@@ -72,6 +72,15 @@ esp_err_t esp_create_mbedtls_handle(const char *hostname, size_t hostlen, const
|
|||||||
assert(tls != NULL);
|
assert(tls != NULL);
|
||||||
int ret;
|
int ret;
|
||||||
esp_err_t esp_ret = ESP_FAIL;
|
esp_err_t esp_ret = ESP_FAIL;
|
||||||
|
|
||||||
|
#ifdef CONFIG_MBEDTLS_SSL_PROTO_TLS1_3
|
||||||
|
psa_status_t status = psa_crypto_init();
|
||||||
|
if (status != PSA_SUCCESS) {
|
||||||
|
ESP_LOGE(TAG, "Failed to initialize PSA crypto, returned %d\n", (int) status);
|
||||||
|
return esp_ret;
|
||||||
|
}
|
||||||
|
#endif // CONFIG_MBEDTLS_SSL_PROTO_TLS1_3
|
||||||
|
|
||||||
tls->server_fd.fd = tls->sockfd;
|
tls->server_fd.fd = tls->sockfd;
|
||||||
mbedtls_ssl_init(&tls->ssl);
|
mbedtls_ssl_init(&tls->ssl);
|
||||||
mbedtls_ctr_drbg_init(&tls->ctr_drbg);
|
mbedtls_ctr_drbg_init(&tls->ctr_drbg);
|
||||||
@@ -220,6 +229,13 @@ ssize_t esp_mbedtls_read(esp_tls_t *tls, char *data, size_t datalen)
|
|||||||
{
|
{
|
||||||
|
|
||||||
ssize_t ret = mbedtls_ssl_read(&tls->ssl, (unsigned char *)data, datalen);
|
ssize_t ret = mbedtls_ssl_read(&tls->ssl, (unsigned char *)data, datalen);
|
||||||
|
#if CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 && CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS
|
||||||
|
while (ret == MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET) {
|
||||||
|
ESP_LOGD(TAG, "got session ticket in TLS 1.3 connection, retry read");
|
||||||
|
ret = mbedtls_ssl_read(&tls->ssl, (unsigned char *)data, datalen);
|
||||||
|
}
|
||||||
|
#endif // CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 && CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
|
if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -26,6 +26,9 @@
|
|||||||
#ifdef CONFIG_ESP_TLS_SERVER_SESSION_TICKETS
|
#ifdef CONFIG_ESP_TLS_SERVER_SESSION_TICKETS
|
||||||
#include "mbedtls/ssl_ticket.h"
|
#include "mbedtls/ssl_ticket.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_MBEDTLS_SSL_PROTO_TLS1_3
|
||||||
|
#include "psa/crypto.h"
|
||||||
|
#endif
|
||||||
#elif CONFIG_ESP_TLS_USING_WOLFSSL
|
#elif CONFIG_ESP_TLS_USING_WOLFSSL
|
||||||
#include "wolfssl/wolfcrypt/settings.h"
|
#include "wolfssl/wolfcrypt/settings.h"
|
||||||
#include "wolfssl/ssl.h"
|
#include "wolfssl/ssl.h"
|
||||||
|
Reference in New Issue
Block a user