mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-11 10:25:34 +00:00
Fix psa_generate_random for >1024 bytes
mbedtls_ctr_drbg_random can only return up to MBEDTLS_CTR_DRBG_MAX_REQUEST (normally 1024) bytes at a time. So if more than that is requested, call mbedtls_ctr_drbg_random in a loop.
This commit is contained in:
parent
bdc96fd636
commit
f181eca350
|
@ -5650,6 +5650,17 @@ psa_status_t psa_generate_random( uint8_t *output,
|
||||||
int ret;
|
int ret;
|
||||||
GUARD_MODULE_INITIALIZED;
|
GUARD_MODULE_INITIALIZED;
|
||||||
|
|
||||||
|
while( output_size > MBEDTLS_CTR_DRBG_MAX_REQUEST )
|
||||||
|
{
|
||||||
|
ret = mbedtls_ctr_drbg_random( &global_data.ctr_drbg,
|
||||||
|
output,
|
||||||
|
MBEDTLS_CTR_DRBG_MAX_REQUEST );
|
||||||
|
if( ret != 0 )
|
||||||
|
return( mbedtls_to_psa_error( ret ) );
|
||||||
|
output += MBEDTLS_CTR_DRBG_MAX_REQUEST;
|
||||||
|
output_size -= MBEDTLS_CTR_DRBG_MAX_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
ret = mbedtls_ctr_drbg_random( &global_data.ctr_drbg, output, output_size );
|
ret = mbedtls_ctr_drbg_random( &global_data.ctr_drbg, output, output_size );
|
||||||
return( mbedtls_to_psa_error( ret ) );
|
return( mbedtls_to_psa_error( ret ) );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue