tls13: Rework mbedtls_ssl_tls13_fetch_handshake_msg()

Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
Ronald Cron 2026-06-15 14:09:17 +02:00
parent 0c9d3d4a0f
commit 6c557a70f6

View File

@ -53,19 +53,23 @@ int mbedtls_ssl_tls13_fetch_handshake_msg(mbedtls_ssl_context *ssl,
{ {
int ret; int ret;
if ((ret = mbedtls_ssl_read_record(ssl, 0)) != 0) { ret = mbedtls_ssl_read_record(ssl, 0);
if (ret != 0) {
MBEDTLS_SSL_DEBUG_RET(1, "mbedtls_ssl_read_record", ret); MBEDTLS_SSL_DEBUG_RET(1, "mbedtls_ssl_read_record", ret);
goto cleanup; goto error;
} }
ret = MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE;
if (ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE || if (ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ||
ssl->in_msg[0] != hs_type || ssl->in_msg[0] != hs_type) {
(require_record_boundary && (ssl->in_hslen != ssl->in_msglen))) {
MBEDTLS_SSL_DEBUG_MSG(1, ("Receive unexpected handshake message.")); MBEDTLS_SSL_DEBUG_MSG(1, ("Receive unexpected handshake message."));
MBEDTLS_SSL_PEND_FATAL_ALERT(MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE, goto error;
MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE); }
ret = MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE;
goto cleanup; if (require_record_boundary && (ssl->in_hslen != ssl->in_msglen)) {
MBEDTLS_SSL_DEBUG_MSG(1, ("Handshake message %s end not aligned with a record boundary",
mbedtls_ssl_get_hs_msg_name(hs_type)));
goto error;
} }
/* /*
@ -75,11 +79,15 @@ int mbedtls_ssl_tls13_fetch_handshake_msg(mbedtls_ssl_context *ssl,
* uint24 length; * uint24 length;
* ... * ...
*/ */
*buf = ssl->in_msg + 4; *buf = ssl->in_msg + 4;
*buf_len = ssl->in_hslen - 4; *buf_len = ssl->in_hslen - 4;
return 0;
cleanup: error:
if (ret == MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE) {
MBEDTLS_SSL_PEND_FATAL_ALERT(MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE,
MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE);
}
return ret; return ret;
} }