mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-09 21:44:28 +00:00
tls13: cli: Add mbedtls_ssl_get_early_data_status() API
Add mbedtls_ssl_get_early_data_status() API and its testing. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
parent
e21c2d2ce1
commit
9f2c3c09df
@ -2318,6 +2318,31 @@ cleanup:
|
||||
MBEDTLS_SSL_DEBUG_MSG(2, ("<= write EndOfEarlyData"));
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mbedtls_ssl_get_early_data_status(mbedtls_ssl_context *ssl)
|
||||
{
|
||||
if ((ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) ||
|
||||
(!mbedtls_ssl_is_handshake_over(ssl))) {
|
||||
return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
|
||||
}
|
||||
|
||||
switch (ssl->early_data_status) {
|
||||
case MBEDTLS_SSL_EARLY_DATA_STATUS_NOT_SENT:
|
||||
return MBEDTLS_SSL_EARLY_DATA_STATUS_NOT_SENT;
|
||||
break;
|
||||
|
||||
case MBEDTLS_SSL_EARLY_DATA_STATUS_REJECTED:
|
||||
return MBEDTLS_SSL_EARLY_DATA_STATUS_REJECTED;
|
||||
break;
|
||||
|
||||
case MBEDTLS_SSL_EARLY_DATA_STATUS_SERVER_FINISHED_RECEIVED:
|
||||
return MBEDTLS_SSL_EARLY_DATA_STATUS_ACCEPTED;
|
||||
break;
|
||||
|
||||
default:
|
||||
return MBEDTLS_ERR_SSL_INTERNAL_ERROR;
|
||||
}
|
||||
}
|
||||
#endif /* MBEDTLS_SSL_EARLY_DATA */
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
|
||||
|
@ -3895,6 +3895,11 @@ void tls13_cli_early_data_status(int scenario)
|
||||
(ret == MBEDTLS_ERR_SSL_WANT_WRITE));
|
||||
}
|
||||
|
||||
if (client_ep.ssl.state != MBEDTLS_SSL_HANDSHAKE_OVER) {
|
||||
TEST_EQUAL(mbedtls_ssl_get_early_data_status(&(client_ep.ssl)),
|
||||
MBEDTLS_ERR_SSL_BAD_INPUT_DATA);
|
||||
}
|
||||
|
||||
switch (client_ep.ssl.state) {
|
||||
case MBEDTLS_SSL_CLIENT_HELLO:
|
||||
switch (scenario) {
|
||||
@ -4116,6 +4121,25 @@ void tls13_cli_early_data_status(int scenario)
|
||||
}
|
||||
} while (client_ep.ssl.state != MBEDTLS_SSL_HANDSHAKE_OVER);
|
||||
|
||||
ret = mbedtls_ssl_get_early_data_status(&(client_ep.ssl));
|
||||
switch (scenario) {
|
||||
case TEST_EARLY_DATA_ACCEPTED:
|
||||
TEST_EQUAL(ret, MBEDTLS_SSL_EARLY_DATA_STATUS_ACCEPTED);
|
||||
break;
|
||||
|
||||
case TEST_EARLY_DATA_NO_INDICATION_SENT:
|
||||
TEST_EQUAL(ret, MBEDTLS_SSL_EARLY_DATA_STATUS_NOT_SENT);
|
||||
break;
|
||||
|
||||
case TEST_EARLY_DATA_SERVER_REJECTS: /* Intentional fallthrough */
|
||||
case TEST_EARLY_DATA_HRR:
|
||||
TEST_EQUAL(ret, MBEDTLS_SSL_EARLY_DATA_STATUS_REJECTED);
|
||||
break;
|
||||
|
||||
default:
|
||||
TEST_FAIL("Unknown scenario.");
|
||||
}
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE)
|
||||
TEST_EQUAL(client_ep.ssl.handshake->ccs_sent, 1);
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user