diff --git a/library/ssl_tls13_generic.c b/library/ssl_tls13_generic.c
index d1a20df..6fc141a 100644
--- a/library/ssl_tls13_generic.c
+++ b/library/ssl_tls13_generic.c
@@ -1027,17 +1027,15 @@
 
 /* Main entry point: orchestrates the other functions */
 
-int mbedtls_ssl_finished_out_process( mbedtls_ssl_context *ssl );
-
-static int ssl_finished_out_prepare( mbedtls_ssl_context *ssl );
-static int ssl_finished_out_write( mbedtls_ssl_context *ssl,
+static int ssl_prepare_finished_out( mbedtls_ssl_context *ssl );
+static int ssl_write_finished_out( mbedtls_ssl_context *ssl,
                                    unsigned char *buf,
                                    size_t buflen,
                                    size_t *olen );
-static int ssl_finished_out_postprocess( mbedtls_ssl_context *ssl );
+static int ssl_postprocess_finished_out( mbedtls_ssl_context *ssl );
 
 
-int mbedtls_ssl_tls13_finished_out_process( mbedtls_ssl_context *ssl )
+int mbedtls_ssl_tls13_process_finished_out( mbedtls_ssl_context *ssl )
 {
     int ret;
     unsigned char *buf;
@@ -1047,20 +1045,20 @@
 
     if( !ssl->handshake->state_local.finished_out.preparation_done )
     {
-        MBEDTLS_SSL_PROC_CHK( ssl_finished_out_prepare( ssl ) );
+        MBEDTLS_SSL_PROC_CHK( ssl_prepare_finished_out( ssl ) );
         ssl->handshake->state_local.finished_out.preparation_done = 1;
     }
 
     MBEDTLS_SSL_PROC_CHK( mbedtls_ssl_tls13_start_handshake_msg( ssl,
                          MBEDTLS_SSL_HS_FINISHED, &buf, &buf_len ) );
 
-    MBEDTLS_SSL_PROC_CHK( ssl_finished_out_write(
+    MBEDTLS_SSL_PROC_CHK( ssl_write_finished_out(
                               ssl, buf, buf_len, &msg_len ) );
 
     mbedtls_ssl_tls1_3_add_hs_msg_to_checksum( ssl, MBEDTLS_SSL_HS_FINISHED,
                                         buf, msg_len );
 
-    MBEDTLS_SSL_PROC_CHK( ssl_finished_out_postprocess( ssl ) );
+    MBEDTLS_SSL_PROC_CHK( ssl_postprocess_finished_out( ssl ) );
     MBEDTLS_SSL_PROC_CHK( mbedtls_ssl_tls13_finish_handshake_msg( ssl,
                                               buf_len, msg_len ) );
     MBEDTLS_SSL_PROC_CHK( mbedtls_ssl_flush_output( ssl ) );
@@ -1071,7 +1069,7 @@
     return( ret );
 }
 
-static int ssl_finished_out_prepare( mbedtls_ssl_context *ssl )
+static int ssl_prepare_finished_out( mbedtls_ssl_context *ssl )
 {
     int ret;
 
@@ -1091,7 +1089,7 @@
     return( 0 );
 }
 
-static int ssl_finished_out_postprocess( mbedtls_ssl_context *ssl )
+static int ssl_postprocess_finished_out( mbedtls_ssl_context *ssl )
 {
     int ret = 0;
 
@@ -1112,6 +1110,7 @@
     else
 #endif /* MBEDTLS_SSL_CLI_C */
     {
+        ((void) ssl);
         /* Should never happen */
         return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
     }
@@ -1119,7 +1118,7 @@
     return( 0 );
 }
 
-static int ssl_finished_out_write( mbedtls_ssl_context *ssl,
+static int ssl_write_finished_out( mbedtls_ssl_context *ssl,
                                    unsigned char *buf,
                                    size_t buflen,
                                    size_t *olen )
