Changed every memcpy to SCA equivalent mbedtls_platform_memcpy
This makes physical attacks more difficult.
diff --git a/library/ccm.c b/library/ccm.c
index 5d18b2f..a515df6 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -201,7 +201,7 @@
b[0] |= ( ( tag_len - 2 ) / 2 ) << 3;
b[0] |= q - 1;
- memcpy( b + 1, iv, iv_len );
+ mbedtls_platform_memcpy( b + 1, iv, iv_len );
for( i = 0, len_left = length; i < q; i++, len_left >>= 8 )
b[15-i] = (unsigned char)( len_left & 0xFF );
@@ -229,7 +229,7 @@
b[1] = (unsigned char)( ( add_len ) & 0xFF );
use_len = len_left < 16 - 2 ? len_left : 16 - 2;
- memcpy( b + 2, src, use_len );
+ mbedtls_platform_memcpy( b + 2, src, use_len );
len_left -= use_len;
src += use_len;
@@ -240,7 +240,7 @@
use_len = len_left > 16 ? 16 : len_left;
mbedtls_platform_memset( b, 0, 16 );
- memcpy( b, src, use_len );
+ mbedtls_platform_memcpy( b, src, use_len );
UPDATE_CBC_MAC;
len_left -= use_len;
@@ -259,7 +259,7 @@
* 2 .. 0 q - 1
*/
ctr[0] = q - 1;
- memcpy( ctr + 1, iv, iv_len );
+ mbedtls_platform_memcpy( ctr + 1, iv, iv_len );
mbedtls_platform_memset( ctr + 1 + iv_len, 0, q );
ctr[15] = 1;
@@ -280,7 +280,7 @@
if( mode == CCM_ENCRYPT )
{
mbedtls_platform_memset( b, 0, 16 );
- memcpy( b, src, use_len );
+ mbedtls_platform_memcpy( b, src, use_len );
UPDATE_CBC_MAC;
}
@@ -289,7 +289,7 @@
if( mode == CCM_DECRYPT )
{
mbedtls_platform_memset( b, 0, 16 );
- memcpy( b, dst, use_len );
+ mbedtls_platform_memcpy( b, dst, use_len );
UPDATE_CBC_MAC;
}
@@ -313,7 +313,7 @@
ctr[15-i] = 0;
CTR_CRYPT( y, y, 16 );
- memcpy( tag, y, tag_len );
+ mbedtls_platform_memcpy( tag, y, tag_len );
return( 0 );
}
@@ -497,7 +497,7 @@
mbedtls_platform_memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN );
mbedtls_platform_memset( ciphertext, 0, CCM_SELFTEST_CT_MAX_LEN );
- memcpy( plaintext, msg, msg_len[i] );
+ mbedtls_platform_memcpy( plaintext, msg, msg_len[i] );
ret = mbedtls_ccm_encrypt_and_tag( &ctx, msg_len[i],
iv, iv_len[i], ad, add_len[i],