Add handshake wrapup
Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
diff --git a/library/ssl_tls13_generic.c b/library/ssl_tls13_generic.c
index b687ad1..525dd1a 100644
--- a/library/ssl_tls13_generic.c
+++ b/library/ssl_tls13_generic.c
@@ -1267,8 +1267,66 @@
static int ssl_tls13_finalize_finished_message( mbedtls_ssl_context *ssl )
{
- // TODO: Add back resumption keys calculation after MVP.
- ((void) ssl);
+ int ret = 0;
+#if defined(MBEDTLS_SSL_CLI_C)
+ if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT )
+ {
+ /* Compute resumption_master_secret */
+ ret = mbedtls_ssl_tls13_generate_resumption_master_secret( ssl );
+ if( ret != 0 )
+ {
+ MBEDTLS_SSL_DEBUG_RET( 1,
+ "mbedtls_ssl_tls13_generate_resumption_master_secret ", ret );
+ return ( ret );
+ }
+
+ }
+ else
+#endif /* MBEDTLS_SSL_CLI_C */
+
+#if defined(MBEDTLS_SSL_SRV_C)
+ if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER )
+ {
+ mbedtls_ssl_key_set traffic_keys;
+ mbedtls_ssl_transform *transform_application;
+
+ ret = mbedtls_ssl_tls13_key_schedule_stage_application( ssl );
+ if( ret != 0 )
+ {
+ MBEDTLS_SSL_DEBUG_RET( 1,
+ "mbedtls_ssl_tls13_key_schedule_stage_application", ret );
+ return( ret );
+ }
+
+ ret = mbedtls_ssl_tls13_generate_application_keys(
+ ssl, &traffic_keys );
+ if( ret != 0 )
+ {
+ MBEDTLS_SSL_DEBUG_RET( 1,
+ "mbedtls_ssl_tls13_generate_application_keys", ret );
+ return( ret );
+ }
+
+ transform_application =
+ mbedtls_calloc( 1, sizeof( mbedtls_ssl_transform ) );
+ if( transform_application == NULL )
+ return( MBEDTLS_ERR_SSL_ALLOC_FAILED );
+
+ ret = mbedtls_ssl_tls13_populate_transform(
+ transform_application, ssl->conf->endpoint,
+ ssl->session_negotiate->ciphersuite,
+ &traffic_keys, ssl );
+ if( ret != 0 )
+ return( ret );
+
+ ssl->transform_application = transform_application;
+ }
+ else
+#endif /* MBEDTLS_SSL_SRV_C */
+ {
+ /* Should never happen */
+ return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
+ }
return( 0 );
}