Add transforms to be used for TLS 1.3
Signed-off-by: Hanno Becker <hanno.becker@arm.com>
diff --git a/library/ssl_misc.h b/library/ssl_misc.h
index cc19f47..174bad8 100644
--- a/library/ssl_misc.h
+++ b/library/ssl_misc.h
@@ -562,6 +562,13 @@
uint16_t mtu; /*!< Handshake mtu, used to fragment outgoing messages */
#endif /* MBEDTLS_SSL_PROTO_DTLS */
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL)
+ /* TLS 1.3 transforms for 0-RTT and encrypted handshake messages.
+ * Those pointers own the transforms they reference. */
+ mbedtls_ssl_transform *transform_handshake;
+ mbedtls_ssl_transform *transform_earlydata;
+#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */
+
/*
* Checksum contexts
*/
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index bb5ddc4..8316d25 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -5393,6 +5393,13 @@
handle_buffer_resizing( ssl, 1, mbedtls_ssl_get_input_buflen( ssl ),
mbedtls_ssl_get_output_buflen( ssl ) );
#endif
+
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL)
+ mbedtls_free( handshake->transform_earlydata );
+ mbedtls_free( handshake->transform_handshake );
+ handshake->transform_earlydata = NULL;
+ handshake->transform_handshake = NULL;
+#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */
}
void mbedtls_ssl_session_free( mbedtls_ssl_session *session )
@@ -6091,6 +6098,11 @@
mbedtls_free( ssl->session_negotiate );
}
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL)
+ mbedtls_ssl_transform_free( ssl->transform_application );
+ mbedtls_free( ssl->transform_application );
+#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */
+
if( ssl->session )
{
mbedtls_ssl_session_free( ssl->session );