mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-06-19 17:17:52 +00:00
Update AES SCA random number function
-Replace usage of rand() with mbedtls_platform_random_in_range() -Prevent for-ever loop by hardcoding SCA countermeasure position in case of used random function is always returning constant number.
This commit is contained in:
parent
f44f7d465a
commit
76deef9fca
|
@ -544,24 +544,31 @@ static void aes_sca_cm_data_randomize( uint8_t *tbl, uint8_t tbl_len )
|
||||||
// Randomize SCA CM positions to tbl
|
// Randomize SCA CM positions to tbl
|
||||||
for( i = 0; i < AES_SCA_CM_ROUNDS; i++ )
|
for( i = 0; i < AES_SCA_CM_ROUNDS; i++ )
|
||||||
{
|
{
|
||||||
|
is_unique_number = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
is_unique_number = 1;
|
is_unique_number++;
|
||||||
/* TODO - Use proper random. This is now ONLY FOR TESTING as mbedtls_platform_random_in_range is alwyays returning 0 */
|
num = mbedtls_platform_random_in_range( tbl_len - 4 );
|
||||||
num = /* mbedtls_platform_random_in_range( tbl_len - 4 ) */rand() % (tbl_len - 4);
|
|
||||||
|
if( is_unique_number > 10 )
|
||||||
|
{
|
||||||
|
// prevent forever loop if random returns constant
|
||||||
|
is_unique_number = 0;
|
||||||
|
tbl[i] = 0x10; // fake data
|
||||||
|
}
|
||||||
|
|
||||||
if( tbl[num] == 0 )
|
if( tbl[num] == 0 )
|
||||||
{
|
{
|
||||||
is_unique_number = 0;
|
is_unique_number = 0;
|
||||||
tbl[num] = 0x10;
|
tbl[num] = 0x10; // fake data
|
||||||
}
|
}
|
||||||
} while( is_unique_number == 1 );
|
} while( is_unique_number != 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// randomize control data for start and final round
|
// randomize control data for start and final round
|
||||||
for( i = 1; i <= 2; i++ )
|
for( i = 1; i <= 2; i++ )
|
||||||
{
|
{
|
||||||
num = /* mbedtls_platform_random_in_range( 0xff ) */rand() % 0xff;
|
num = mbedtls_platform_random_in_range( 0xff );
|
||||||
if( ( num % 2 ) == 0 )
|
if( ( num % 2 ) == 0 )
|
||||||
{
|
{
|
||||||
tbl[tbl_len - ( i * 2 - 0 )] = 0x10; // fake data
|
tbl[tbl_len - ( i * 2 - 0 )] = 0x10; // fake data
|
||||||
|
|
Loading…
Reference in a new issue