From 141d07e21b80f6bbe630b08b1dd4bfed60cb387b Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Fri, 22 Jan 2021 15:14:31 +0900 Subject: [PATCH] addressed pre-review comments --- examples/client/client.c | 2 +- src/tls.c | 18 ++++++++++++------ src/tls13.c | 7 +++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/examples/client/client.c b/examples/client/client.c index 06b4fc449..86882c476 100644 --- a/examples/client/client.c +++ b/examples/client/client.c @@ -340,7 +340,7 @@ static void EarlyDataStatus(WOLFSSL* ssl) switch(earlyData_status) { case WOLFSSL_EARLY_DATA_NOT_SENT: - printf("not setn.\n"); + printf("not sent.\n"); break; case WOLFSSL_EARLY_DATA_REJECTED: printf("rejected.\n"); diff --git a/src/tls.c b/src/tls.c index 38ebfbf02..33e0fbaf6 100644 --- a/src/tls.c +++ b/src/tls.c @@ -9107,12 +9107,17 @@ static int TLSX_EarlyData_Parse(WOLFSSL* ssl, byte* input, word16 length, if (length != 0) return BUFFER_E; - if (ssl->earlyData == expecting_early_data) + if (ssl->earlyData == expecting_early_data) { + + if (ssl->options.maxEarlyDataSz != 0) + ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_ACCEPTED; + else + ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_REJECTED; + return TLSX_EarlyData_Use(ssl, 0); + } ssl->earlyData = early_data_ext; - /* client wants to send early data. set this to rejected here. */ - /* Later, it is set to accepted if the server accepts the data. */ - ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_REJECTED; + return 0; } if (msgType == encrypted_extensions) { @@ -9125,9 +9130,10 @@ static int TLSX_EarlyData_Parse(WOLFSSL* ssl, byte* input, word16 length, if (ssl->options.pskIdIndex != 1) return PSK_KEY_ERROR; - if (ssl->options.side == WOLFSSL_CLIENT_END) - /* server could accept early data. */ + if (ssl->options.side == WOLFSSL_CLIENT_END) { + /* the extension from server comes in */ ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_ACCEPTED; + } return TLSX_EarlyData_Use(ssl, 1); } diff --git a/src/tls13.c b/src/tls13.c index 718630e5f..0422fe270 100644 --- a/src/tls13.c +++ b/src/tls13.c @@ -6497,7 +6497,6 @@ static int DoTls13EndOfEarlyData(WOLFSSL* ssl, const byte* input, } ssl->earlyData = done_early_data; - ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_ACCEPTED; /* Always encrypted. */ *inOutIdx += ssl->keys.padSz; @@ -8657,13 +8656,13 @@ int wolfSSL_write_early_data(WOLFSSL* ssl, const void* data, int sz, int* outSz) ret = wolfSSL_connect_TLSv13(ssl); if (ret != WOLFSSL_SUCCESS) return WOLFSSL_FATAL_ERROR; - /* on client side, status is set to rejected */ - /* until sever accepts early data */ + /* on client side, status is set to rejected */ + /* until sever accepts the early data extension. */ ssl->earlyDataStatus = WOLFSSL_EARLY_DATA_REJECTED; } if (ssl->options.handShakeState == CLIENT_HELLO_COMPLETE) { #ifdef OPENSSL_EXTRA - /* when processed early data exceeds max size */ + /* when processed early data exceeds max size */ if (ssl->earlyDataSz + sz > ssl->session.maxEarlyDataSz) { ssl->error = TOO_MUCH_EARLY_DATA; return WOLFSSL_FATAL_ERROR;