Changed every memcpy to SCA equivalent mbedtls_platform_memcpy
This makes physical attacks more difficult.
diff --git a/library/ctr_drbg.c b/library/ctr_drbg.c
index e7139cd..dd8aad6 100644
--- a/library/ctr_drbg.c
+++ b/library/ctr_drbg.c
@@ -185,7 +185,7 @@
*p++ = ( data_len ) & 0xff;
p += 3;
*p++ = MBEDTLS_CTR_DRBG_SEEDLEN;
- memcpy( p, data, data_len );
+ mbedtls_platform_memcpy( p, data, data_len );
p[data_len] = 0x80;
buf_len = MBEDTLS_CTR_DRBG_BLOCKSIZE + 8 + data_len + 1;
@@ -221,7 +221,7 @@
}
}
- memcpy( tmp + j, chain, MBEDTLS_CTR_DRBG_BLOCKSIZE );
+ mbedtls_platform_memcpy( tmp + j, chain, MBEDTLS_CTR_DRBG_BLOCKSIZE );
/*
* Update IV
@@ -245,7 +245,7 @@
{
goto exit;
}
- memcpy( p, iv, MBEDTLS_CTR_DRBG_BLOCKSIZE );
+ mbedtls_platform_memcpy( p, iv, MBEDTLS_CTR_DRBG_BLOCKSIZE );
p += MBEDTLS_CTR_DRBG_BLOCKSIZE;
}
exit:
@@ -312,7 +312,7 @@
*/
if( ( ret = mbedtls_aes_setkey_enc( &ctx->aes_ctx, tmp, MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 )
goto exit;
- memcpy( ctx->counter, tmp + MBEDTLS_CTR_DRBG_KEYSIZE, MBEDTLS_CTR_DRBG_BLOCKSIZE );
+ mbedtls_platform_memcpy( ctx->counter, tmp + MBEDTLS_CTR_DRBG_KEYSIZE, MBEDTLS_CTR_DRBG_BLOCKSIZE );
exit:
mbedtls_platform_zeroize( tmp, sizeof( tmp ) );
@@ -405,7 +405,7 @@
*/
if( additional && len )
{
- memcpy( seed + seedlen, additional, len );
+ mbedtls_platform_memcpy( seed + seedlen, additional, len );
seedlen += len;
}
@@ -504,7 +504,7 @@
/*
* Copy random block to destination
*/
- memcpy( p, tmp, use_len );
+ mbedtls_platform_memcpy( p, tmp, use_len );
p += use_len;
output_len -= use_len;
}
@@ -649,7 +649,7 @@
size_t len )
{
const unsigned char *p = data;
- memcpy( buf, p + test_offset, len );
+ mbedtls_platform_memcpy( buf, p + test_offset, len );
test_offset += len;
return( 0 );
}