Skip to content

Commit 49bd582

Browse files
Test the call to p_validate_slot_number when registering a key
1 parent a5f8749 commit 49bd582

File tree

2 files changed

+48
-5
lines changed

2 files changed

+48
-5
lines changed

tests/suites/test_suite_psa_crypto_se_driver_hal.data

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,19 @@ Generate key: not supported
112112
generate_key_not_supported:PSA_KEY_TYPE_AES:128
113113

114114
Key registration: smoke test
115-
register_key_smoke_test:MIN_DRIVER_LIFETIME:PSA_SUCCESS
115+
register_key_smoke_test:MIN_DRIVER_LIFETIME:-1:PSA_SUCCESS
116116

117117
Key registration: invalid lifetime (volatile)
118-
register_key_smoke_test:PSA_KEY_LIFETIME_VOLATILE:PSA_ERROR_INVALID_ARGUMENT
118+
register_key_smoke_test:PSA_KEY_LIFETIME_VOLATILE:-1:PSA_ERROR_INVALID_ARGUMENT
119119

120120
Key registration: invalid lifetime (internal storage)
121-
register_key_smoke_test:PSA_KEY_LIFETIME_PERSISTENT:PSA_ERROR_INVALID_ARGUMENT
121+
register_key_smoke_test:PSA_KEY_LIFETIME_PERSISTENT:-1:PSA_ERROR_INVALID_ARGUMENT
122122

123123
Key registration: invalid lifetime (no registered driver)
124-
register_key_smoke_test:MIN_DRIVER_LIFETIME + 1:PSA_ERROR_INVALID_ARGUMENT
124+
register_key_smoke_test:MIN_DRIVER_LIFETIME + 1:-1:PSA_ERROR_INVALID_ARGUMENT
125+
126+
Key registration: with driver validation (accepted)
127+
register_key_smoke_test:MIN_DRIVER_LIFETIME:1:PSA_SUCCESS
128+
129+
Key registration: with driver validation (rejected)
130+
register_key_smoke_test:MIN_DRIVER_LIFETIME:0:PSA_ERROR_NOT_PERMITTED

tests/suites/test_suite_psa_crypto_se_driver_hal.function

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,28 @@
3737
/* Miscellaneous driver methods */
3838
/****************************************************************/
3939

40+
typedef struct
41+
{
42+
psa_key_slot_number_t slot_number;
43+
psa_key_creation_method_t method;
44+
psa_status_t status;
45+
} validate_slot_number_directions_t;
46+
static validate_slot_number_directions_t validate_slot_number_directions;
47+
48+
/* Validate a choice of slot number as directed. */
49+
static psa_status_t validate_slot_number_as_directed(
50+
psa_drv_se_context_t *context,
51+
const psa_key_attributes_t *attributes,
52+
psa_key_creation_method_t method,
53+
psa_key_slot_number_t slot_number )
54+
{
55+
(void) context;
56+
(void) attributes;
57+
DRIVER_ASSERT( slot_number == validate_slot_number_directions.slot_number );
58+
DRIVER_ASSERT( method == validate_slot_number_directions.method );
59+
return( validate_slot_number_directions.status );
60+
}
61+
4062
/* Allocate slot numbers with a monotonic counter. */
4163
static psa_status_t counter_allocate( psa_drv_se_context_t *context,
4264
void *persistent_data,
@@ -718,11 +740,14 @@ exit:
718740
/* END_CASE */
719741

720742
/* BEGIN_CASE */
721-
void register_key_smoke_test( int lifetime_arg, int expected_status_arg )
743+
void register_key_smoke_test( int lifetime_arg,
744+
int validate,
745+
int expected_status_arg )
722746
{
723747
psa_key_lifetime_t lifetime = lifetime_arg;
724748
psa_status_t expected_status = expected_status_arg;
725749
psa_drv_se_t driver;
750+
psa_drv_se_key_management_t key_management;
726751
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
727752
psa_key_id_t id = 1;
728753
size_t bit_size = 48;
@@ -732,6 +757,16 @@ void register_key_smoke_test( int lifetime_arg, int expected_status_arg )
732757

733758
memset( &driver, 0, sizeof( driver ) );
734759
driver.hal_version = PSA_DRV_SE_HAL_VERSION;
760+
if( validate >= 0 )
761+
{
762+
memset( &key_management, 0, sizeof( key_management ) );
763+
driver.key_management = &key_management;
764+
key_management.p_validate_slot_number = validate_slot_number_as_directed;
765+
validate_slot_number_directions.slot_number = wanted_slot;
766+
validate_slot_number_directions.method = PSA_KEY_CREATION_REGISTER;
767+
validate_slot_number_directions.status =
768+
( validate > 0 ? PSA_SUCCESS : PSA_ERROR_NOT_PERMITTED );
769+
}
735770

736771
PSA_ASSERT( psa_register_se_driver( MIN_DRIVER_LIFETIME, &driver ) );
737772
PSA_ASSERT( psa_crypto_init( ) );
@@ -770,5 +805,7 @@ exit:
770805
psa_destroy_key( handle );
771806
PSA_DONE( );
772807
psa_purge_storage( );
808+
memset( &validate_slot_number_directions, 0,
809+
sizeof( validate_slot_number_directions ) );
773810
}
774811
/* END_CASE */

0 commit comments

Comments
 (0)