From 1e386cbd76fdb39f9f3525ba1b83d0cef403d69e Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Wed, 21 Sep 2016 10:51:31 -0700 Subject: [PATCH] Send DTLS-Alert in response to any failures during handshake. (#648) --- src/core/meshcop/dtls.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/core/meshcop/dtls.cpp b/src/core/meshcop/dtls.cpp index 633ff02a7..ccf84170f 100644 --- a/src/core/meshcop/dtls.cpp +++ b/src/core/meshcop/dtls.cpp @@ -343,9 +343,24 @@ void Dtls::Process(void) } else { - if (rval == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) + switch (rval) { + case MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY: mbedtls_ssl_close_notify(&mSsl); + break; + + case MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED: + case MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE: + break; + + default: + if (mSsl.state != MBEDTLS_SSL_HANDSHAKE_OVER) + { + mbedtls_ssl_send_alert_message(&mSsl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE); + } + + break; } mbedtls_ssl_session_reset(&mSsl);