@@ -307,6 +307,51 @@ void test_crypto_key_derivation(void)
307
307
TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (derived_key_handle));
308
308
}
309
309
310
+ void test_crypto_key_handles (void )
311
+ {
312
+ psa_key_id_t id = 999 ;
313
+ psa_key_type_t type = PSA_KEY_TYPE_AES;
314
+ size_t bits = 256 ;
315
+ psa_key_usage_t usage = PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT;
316
+ psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING;
317
+ psa_key_handle_t key_handle;
318
+ psa_key_policy_t policy;
319
+
320
+ key_handle = 0 ;
321
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
322
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
323
+ policy = psa_key_policy_init ();
324
+ psa_key_policy_set_usage (&policy, usage, alg);
325
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
326
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
327
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
328
+
329
+ key_handle = 0 ;
330
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
331
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
332
+ policy = psa_key_policy_init ();
333
+ psa_key_policy_set_usage (&policy, usage, alg);
334
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
335
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
336
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
337
+
338
+ key_handle = 0 ;
339
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_create_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
340
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
341
+ policy = psa_key_policy_init ();
342
+ psa_key_policy_set_usage (&policy, usage, alg);
343
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
344
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
345
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
346
+
347
+ key_handle = 0 ;
348
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
349
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
350
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
351
+
352
+ key_handle = 0 ;
353
+ TEST_ASSERT_EQUAL (PSA_ERROR_EMPTY_SLOT, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
354
+ }
310
355
311
356
utest::v1::status_t case_setup_handler (const Case *const source, const size_t index_of_case)
312
357
{
@@ -340,6 +385,7 @@ Case cases[] = {
340
385
Case (" mbed-crypto symmetric cipher encrypt/decrypt" , case_setup_handler, test_crypto_symmetric_cipher_encrypt_decrypt, case_teardown_handler),
341
386
Case (" mbed-crypto asymmetric sign/verify" , case_setup_handler, test_crypto_asymmetric_sign_verify, case_teardown_handler),
342
387
Case (" mbed-crypto key derivation" , case_setup_handler, test_crypto_key_derivation, case_teardown_handler),
388
+ Case (" mbed-crypto key handles" , case_setup_handler, test_crypto_key_handles, case_teardown_handler),
343
389
};
344
390
345
391
Specification specification (test_setup, cases);
0 commit comments