Changed every memcpy to SCA equivalent mbedtls_platform_memcpy
This makes physical attacks more difficult.
diff --git a/library/bignum.c b/library/bignum.c
index 39e36a7..842b38b 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -132,7 +132,7 @@
if( X->p != NULL )
{
- memcpy( p, X->p, X->n * ciL );
+ mbedtls_platform_memcpy( p, X->p, X->n * ciL );
mbedtls_mpi_zeroize( X->p, X->n );
mbedtls_free( X->p );
}
@@ -174,7 +174,7 @@
if( X->p != NULL )
{
- memcpy( p, X->p, i * ciL );
+ mbedtls_platform_memcpy( p, X->p, i * ciL );
mbedtls_mpi_zeroize( X->p, X->n );
mbedtls_free( X->p );
}
@@ -220,7 +220,7 @@
mbedtls_platform_memset( X->p + i, 0, ( X->n - i ) * ciL );
}
- memcpy( X->p, Y->p, i * ciL );
+ mbedtls_platform_memcpy( X->p, Y->p, i * ciL );
cleanup:
@@ -236,9 +236,9 @@
MPI_VALIDATE( X != NULL );
MPI_VALIDATE( Y != NULL );
- memcpy( &T, X, sizeof( mbedtls_mpi ) );
- memcpy( X, Y, sizeof( mbedtls_mpi ) );
- memcpy( Y, &T, sizeof( mbedtls_mpi ) );
+ mbedtls_platform_memcpy( &T, X, sizeof( mbedtls_mpi ) );
+ mbedtls_platform_memcpy( X, Y, sizeof( mbedtls_mpi ) );
+ mbedtls_platform_memcpy( Y, &T, sizeof( mbedtls_mpi ) );
}
/*
@@ -848,12 +848,12 @@
}
MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) );
- /* Avoid calling `memcpy` with NULL source argument,
+ /* Avoid calling `mbedtls_platform_memcpy` with NULL source argument,
* even if buflen is 0. */
if( buf != NULL )
{
Xp = (unsigned char*) X->p;
- memcpy( Xp + overhead, buf, buflen );
+ mbedtls_platform_memcpy( Xp + overhead, buf, buflen );
mpi_bigendian_to_host( X->p, limbs );
}
@@ -1817,7 +1817,7 @@
*d++ = u0; d[n + 1] = 0;
}
- memcpy( A->p, d, ( n + 1 ) * ciL );
+ mbedtls_platform_memcpy( A->p, d, ( n + 1 ) * ciL );
if( mbedtls_mpi_cmp_abs( A, N ) >= 0 )
mpi_sub_hlp( n, N->p, A->p );
@@ -1913,10 +1913,10 @@
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &RR, &RR, N ) );
if( _RR != NULL )
- memcpy( _RR, &RR, sizeof( mbedtls_mpi ) );
+ mbedtls_platform_memcpy( _RR, &RR, sizeof( mbedtls_mpi ) );
}
else
- memcpy( &RR, _RR, sizeof( mbedtls_mpi ) );
+ mbedtls_platform_memcpy( &RR, _RR, sizeof( mbedtls_mpi ) );
/*
* W[1] = A * R^2 * R^-1 mod N = A * R mod N