diff --git a/library/aes.c b/library/aes.c
index 51ecd1e..243c4ec 100644
--- a/library/aes.c
+++ b/library/aes.c
@@ -1846,7 +1846,7 @@
 #endif
     mbedtls_aes_context ctx;
 
-    mbedtls_platform_memset( key, 0, 32 );
+    memset( key, 0, 32 );
     mbedtls_aes_init( &ctx );
 
     /*
@@ -1878,7 +1878,7 @@
         }
 #endif /* MBEDTLS_AES_ONLY_ENCRYPT */
 
-        mbedtls_platform_memset( buf, 0, 16 );
+        memset( buf, 0, 16 );
 
         if( mode == MBEDTLS_AES_DECRYPT )
         {
@@ -1956,9 +1956,9 @@
         }
 #endif /* MBEDTLS_AES_ONLY_ENCRYPT */
 
-        mbedtls_platform_memset( iv , 0, 16 );
-        mbedtls_platform_memset( prv, 0, 16 );
-        mbedtls_platform_memset( buf, 0, 16 );
+        memset( iv , 0, 16 );
+        memset( prv, 0, 16 );
+        memset( buf, 0, 16 );
 
         if( mode == MBEDTLS_AES_DECRYPT )
         {
@@ -2272,8 +2272,8 @@
         }
 #endif /* MBEDTLS_AES_ONLY_ENCRYPT */
 
-        mbedtls_platform_memset( key, 0, sizeof( key ) );
-        mbedtls_platform_memcpy( key, aes_test_xts_key[u], 32 );
+        memset( key, 0, sizeof( key ) );
+        memcpy( key, aes_test_xts_key[u], 32 );
         data_unit = aes_test_xts_data_unit[u];
 
         len = sizeof( *aes_test_xts_ct32 );
diff --git a/library/aria.c b/library/aria.c
index 3a785d4..d2970a2 100644
--- a/library/aria.c
+++ b/library/aria.c
@@ -1047,8 +1047,8 @@
         if( verbose )
             mbedtls_printf( "  ARIA-CTR-%d (enc): ", 128 + 64 * i );
         mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i );
-        mbedtls_platform_memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE );                    // IV = 0
-        mbedtls_platform_memset( buf, 0x55, sizeof( buf ) );
+        memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE );                    // IV = 0
+        memset( buf, 0x55, sizeof( buf ) );
         j = 0;
         mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk,
             aria_test2_pt, buf );
@@ -1059,8 +1059,8 @@
         if( verbose )
             mbedtls_printf( "  ARIA-CTR-%d (dec): ", 128 + 64 * i );
         mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i );
-        mbedtls_platform_memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE );                    // IV = 0
-        mbedtls_platform_memset( buf, 0xAA, sizeof( buf ) );
+        memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE );                    // IV = 0
+        memset( buf, 0xAA, sizeof( buf ) );
         j = 0;
         mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk,
             aria_test2_ctr_ct[i], buf );
diff --git a/library/camellia.c b/library/camellia.c
index 58ae1a8..77a731b 100644
--- a/library/camellia.c
+++ b/library/camellia.c
@@ -951,7 +951,7 @@
 
     mbedtls_camellia_context ctx;
 
-    mbedtls_platform_memset( key, 0, 32 );
+    memset( key, 0, 32 );
 
     for( j = 0; j < 6; j++ ) {
         u = j >> 1;
diff --git a/library/ccm.c b/library/ccm.c
index bec7498..9911e0f 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -512,7 +512,7 @@
 
             return( 1 );
         }
-        mbedtls_platform_memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN );
+        memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN );
 
         ret = mbedtls_ccm_auth_decrypt( &ctx, msg_len[i],
                                         iv, iv_len[i], ad, add_len[i],
diff --git a/library/ecjpake.c b/library/ecjpake.c
index 2b6a989..0fb5b54 100644
--- a/library/ecjpake.c
+++ b/library/ecjpake.c
@@ -1104,7 +1104,7 @@
     TEST_ASSERT( len == sizeof( ecjpake_test_pms ) );
     TEST_ASSERT( memcmp( buf, ecjpake_test_pms, len ) == 0 );
 
-    mbedtls_platform_memset( buf, 0, len ); /* Avoid interferences with next step */
+    memset( buf, 0, len ); /* Avoid interferences with next step */
 
     /* Client derives PMS */
     TEST_ASSERT( mbedtls_ecjpake_derive_secret( &cli,
diff --git a/library/ripemd160.c b/library/ripemd160.c
index bdfad2c..3ef8e10 100644
--- a/library/ripemd160.c
+++ b/library/ripemd160.c
@@ -520,7 +520,7 @@
     int i, ret = 0;
     unsigned char output[20];
 
-    mbedtls_platform_memset( output, 0, sizeof output );
+    memset( output, 0, sizeof output );
 
     for( i = 0; i < TESTS; i++ )
     {
diff --git a/library/sha1.c b/library/sha1.c
index 4032d11..9f0a7b0 100644
--- a/library/sha1.c
+++ b/library/sha1.c
@@ -523,7 +523,7 @@
 
         if( i == 2 )
         {
-            mbedtls_platform_memset( buf, 'a', buflen = 1000 );
+            memset( buf, 'a', buflen = 1000 );
 
             for( j = 0; j < 1000; j++ )
             {
diff --git a/library/sha256.c b/library/sha256.c
index 3ecacc0..785e28b 100644
--- a/library/sha256.c
+++ b/library/sha256.c
@@ -527,7 +527,7 @@
 
         if( j == 2 )
         {
-            mbedtls_platform_memset( buf, 'a', buflen = 1000 );
+            memset( buf, 'a', buflen = 1000 );
 
             for( j = 0; j < 1000; j++ )
             {
diff --git a/library/sha512.c b/library/sha512.c
index 648735b..504e30d 100644
--- a/library/sha512.c
+++ b/library/sha512.c
@@ -585,7 +585,7 @@
 
         if( j == 2 )
         {
-            mbedtls_platform_memset( buf, 'a', buflen = 1000 );
+            memset( buf, 'a', buflen = 1000 );
 
             for( j = 0; j < 1000; j++ )
             {
