Add static internal MAC finish function
add new psa_mac_finish_internal() to be called by psa_mac_finish() and
psa_mac_verify() in order to be able to check key usage separatly.
diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index b0cfe20..bda2e7c 100644
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -221,6 +221,7 @@
unsigned char *expected_mac = NULL;
size_t expected_mac_size;
psa_mac_operation_t operation;
+ psa_key_policy_t policy;
key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
@@ -236,6 +237,12 @@
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
+ psa_key_policy_init( &policy );
+
+ psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_VERIFY, alg_arg );
+
+ TEST_ASSERT( psa_set_key_policy( key_slot, &policy ) == PSA_SUCCESS );
+
TEST_ASSERT( psa_import_key( key_slot, key_type,
key, key_size ) == PSA_SUCCESS );
// TODO: support IV
@@ -427,7 +434,6 @@
void key_policy_fail( int usage_arg, int alg_arg, int expected_status, char *key_hex )
{
int key_slot = 1;
- psa_key_type_t key_type = PSA_KEY_TYPE_AES;
unsigned char key[32] = {0};
unsigned char* keypair = NULL;
size_t key_size = 0;
@@ -445,27 +451,22 @@
TEST_ASSERT( psa_set_key_policy( key_slot, &policy ) == PSA_SUCCESS );
- switch( usage_arg )
+ if( usage_arg & PSA_KEY_USAGE_EXPORT )
{
- case PSA_KEY_USAGE_EXPORT:
- keypair = unhexify_alloc( key_hex, &key_size );
- TEST_ASSERT( keypair != NULL );
- key_type = PSA_KEY_TYPE_RSA_KEYPAIR;
- TEST_ASSERT( psa_import_key( key_slot, key_type,
- keypair, key_size ) == PSA_SUCCESS );
- actual_status = psa_asymmetric_sign( key_slot,
- ( psa_algorithm_t )alg_arg, NULL, 0, NULL, 0,
- NULL, 0, &signature_length );
- break;
-
- case PSA_KEY_USAGE_SIGN:
- key_type = PSA_KEY_TYPE_AES;
- TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, sizeof( key ) ) == PSA_SUCCESS );
- actual_status = psa_export_key( key_slot, NULL, 0, NULL );
- break;
- default:
- break;
+ keypair = unhexify_alloc( key_hex, &key_size );
+ TEST_ASSERT( keypair != NULL );
+ TEST_ASSERT( psa_import_key( key_slot, PSA_KEY_TYPE_RSA_KEYPAIR,
+ keypair, key_size ) == PSA_SUCCESS );
+ actual_status = psa_asymmetric_sign( key_slot,
+ ( psa_algorithm_t )alg_arg, NULL, 0, NULL, 0,
+ NULL, 0, &signature_length );
+ }
+
+ if( usage_arg & PSA_KEY_USAGE_SIGN )
+ {
+ TEST_ASSERT( psa_import_key( key_slot, PSA_KEY_TYPE_RSA_KEYPAIR,
+ key, sizeof( key ) ) == PSA_SUCCESS );
+ actual_status = psa_export_key( key_slot, NULL, 0, NULL );
}
TEST_ASSERT( actual_status == expected_status );