mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-12 18:15:27 +00:00
test: psa driver wrapper: Add non regression test for psa_cipher_generate_iv()
Add non regression test for invalid usage of the output buffer in psa_cipher_generate_iv(). The output buffer should not be used to pass the IV to the driver as a local attacker could be able to control the used IV. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
parent
33c6968d0f
commit
6fbc057786
|
@ -923,10 +923,23 @@ void cipher_entry_points( int alg_arg, int key_type_arg,
|
|||
mbedtls_test_driver_cipher_hooks.hits = 0;
|
||||
|
||||
mbedtls_test_driver_cipher_hooks.forced_status = PSA_ERROR_GENERIC_ERROR;
|
||||
/* Set the output buffer in a given state. */
|
||||
for( size_t i = 0; i < 16; i++ )
|
||||
output[i] = 0xa5;
|
||||
|
||||
status = psa_cipher_generate_iv( &operation, output, 16, &function_output_length );
|
||||
/* When generating the IV fails, it should call abort too */
|
||||
TEST_EQUAL( mbedtls_test_driver_cipher_hooks.hits, 2 );
|
||||
TEST_EQUAL( status, mbedtls_test_driver_cipher_hooks.forced_status );
|
||||
/*
|
||||
* Check that the output buffer is still in the same state.
|
||||
* This will fail if the output buffer is used by the core to pass the IV
|
||||
* it generated to the driver (and is not restored).
|
||||
*/
|
||||
for( size_t i = 0; i < 16; i++ )
|
||||
{
|
||||
TEST_EQUAL( output[i], 0xa5 );
|
||||
}
|
||||
/* Failure should prevent further operations from executing on the driver */
|
||||
mbedtls_test_driver_cipher_hooks.hits = 0;
|
||||
status = psa_cipher_update( &operation,
|
||||
|
|
Loading…
Reference in a new issue