diff --git a/library/ssl_tls13_generic.c b/library/ssl_tls13_generic.c
index c9bf78e..87bc12c 100644
--- a/library/ssl_tls13_generic.c
+++ b/library/ssl_tls13_generic.c
@@ -852,11 +852,11 @@
  */
 
 /* Main entry point: orchestrates the other functions */
-int mbedtls_ssl_tls1_3_finished_in_process( mbedtls_ssl_context* ssl );
+int mbedtls_ssl_tls13_finished_in_process( mbedtls_ssl_context* ssl );
 
-static int ssl_finished_in_preprocess( mbedtls_ssl_context* ssl );
-static int ssl_finished_in_postprocess( mbedtls_ssl_context* ssl );
-static int ssl_finished_in_parse( mbedtls_ssl_context* ssl,
+static int ssl_tls13_finished_in_preprocess( mbedtls_ssl_context* ssl );
+static int ssl_tls13_finished_in_postprocess( mbedtls_ssl_context* ssl );
+static int ssl_tls13_finished_in_parse( mbedtls_ssl_context* ssl,
                                   const unsigned char* buf,
                                   size_t buflen );
 
@@ -864,7 +864,7 @@
  * Implementation
  */
 
-int mbedtls_ssl_tls1_3_finished_in_process( mbedtls_ssl_context* ssl )
+int mbedtls_ssl_tls13_finished_in_process( mbedtls_ssl_context* ssl )
 {
     int ret = 0;
     unsigned char *buf;
@@ -873,15 +873,15 @@
     MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse finished" ) );
 
     /* Preprocessing step: Compute handshake digest */
-    MBEDTLS_SSL_PROC_CHK( ssl_finished_in_preprocess( ssl ) );
+    MBEDTLS_SSL_PROC_CHK( ssl_tls13_finished_in_preprocess( ssl ) );
 
     MBEDTLS_SSL_PROC_CHK( mbedtls_ssl_tls1_3_fetch_handshake_msg( ssl,
                                               MBEDTLS_SSL_HS_FINISHED,
                                               &buf, &buflen ) );
-    MBEDTLS_SSL_PROC_CHK( ssl_finished_in_parse( ssl, buf, buflen ) );
+    MBEDTLS_SSL_PROC_CHK( ssl_tls13_finished_in_parse( ssl, buf, buflen ) );
     mbedtls_ssl_tls1_3_add_hs_msg_to_checksum(
         ssl, MBEDTLS_SSL_HS_FINISHED, buf, buflen );
-    MBEDTLS_SSL_PROC_CHK( ssl_finished_in_postprocess( ssl ) );
+    MBEDTLS_SSL_PROC_CHK( ssl_tls13_finished_in_postprocess( ssl ) );
 
 cleanup:
 
@@ -889,7 +889,7 @@
     return( ret );
 }
 
-static int ssl_finished_in_preprocess( mbedtls_ssl_context* ssl )
+static int ssl_tls13_finished_in_preprocess( mbedtls_ssl_context* ssl )
 {
     int ret;
 
@@ -907,7 +907,7 @@
     return( 0 );
 }
 
-static int ssl_finished_in_parse( mbedtls_ssl_context* ssl,
+static int ssl_tls13_finished_in_parse( mbedtls_ssl_context* ssl,
                                   const unsigned char* buf,
                                   size_t buflen )
 {
@@ -941,17 +941,17 @@
     return( 0 );
 }
 
-static int ssl_finished_in_postprocess_cli( mbedtls_ssl_context *ssl )
+static int ssl_tls13_finished_in_postprocess_cli( mbedtls_ssl_context *ssl )
 {
     int ret = 0;
     mbedtls_ssl_key_set traffic_keys;
     mbedtls_ssl_transform *transform_application;
 
-    ret = mbedtls_ssl_tls1_3_key_schedule_stage_application( ssl );
+    ret = mbedtls_ssl_tls13_key_schedule_stage_application( ssl );
     if( ret != 0 )
     {
         MBEDTLS_SSL_DEBUG_RET( 1,
-           "mbedtls_ssl_tls1_3_key_schedule_stage_application", ret );
+           "mbedtls_ssl_tls13_key_schedule_stage_application", ret );
         return( ret );
     }
 
@@ -987,12 +987,12 @@
     return( 0 );
 }
 
-static int ssl_finished_in_postprocess( mbedtls_ssl_context* ssl )
+static int ssl_tls13_finished_in_postprocess( mbedtls_ssl_context* ssl )
 {
 
     if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT )
     {
-        return( ssl_finished_in_postprocess_cli( ssl ) );
+        return( ssl_tls13_finished_in_postprocess_cli( ssl ) );
     }
 
     return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
