diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index 58cbd87..e2c24e2 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -1164,9 +1164,9 @@
         /* Check verify-data in constant-time. The length OTOH is no secret */
         if( len    != 1 + ssl->verify_data_len * 2 ||
             buf[0] !=     ssl->verify_data_len * 2 ||
-            mbedtls_platform_memcmp( buf + 1,
+            mbedtls_platform_memequal( buf + 1,
                           ssl->own_verify_data, ssl->verify_data_len ) != 0 ||
-            mbedtls_platform_memcmp( buf + 1 + ssl->verify_data_len,
+            mbedtls_platform_memequal( buf + 1 + ssl->verify_data_len,
                           ssl->peer_verify_data, ssl->verify_data_len ) != 0 )
         {
             MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching renegotiation info" ) );
@@ -1495,7 +1495,7 @@
     for( p = ssl->conf->alpn_list; *p != NULL; p++ )
     {
         if( name_len == strlen( *p ) &&
-            mbedtls_platform_memcmp( buf + 3, *p, name_len ) == 0 )
+            mbedtls_platform_memequal( buf + 3, *p, name_len ) == 0 )
         {
             ssl->alpn_chosen = *p;
             return( 0 );
@@ -1746,7 +1746,7 @@
 
     mbedtls_platform_memcpy( ssl->handshake->randbytes + 32, buf + 2, 32 );
 
-    if( mbedtls_platform_memcmp( ssl->handshake->randbytes + 32, buf + 2, 32 ) == 0 )
+    if( mbedtls_platform_memequal( ssl->handshake->randbytes + 32, buf + 2, 32 ) == 0 )
     {
         ssl->handshake->hello_random_set = MBEDTLS_SSL_FI_FLAG_SET;
     }
@@ -1847,7 +1847,7 @@
         mbedtls_ssl_session_get_ciphersuite( ssl->session_negotiate ) != i ||
         mbedtls_ssl_session_get_compression( ssl->session_negotiate ) != comp ||
         ssl->session_negotiate->id_len != n ||
-        mbedtls_platform_memcmp( ssl->session_negotiate->id, buf + 35, n ) != 0 )
+        mbedtls_platform_memequal( ssl->session_negotiate->id, buf + 35, n ) != 0 )
     {
         ssl->handshake->resume = MBEDTLS_SSL_FI_FLAG_UNSET;
     }
@@ -2876,7 +2876,7 @@
             return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
         }
 
-        if( mbedtls_platform_memcmp( p, ecdh_group, sizeof( ecdh_group ) ) != 0 )
+        if( mbedtls_platform_memequal( p, ecdh_group, sizeof( ecdh_group ) ) != 0 )
         {
             MBEDTLS_SSL_DEBUG_MSG( 1, ( "Bad server key exchange (unexpected header)" ) );
             return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
