@@ -293,6 +293,51 @@ void test_crypto_key_derivation(void)
293
293
TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (derived_slot));
294
294
}
295
295
296
+ void test_crypto_key_handles (void )
297
+ {
298
+ psa_key_id_t id = 999 ;
299
+ psa_key_type_t type = PSA_KEY_TYPE_AES;
300
+ size_t bits = 256 ;
301
+ psa_key_usage_t usage = PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT;
302
+ psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING;
303
+ psa_key_handle_t key_handle;
304
+ psa_key_policy_t policy;
305
+
306
+ key_handle = 0 ;
307
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
308
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
309
+ policy = psa_key_policy_init ();
310
+ psa_key_policy_set_usage (&policy, usage, alg);
311
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
312
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
313
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
314
+
315
+ key_handle = 0 ;
316
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
317
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
318
+ policy = psa_key_policy_init ();
319
+ psa_key_policy_set_usage (&policy, usage, alg);
320
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
321
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
322
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
323
+
324
+ key_handle = 0 ;
325
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_create_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
326
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
327
+ policy = psa_key_policy_init ();
328
+ psa_key_policy_set_usage (&policy, usage, alg);
329
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
330
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
331
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
332
+
333
+ key_handle = 0 ;
334
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
335
+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
336
+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
337
+
338
+ key_handle = 0 ;
339
+ TEST_ASSERT_EQUAL (PSA_ERROR_EMPTY_SLOT, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
340
+ }
296
341
297
342
utest::v1::status_t case_setup_handler (const Case *const source, const size_t index_of_case)
298
343
{
@@ -326,6 +371,7 @@ Case cases[] = {
326
371
Case (" mbed-crypto symmetric cipher encrypt/decrypt" , case_setup_handler, test_crypto_symmetric_cipher_encrypt_decrypt, case_teardown_handler),
327
372
Case (" mbed-crypto asymmetric sign/verify" , case_setup_handler, test_crypto_asymmetric_sign_verify, case_teardown_handler),
328
373
Case (" mbed-crypto key derivation" , case_setup_handler, test_crypto_key_derivation, case_teardown_handler),
374
+ Case (" mbed-crypto key handles" , case_setup_handler, test_crypto_key_handles, case_teardown_handler),
329
375
};
330
376
331
377
Specification specification (test_setup, cases);
0 commit comments