1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-07-29 11:41:15 +03:00

Merge pull request #7071 from yuhaoth/pr/tls13-ticket-add-max_early_data_size-field

TLS 1.3 EarlyData: add `max_early_data_size` field for ticket
This commit is contained in:
Ronald Cron
2023-11-20 08:04:57 +00:00
committed by GitHub
5 changed files with 40 additions and 0 deletions

View File

@ -2454,6 +2454,7 @@ mbedtls_ssl_mode_t mbedtls_ssl_get_mode_from_ciphersuite(
* uint32 ticket_age_add;
* uint8 ticket_flags;
* opaque resumption_key<0..255>;
* uint32 max_early_data_size;
* select ( endpoint ) {
* case client: ClientOnlyData;
* case server: uint64 start_time;
@ -2486,6 +2487,10 @@ static int ssl_tls13_session_save(const mbedtls_ssl_session *session,
}
needed += session->resumption_key_len; /* resumption_key */
#if defined(MBEDTLS_SSL_EARLY_DATA)
needed += 4; /* max_early_data_size */
#endif
#if defined(MBEDTLS_HAVE_TIME)
needed += 8; /* start_time or ticket_received */
#endif
@ -2525,6 +2530,11 @@ static int ssl_tls13_session_save(const mbedtls_ssl_session *session,
memcpy(p, session->resumption_key, session->resumption_key_len);
p += session->resumption_key_len;
#if defined(MBEDTLS_SSL_EARLY_DATA)
MBEDTLS_PUT_UINT32_BE(session->max_early_data_size, p, 0);
p += 4;
#endif
#if defined(MBEDTLS_HAVE_TIME) && defined(MBEDTLS_SSL_SRV_C)
if (session->endpoint == MBEDTLS_SSL_IS_SERVER) {
MBEDTLS_PUT_UINT64_BE((uint64_t) session->start, p, 0);
@ -2593,6 +2603,14 @@ static int ssl_tls13_session_load(mbedtls_ssl_session *session,
memcpy(session->resumption_key, p, session->resumption_key_len);
p += session->resumption_key_len;
#if defined(MBEDTLS_SSL_EARLY_DATA)
if (end - p < 4) {
return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
}
session->max_early_data_size = MBEDTLS_GET_UINT32_BE(p, 0);
p += 4;
#endif
#if defined(MBEDTLS_HAVE_TIME) && defined(MBEDTLS_SSL_SRV_C)
if (session->endpoint == MBEDTLS_SSL_IS_SERVER) {
if (end - p < 8) {