mbedTLS Error Code: 0x00B3

Hello Everyone I am working in the Renesas RA8M1.I am using the AWS client example code there i have modified the example code to connect with my server to send and receive the data.My server has no certificate verfication so i have skipped the certificate verfications while connecting.I was able to connect to the server initially and able to send and receive the data without any errors after one hour so tried to reconnecting some times my server is connected successfully without any errors but sometimes I am facing the error while handshakeing can you help to ensure the proper handshake

Logs While conencting properly
00> TCP_Sockets_Connect: ENTRY - Host=(Host Address), Port=443, RxTimeout=10000, TxTimeout=10000
00> TCP_Sockets_Connect: Parameters validated successfully
00> TCP_Sockets_Connect: Creating new TCP socket…
00> TCP_Sockets_Connect: TCP socket created successfully (Handle=0x2200DCE8)
00> TCP_Sockets_Connect: Socket address structure initialized
00> TCP_Sockets_Connect: - Family: 2
00> TCP_Sockets_Connect: - Port (network order): 0xBB01
00> TCP_Sockets_Connect: - Structure size: 24
00> TCP_Sockets_Connect: Starting DNS resolution for hostname: (Host Address)
00> TCP_Sockets_Connect: DNS resolution successful - IP: 34.47.182.153
00> TCP_Sockets_Connect: Attempting to establish TCP connection to (Host Name)
00> TCP_Sockets_Connect: Connection attempt completed in 103 ticks (103 ms)
00> TCP_Sockets_Connect: Connection established successfully to (Host Name)
00> TCP_Sockets_Connect: Setting receive timeout to 10000 ms
00> TCP_Sockets_Connect: Receive timeout in ticks: 10000
00> TCP_Sockets_Connect: Receive timeout set successfully
00> TCP_Sockets_Connect: Setting send timeout to 10000 ms
00> TCP_Sockets_Connect: Send timeout in ticks: 10000
00> TCP_Sockets_Connect: Send timeout set successfully
00> TCP_Sockets_Connect: SUCCESS - Socket handle assigned to output parameter
00> TCP_Sockets_Connect: Final socket handle: 0x2200DCE8
00> TCP_Sockets_Connect: EXIT - Status=0, Socket=0x2200DCE8
00> === TLS Setup Started ===
00> HostName: (HOST ADDRESS)
00> NetworkContext: 2200D63C
00> NetworkCredentials: 2200D538
00> TlsTransportParams: 2200D040
00> Initializing SSL context…
00> SSL context initialized successfully
00> Setting SSL config defaults…
00> SSL config defaults set successfully
00> Initializing PSA Crypto…
00> PSA Crypto initialized successfully
00> Setting authentication mode to NONE (certificate verification disabled)
00> Setting RNG context…
00> RNG context set successfully
00> Certificate verification disabled - connecting without certificate validation
00> No ALPN protocols specified - skipping ALPN configuration
00> Setting up SSL context…
00> SSL context setup successful
00> Setting BIO functions for SSL context…
00> TCP Socket: 2200DCE8
00> BIO functions set successfully
00> Setting SNI hostname: (Host Address)
00> SNI hostname set successfully
00> Maximum fragment length extension not enabled
00> === Starting TLS Handshake ===
00> Handshake attempt #1
00> SSL_HANDSHAKE: Starting handshake process
00> SSL_HANDSHAKE: Current state: 0
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 0
00> SSL_STEP: CLIENT - HELLO_REQUEST → CLIENT_HELLO
00> SSL_STEP: Step completed successfully, new state: 1
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 1
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 3
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 3
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 3
00> SSL_STEP: CLIENT - Processing default state 3
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 4
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 4
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 4
00> SSL_STEP: CLIENT - Processing default state 4
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 5
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 5
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 5
00> SSL_STEP: CLIENT - Processing default state 5
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 6
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 6
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 6
00> SSL_STEP: CLIENT - Processing default state 6
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 7
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 7
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 7
00> SSL_STEP: CLIENT - Processing default state 7
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 8
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 8
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 8
00> SSL_STEP: CLIENT - Processing default state 8
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 9
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 9
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 9
00> SSL_STEP: CLIENT - Processing default state 9
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 10
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 10
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 10
00> SSL_STEP: CLIENT - Processing default state 10
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 11
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 11
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 11
00> SSL_STEP: CLIENT - Processing default state 11
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 12
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 12
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 12
00> SSL_STEP: CLIENT - Processing default state 12
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 13
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 13
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 13
00> SSL_STEP: CLIENT - Processing default state 13
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 14
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 14
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 14
00> SSL_STEP: CLIENT - Processing default state 14
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 15
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 15
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 15
00> SSL_STEP: CLIENT - Processing default state 15
00> SSL_STEP: CLIENT - Using TLS 1.2 handler
00> SSL_STEP: CLIENT - Handler completed successfully
00> SSL_STEP: Step completed successfully, new state: 27
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Handshake completed successfully
00> SSL_HANDSHAKE: Exiting handshake with return code: 0
00> Handshake completed successfully on attempt #1
00> === TLS Handshake Successful ===
00> Total handshake attempts: 1
00> TLS Version: TLSv1.2
00> Cipher Suite: TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
00> === TLS Setup Completed Successfully ===
00> Network connection: 2200D63C
00> TLS setup function returning with status: 0
00>
00> Connected to the server
00> Reconnection successful

Log While it is Failling

00> TCP_Sockets_Connect: ENTRY - Host=(Host Address), Port=443, RxTimeout=10000, TxTimeout=10000
00> TCP_Sockets_Connect: Parameters validated successfully
00> TCP_Sockets_Connect: Creating new TCP socket…
00> TCP_Sockets_Connect: TCP socket created successfully (Handle=0x2200DCE8)
00> TCP_Sockets_Connect: Socket address structure initialized
00> TCP_Sockets_Connect: - Family: 2
00> TCP_Sockets_Connect: - Port (network order): 0xBB01
00> TCP_Sockets_Connect: - Structure size: 24
00> TCP_Sockets_Connect: Starting DNS resolution for hostname: (Host Address)
00> TCP_Sockets_Connect: DNS resolution successful - IP: 34.47.182.153
00> TCP_Sockets_Connect: Attempting to establish TCP connection to (Host Name)
00> TCP_Sockets_Connect: Connection attempt completed in 100 ticks (100 ms)
00> TCP_Sockets_Connect: Connection established successfully to (Host Name)
00> TCP_Sockets_Connect: Setting receive timeout to 10000 ms
00> TCP_Sockets_Connect: Receive timeout in ticks: 10000
00> TCP_Sockets_Connect: Receive timeout set successfully
00> TCP_Sockets_Connect: Setting send timeout to 10000 ms
00> TCP_Sockets_Connect: Send timeout in ticks: 10000
00> TCP_Sockets_Connect: Send timeout set successfully
00> TCP_Sockets_Connect: SUCCESS - Socket handle assigned to output parameter
00> TCP_Sockets_Connect: Final socket handle: 0x2200DCE8
00> TCP_Sockets_Connect: EXIT - Status=0, Socket=0x2200DCE8
00> === TLS Setup Started ===
00> HostName: (Host Address)
00> NetworkContext: 2200D59C
00> NetworkCredentials: 2200D548
00> TlsTransportParams: 2200D050
00> Initializing SSL context…
00> SSL context initialized successfully
00> Setting SSL config defaults…
00> SSL config defaults set successfully
00> Initializing PSA Crypto…
00> PSA Crypto initialized successfully
00> Setting authentication mode to NONE (certificate verification disabled)
00> Setting RNG context…
00> RNG context set successfully
00> Certificate verification disabled - connecting without certificate validation
00> No ALPN protocols specified - skipping ALPN configuration
00> Setting up SSL context…
00> SSL context setup successful
00> Setting BIO functions for SSL context…
00> TCP Socket: 2200DCE8
00> BIO functions set successfully
00> Setting SNI hostname: (Host Address)
00> SNI hostname set successfully
00> Maximum fragment length extension not enabled
00> === Starting TLS Handshake ===
00> Handshake attempt #1
00> SSL_HANDSHAKE: Starting handshake process
00> SSL_HANDSHAKE: Current state: 0
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 0
00> SSL_STEP: CLIENT - HELLO_REQUEST → CLIENT_HELLO
00> SSL_STEP: Step completed successfully, new state: 1
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 1
00> [ERR] In Function: connect_aws_https_client(), Failed to connect the server, retrying after 3000 ms.
00> TCP_Sockets_Connect: ENTRY - Host=(Host Address), Port=443, RxTimeout=10000, TxTimeout=10000
00> TCP_Sockets_Connect: Parameters validated successfully
00> TCP_Sockets_Connect: Creating new TCP socket…
00> TCP_Sockets_Connect: TCP socket created successfully (Handle=0x2200DCE8)
00> TCP_Sockets_Connect: Socket address structure initialized
00> TCP_Sockets_Connect: - Family: 2
00> TCP_Sockets_Connect: - Port (network order): 0xBB01
00> TCP_Sockets_Connect: - Structure size: 24
00> TCP_Sockets_Connect: Starting DNS resolution for hostname: (Host Address)
00> TCP_Sockets_Connect: DNS resolution successful - IP: 34.47.182.153
00> TCP_Sockets_Connect: Attempting to establish TCP connection to (Host Name)
00> TCP_Sockets_Connect: Connection attempt completed in 97 ticks (97 ms)
00> TCP_Sockets_Connect: Connection established successfully to (Host Name)
00> TCP_Sockets_Connect: Setting receive timeout to 10000 ms
00> TCP_Sockets_Connect: Receive timeout in ticks: 10000
00> TCP_Sockets_Connect: Receive timeout set successfully
00> TCP_Sockets_Connect: Setting send timeout to 10000 ms
00> TCP_Sockets_Connect: Send timeout in ticks: 10000
00> TCP_Sockets_Connect: Send timeout set successfully
00> TCP_Sockets_Connect: SUCCESS - Socket handle assigned to output parameter
00> TCP_Sockets_Connect: Final socket handle: 0x2200DCE8
00> TCP_Sockets_Connect: EXIT - Status=0, Socket=0x2200DCE8
00> === TLS Setup Started ===
00> HostName: (Host Address)
00> NetworkContext: 2200D59C
00> NetworkCredentials: 2200D548
00> TlsTransportParams: 2200D050
00> Initializing SSL context…
00> SSL context initialized successfully
00> Setting SSL config defaults…
00> SSL config defaults set successfully
00> Initializing PSA Crypto…
00> PSA Crypto initialized successfully
00> Setting authentication mode to NONE (certificate verification disabled)
00> Setting RNG context…
00> RNG context set successfully
00> Certificate verification disabled - connecting without certificate validation
00> No ALPN protocols specified - skipping ALPN configuration
00> Setting up SSL context…
00> SSL context setup successful
00> Setting BIO functions for SSL context…
00> TCP Socket: 2200DCE8
00> BIO functions set successfully
00> Setting SNI hostname: (Host Address)
00> SNI hostname set successfully
00> Maximum fragment length extension not enabled
00> === Starting TLS Handshake ===
00> Handshake attempt #1
00> SSL_HANDSHAKE: Starting handshake process
00> SSL_HANDSHAKE: Current state: 0
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 0
00> SSL_STEP: CLIENT - HELLO_REQUEST → CLIENT_HELLO
00> SSL_STEP: Step completed successfully, new state: 1
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 1
00> [ERR] In Function: connect_aws_https_client(), Failed to connect the server, retrying after 3000 ms.
00> TCP_Sockets_Connect: ENTRY - Host=(Host Address), Port=443, RxTimeout=10000, TxTimeout=10000
00> TCP_Sockets_Connect: Parameters validated successfully
00> TCP_Sockets_Connect: Creating new TCP socket…
00> TCP_Sockets_Connect: TCP socket created successfully (Handle=0x2200DCE8)
00> TCP_Sockets_Connect: Socket address structure initialized
00> TCP_Sockets_Connect: - Family: 2
00> TCP_Sockets_Connect: - Port (network order): 0xBB01
00> TCP_Sockets_Connect: - Structure size: 24
00> TCP_Sockets_Connect: Starting DNS resolution for hostname: (Host Address)
00> TCP_Sockets_Connect: DNS resolution successful - IP: 34.47.182.153
00> TCP_Sockets_Connect: Attempting to establish TCP connection to (Host Name)
00> TCP_Sockets_Connect: Connection attempt completed in 102 ticks (102 ms)
00> TCP_Sockets_Connect: Connection established successfully to (Host Name)
00> TCP_Sockets_Connect: Setting receive timeout to 10000 ms
00> TCP_Sockets_Connect: Receive timeout in ticks: 10000
00> TCP_Sockets_Connect: Receive timeout set successfully
00> TCP_Sockets_Connect: Setting send timeout to 10000 ms
00> TCP_Sockets_Connect: Send timeout in ticks: 10000
00> TCP_Sockets_Connect: Send timeout set successfully
00> TCP_Sockets_Connect: SUCCESS - Socket handle assigned to output parameter
00> TCP_Sockets_Connect: Final socket handle: 0x2200DCE8
00> TCP_Sockets_Connect: EXIT - Status=0, Socket=0x2200DCE8
00> === TLS Setup Started ===
00> HostName: (Host Address)
00> NetworkContext: 2200D59C
00> NetworkCredentials: 2200D548
00> TlsTransportParams: 2200D050
00> Initializing SSL context…
00> SSL context initialized successfully
00> Setting SSL config defaults…
00> SSL config defaults set successfully
00> Initializing PSA Crypto…
00> PSA Crypto initialized successfully
00> Setting authentication mode to NONE (certificate verification disabled)
00> Setting RNG context…
00> RNG context set successfully
00> Certificate verification disabled - connecting without certificate validation
00> No ALPN protocols specified - skipping ALPN configuration
00> Setting up SSL context…
00> SSL context setup successful
00> Setting BIO functions for SSL context…
00> TCP Socket: 2200DCE8
00> BIO functions set successfully
00> Setting SNI hostname: (Host Address)
00> SNI hostname set successfully
00> Maximum fragment length extension not enabled
00> === Starting TLS Handshake ===
00> Handshake attempt #1
00> SSL_HANDSHAKE: Starting handshake process
00> SSL_HANDSHAKE: Current state: 0
00> SSL_STEP: Entering handshake_step
00> SSL_STEP: Preparing handshake step
00> SSL_STEP: Handling pending alerts
00> SSL_STEP: Processing as CLIENT, state: 0
00> SSL_STEP: CLIENT - HELLO_REQUEST → CLIENT_HELLO
00> SSL_STEP: Step completed successfully, new state: 1
00> SSL_STEP: Exiting handshake_step with return code: 0
00> SSL_HANDSHAKE: Step completed successfully
00> SSL_HANDSHAKE: Current state: 1
00> Unable to connect the server. Error code: 4.
00> [ERR] In Function: restart_complete_thread(), Failed to establish connection after restart: %d

My handshake function
int mbedtls_ssl_handshake_step(mbedtls_ssl_context *ssl)
{
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;

SEGGER_RTT_printf(0, "SSL_STEP: Entering handshake_step\n");

if (ssl == NULL ||
    ssl->conf == NULL ||
    ssl->handshake == NULL ||
    ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER) {
    SEGGER_RTT_printf(0, "SSL_STEP: Bad input data - ssl=%p, conf=%p, handshake=%p, state=%d\n",
                     ssl, ssl ? ssl->conf : NULL, ssl ? ssl->handshake : NULL, ssl ? ssl->state : -1);
    return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
}

SEGGER_RTT_printf(0, "SSL_STEP: Preparing handshake step\n");
ret = ssl_prepare_handshake_step(ssl);
if (ret != 0) {
    SEGGER_RTT_printf(0, "SSL_STEP: Prepare handshake step failed with error: -0x%04X\n", -ret);
    return ret;
}

SEGGER_RTT_printf(0, "SSL_STEP: Handling pending alerts\n");
ret = mbedtls_ssl_handle_pending_alert(ssl);
if (ret != 0) {
    SEGGER_RTT_printf(0, "SSL_STEP: Handle pending alert failed with error: -0x%04X\n", -ret);
    goto cleanup;
}

/* If ssl->conf->endpoint is not one of MBEDTLS_SSL_IS_CLIENT or
 * MBEDTLS_SSL_IS_SERVER, this is the return code we give */
ret = MBEDTLS_ERR_SSL_BAD_INPUT_DATA;

#if defined(MBEDTLS_SSL_CLI_C)
if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) {
SEGGER_RTT_printf(0, “SSL_STEP: Processing as CLIENT, state: %d\n”, ssl->state);
MBEDTLS_SSL_DEBUG_MSG(2, (“client state: %s”,
mbedtls_ssl_states_str((mbedtls_ssl_states) ssl->state)));

    switch (ssl->state) {
    case MBEDTLS_SSL_HELLO_REQUEST:
        SEGGER_RTT_printf(0, "SSL_STEP: CLIENT - HELLO_REQUEST -> CLIENT_HELLO\n");
        ssl->state = MBEDTLS_SSL_CLIENT_HELLO;
        ret = 0;
        break;

    case MBEDTLS_SSL_CLIENT_HELLO:
        SEGGER_RTT_printf(0, "SSL_STEP: CLIENT - Writing CLIENT_HELLO\n");
        ret = mbedtls_ssl_write_client_hello(ssl);
        if (ret != 0) {
            SEGGER_RTT_printf(0, "SSL_STEP: CLIENT - Write client hello failed: -0x%04X\n", -ret);
        } else {
            SEGGER_RTT_printf(0, "SSL_STEP: CLIENT - Client hello written successfully\n");
        }
        break;

    default:
        SEGGER_RTT_printf(0, "SSL_STEP: CLIENT - Processing default state %d\n", ssl->state);

#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3)
if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) {
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Using TLS 1.3 handler\n”);
ret = mbedtls_ssl_tls13_handshake_client_step(ssl);
} else {
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Using TLS 1.2 handler\n”);
ret = mbedtls_ssl_handshake_client_step(ssl);
}
#elif defined(MBEDTLS_SSL_PROTO_TLS1_2)
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Using TLS 1.2 handler\n”);
ret = mbedtls_ssl_handshake_client_step(ssl);
#else
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Using TLS 1.3 handler\n”);
ret = mbedtls_ssl_tls13_handshake_client_step(ssl);
#endif
if (ret != 0) {
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Handler failed: -0x%04X\n”, -ret);
} else {
SEGGER_RTT_printf(0, “SSL_STEP: CLIENT - Handler completed successfully\n”);
}
}
}
#endif /* MBEDTLS_SSL_CLI_C */

#if defined(MBEDTLS_SSL_SRV_C)
if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) {
SEGGER_RTT_printf(0, “SSL_STEP: Processing as SERVER, state: %d\n”, ssl->state);
#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3)
if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) {
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Using TLS 1.3 handler\n”);
ret = mbedtls_ssl_tls13_handshake_server_step(ssl);
} else {
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Using TLS 1.2 handler\n”);
ret = mbedtls_ssl_handshake_server_step(ssl);
}
#elif defined(MBEDTLS_SSL_PROTO_TLS1_2)
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Using TLS 1.2 handler\n”);
ret = mbedtls_ssl_handshake_server_step(ssl);
#else
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Using TLS 1.3 handler\n”);
ret = mbedtls_ssl_tls13_handshake_server_step(ssl);
#endif
if (ret != 0) {
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Handler failed: -0x%04X\n”, -ret);
} else {
SEGGER_RTT_printf(0, “SSL_STEP: SERVER - Handler completed successfully\n”);
}
}
#endif /* MBEDTLS_SSL_SRV_C */

if (ret != 0) {
    SEGGER_RTT_printf(0, "SSL_STEP: Step failed with error: -0x%04X\n", -ret);
    /* handshake_step return error. And it is same
     * with alert_reason.
     */
    if (ssl->send_alert) {
        SEGGER_RTT_printf(0, "SSL_STEP: Sending alert due to error\n");
        ret = mbedtls_ssl_handle_pending_alert(ssl);
        goto cleanup;
    }
} else {
    SEGGER_RTT_printf(0, "SSL_STEP: Step completed successfully, new state: %d\n", ssl->state);
}

cleanup:
SEGGER_RTT_printf(0, “SSL_STEP: Exiting handshake_step with return code: %d\n”, ret);
return ret;
}

/*

  • Perform the SSL handshake
    */

int mbedtls_ssl_handshake(mbedtls_ssl_context *ssl)
{
int ret = 0;

/* Sanity checks */
if (ssl == NULL || ssl->conf == NULL) {
    SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Bad input data - ssl or conf is NULL\n");
    return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
}

#if defined(MBEDTLS_SSL_PROTO_DTLS)
if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM &&
(ssl->f_set_timer == NULL || ssl->f_get_timer == NULL)) {
SEGGER_RTT_printf(0, “SSL_HANDSHAKE: DTLS timer callbacks not set\n”);
MBEDTLS_SSL_DEBUG_MSG(1, ("You must use "
“mbedtls_ssl_set_timer_cb() for DTLS”));
return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
}
#endif /* MBEDTLS_SSL_PROTO_DTLS */

SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Starting handshake process\n");
MBEDTLS_SSL_DEBUG_MSG(2, ("=> handshake"));

/* Main handshake loop */
while (ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER) {
    SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Current state: %d\n", ssl->state);

    ret = mbedtls_ssl_handshake_step(ssl);

    if (ret != 0) {
        SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Handshake step failed with error: -0x%04X\n", -ret);
        break;
    }

    SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Step completed successfully\n");
}

if (ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER) {
    SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Handshake completed successfully\n");
}

SEGGER_RTT_printf(0, "SSL_HANDSHAKE: Exiting handshake with return code: %d\n", ret);
MBEDTLS_SSL_DEBUG_MSG(2, ("<= handshake"));

return ret;

}

#if defined(MBEDTLS_SSL_RENEGOTIATION)
#if defined(MBEDTLS_SSL_SRV_C)
/*

  • Write HelloRequest to request renegotiation on server
    */
    MBEDTLS_CHECK_RETURN_CRITICAL
    static int ssl_write_hello_request(mbedtls_ssl_context *ssl)
    {
    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;

    MBEDTLS_SSL_DEBUG_MSG(2, (“=> write hello request”));

    ssl->out_msglen = 4;
    ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE;
    ssl->out_msg[0] = MBEDTLS_SSL_HS_HELLO_REQUEST;

    if ((ret = mbedtls_ssl_write_handshake_msg(ssl)) != 0) {
    MBEDTLS_SSL_DEBUG_RET(1, “mbedtls_ssl_write_handshake_msg”, ret);
    return ret;
    }

    MBEDTLS_SSL_DEBUG_MSG(2, (“<= write hello request”));

    return 0;
    }
    #endif

Can you please help me to solve this issue