2018-10-24 11:45:18 +02:00
|
|
|
/* BEGIN_HEADER */
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2020-05-27 09:22:32 +02:00
|
|
|
#include "test/psa_crypto_helpers.h"
|
2018-10-24 11:45:18 +02:00
|
|
|
|
|
|
|
/* END_HEADER */
|
|
|
|
|
|
|
|
/* BEGIN_DEPENDENCIES
|
|
|
|
* depends_on:MBEDTLS_PSA_CRYPTO_C
|
|
|
|
* END_DEPENDENCIES
|
|
|
|
*/
|
|
|
|
|
2018-12-17 23:35:42 +01:00
|
|
|
/* BEGIN_CASE */
|
2018-10-24 11:45:18 +02:00
|
|
|
void hash_finish( int alg_arg, data_t *input, data_t *expected_hash )
|
|
|
|
{
|
|
|
|
psa_algorithm_t alg = alg_arg;
|
|
|
|
unsigned char actual_hash[PSA_HASH_MAX_SIZE];
|
|
|
|
size_t actual_hash_length;
|
2019-01-04 12:47:44 +01:00
|
|
|
psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT;
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_crypto_init( ) );
|
|
|
|
|
|
|
|
PSA_ASSERT( psa_hash_setup( &operation, alg ) );
|
|
|
|
PSA_ASSERT( psa_hash_update( &operation,
|
|
|
|
input->x, input->len ) );
|
|
|
|
PSA_ASSERT( psa_hash_finish( &operation,
|
|
|
|
actual_hash, sizeof( actual_hash ),
|
|
|
|
&actual_hash_length ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
ASSERT_COMPARE( expected_hash->x, expected_hash->len,
|
|
|
|
actual_hash, actual_hash_length );
|
|
|
|
|
|
|
|
exit:
|
2019-05-28 15:10:21 +02:00
|
|
|
PSA_DONE( );
|
2018-10-24 11:45:18 +02:00
|
|
|
}
|
|
|
|
/* END_CASE */
|
|
|
|
|
|
|
|
/* BEGIN_CASE */
|
|
|
|
void hash_verify( int alg_arg, data_t *input, data_t *expected_hash )
|
|
|
|
{
|
|
|
|
psa_algorithm_t alg = alg_arg;
|
2019-01-04 12:47:44 +01:00
|
|
|
psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT;
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_crypto_init( ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_hash_setup( &operation, alg ) );
|
|
|
|
PSA_ASSERT( psa_hash_update( &operation,
|
|
|
|
input->x,
|
|
|
|
input->len ) );
|
|
|
|
PSA_ASSERT( psa_hash_verify( &operation,
|
|
|
|
expected_hash->x,
|
|
|
|
expected_hash->len ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
|
|
|
exit:
|
2019-05-28 15:10:21 +02:00
|
|
|
PSA_DONE( );
|
2018-10-24 11:45:18 +02:00
|
|
|
}
|
|
|
|
/* END_CASE */
|
|
|
|
|
|
|
|
/* BEGIN_CASE */
|
|
|
|
void hash_multi_part( int alg_arg, data_t *input, data_t *expected_hash )
|
|
|
|
{
|
|
|
|
psa_algorithm_t alg = alg_arg;
|
2018-10-29 12:34:37 +01:00
|
|
|
unsigned char actual_hash[PSA_HASH_MAX_SIZE];
|
2018-10-24 11:45:18 +02:00
|
|
|
size_t actual_hash_length;
|
2019-01-04 12:47:44 +01:00
|
|
|
psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT;
|
2019-01-19 12:03:41 +01:00
|
|
|
psa_hash_operation_t operation2 = PSA_HASH_OPERATION_INIT;
|
2018-10-29 12:34:37 +01:00
|
|
|
uint32_t len = 0;
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_crypto_init( ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-10-29 12:34:37 +01:00
|
|
|
do
|
|
|
|
{
|
|
|
|
memset( actual_hash, 0, sizeof( actual_hash ) );
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_hash_setup( &operation, alg ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_hash_update( &operation,
|
|
|
|
input->x, len ) );
|
2019-01-19 12:03:41 +01:00
|
|
|
PSA_ASSERT( psa_hash_clone( &operation, &operation2 ) );
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_hash_update( &operation,
|
|
|
|
input->x + len, input->len - len ) );
|
2019-01-19 12:03:41 +01:00
|
|
|
PSA_ASSERT( psa_hash_update( &operation2,
|
|
|
|
input->x + len, input->len - len ) );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
2018-12-18 00:18:46 +01:00
|
|
|
PSA_ASSERT( psa_hash_finish( &operation,
|
|
|
|
actual_hash, sizeof( actual_hash ),
|
|
|
|
&actual_hash_length ) );
|
2018-10-29 12:34:37 +01:00
|
|
|
ASSERT_COMPARE( expected_hash->x, expected_hash->len,
|
|
|
|
actual_hash, actual_hash_length );
|
|
|
|
|
2019-01-19 12:03:41 +01:00
|
|
|
PSA_ASSERT( psa_hash_finish( &operation2,
|
|
|
|
actual_hash, sizeof( actual_hash ),
|
|
|
|
&actual_hash_length ) );
|
|
|
|
ASSERT_COMPARE( expected_hash->x, expected_hash->len,
|
|
|
|
actual_hash, actual_hash_length );
|
2018-10-29 12:34:37 +01:00
|
|
|
} while( len++ != input->len );
|
2018-10-24 11:45:18 +02:00
|
|
|
|
|
|
|
exit:
|
2019-05-28 15:10:21 +02:00
|
|
|
PSA_DONE( );
|
2018-10-24 11:45:18 +02:00
|
|
|
}
|
|
|
|
/* END_CASE */
|