Add new config MBEDTLS_SSL_SESSION_RESUMPTION
Add a new configuration option MBEDTLS_SSL_SESSION_RESUMPTION
to enable/disable the session resumption feature including
ticket and cache based session resumption.
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index 17611d6..f47d34e 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -888,7 +888,11 @@
#if defined(MBEDTLS_SSL_RENEGOTIATION)
ssl->renego_status != MBEDTLS_SSL_INITIAL_HANDSHAKE ||
#endif
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
ssl->handshake->resume == 0 )
+#else /* MBEDTLS_SSL_SESSION_RESUMPTION */
+ 0 )
+#endif
{
n = 0;
}
@@ -1795,6 +1799,7 @@
MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %d", n ) );
MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, session id", buf + 35, n );
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
/*
* Check if the session can be resumed
*/
@@ -1818,6 +1823,7 @@
memcpy( ssl->session_negotiate->id, buf + 35, n );
}
else
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
{
ssl->state = MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC;
@@ -1830,8 +1836,10 @@
}
}
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
MBEDTLS_SSL_DEBUG_MSG( 3, ( "%s session has been resumed",
ssl->handshake->resume ? "a" : "no" ) );
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %04x", i ) );
MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: %d", buf[37 + n] ) );
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 55a5976..a76ce16 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2656,7 +2656,9 @@
}
#endif /* MBEDTLS_SSL_SESSION_CACHE */
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
if( ssl->handshake->resume == 0 )
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
{
/*
* New session, create a new session id,
@@ -2683,6 +2685,7 @@
return( ret );
}
}
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
else
{
/*
@@ -2697,6 +2700,7 @@
return( ret );
}
}
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
/*
* 38 . 38 session id length
@@ -2712,8 +2716,10 @@
MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %d", n ) );
MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, session id", buf + 39, n );
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
MBEDTLS_SSL_DEBUG_MSG( 3, ( "%s session has been resumed",
ssl->handshake->resume ? "a" : "no" ) );
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
*p++ = (unsigned char)( ssl->session_negotiate->ciphersuite >> 8 );
*p++ = (unsigned char)( ssl->session_negotiate->ciphersuite );
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 10232bb..420eba2 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1263,11 +1263,13 @@
(void) ssl;
#endif
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
if( handshake->resume != 0 )
{
MBEDTLS_SSL_DEBUG_MSG( 3, ( "no premaster (session resumed)" ) );
return( 0 );
}
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
MBEDTLS_SSL_DEBUG_BUF( 3, "premaster secret", handshake->premaster,
handshake->pmslen );
@@ -7364,6 +7366,7 @@
ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE;
ssl->out_msg[0] = MBEDTLS_SSL_HS_FINISHED;
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
/*
* In case of session resuming, invert the client and server
* ChangeCipherSpec messages order.
@@ -7380,6 +7383,7 @@
#endif
}
else
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
ssl->state++;
/*
@@ -7520,6 +7524,7 @@
memcpy( ssl->peer_verify_data, buf, hash_len );
#endif
+#if defined(MBEDTLS_SSL_SESSION_RESUMPTION)
if( ssl->handshake->resume != 0 )
{
#if defined(MBEDTLS_SSL_CLI_C)
@@ -7532,6 +7537,7 @@
#endif
}
else
+#endif /* MBEDTLS_SSL_SESSION_RESUMPTION */
ssl->state++;
#if defined(MBEDTLS_SSL_PROTO_DTLS)