1a8e1175bSopenharmony_ci/* BEGIN_HEADER */ 2a8e1175bSopenharmony_ci#include "psa/crypto.h" 3a8e1175bSopenharmony_ci/* END_HEADER */ 4a8e1175bSopenharmony_ci 5a8e1175bSopenharmony_ci/* BEGIN_DEPENDENCIES 6a8e1175bSopenharmony_ci * depends_on:MBEDTLS_PSA_CRYPTO_CLIENT 7a8e1175bSopenharmony_ci * END_DEPENDENCIES 8a8e1175bSopenharmony_ci */ 9a8e1175bSopenharmony_ci 10a8e1175bSopenharmony_ci/* BEGIN_CASE */ 11a8e1175bSopenharmony_civoid attributes_set_get(int owner_id_arg, int id_arg, int lifetime_arg, 12a8e1175bSopenharmony_ci int usage_flags_arg, int alg_arg, 13a8e1175bSopenharmony_ci int type_arg, int bits_arg) 14a8e1175bSopenharmony_ci{ 15a8e1175bSopenharmony_ci psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; 16a8e1175bSopenharmony_ci mbedtls_svc_key_id_t id = mbedtls_svc_key_id_make(owner_id_arg, id_arg); 17a8e1175bSopenharmony_ci psa_key_lifetime_t lifetime = lifetime_arg; 18a8e1175bSopenharmony_ci psa_key_usage_t usage_flags = usage_flags_arg; 19a8e1175bSopenharmony_ci psa_algorithm_t alg = alg_arg; 20a8e1175bSopenharmony_ci psa_key_type_t type = type_arg; 21a8e1175bSopenharmony_ci size_t bits = bits_arg; 22a8e1175bSopenharmony_ci 23a8e1175bSopenharmony_ci TEST_EQUAL( 24a8e1175bSopenharmony_ci MBEDTLS_SVC_KEY_ID_GET_KEY_ID(psa_get_key_id(&attributes)), 0); 25a8e1175bSopenharmony_ci TEST_EQUAL( 26a8e1175bSopenharmony_ci MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(psa_get_key_id(&attributes)), 0); 27a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_lifetime(&attributes), 0); 28a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_usage_flags(&attributes), 0); 29a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_algorithm(&attributes), 0); 30a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_type(&attributes), 0); 31a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_bits(&attributes), 0); 32a8e1175bSopenharmony_ci 33a8e1175bSopenharmony_ci psa_set_key_id(&attributes, id); 34a8e1175bSopenharmony_ci psa_set_key_lifetime(&attributes, lifetime); 35a8e1175bSopenharmony_ci psa_set_key_usage_flags(&attributes, usage_flags); 36a8e1175bSopenharmony_ci psa_set_key_algorithm(&attributes, alg); 37a8e1175bSopenharmony_ci psa_set_key_type(&attributes, type); 38a8e1175bSopenharmony_ci psa_set_key_bits(&attributes, bits); 39a8e1175bSopenharmony_ci 40a8e1175bSopenharmony_ci TEST_ASSERT(mbedtls_svc_key_id_equal( 41a8e1175bSopenharmony_ci psa_get_key_id(&attributes), id)); 42a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_lifetime(&attributes), lifetime); 43a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_usage_flags(&attributes), usage_flags); 44a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_algorithm(&attributes), alg); 45a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_type(&attributes), type); 46a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_bits(&attributes), bits); 47a8e1175bSopenharmony_ci 48a8e1175bSopenharmony_ci psa_reset_key_attributes(&attributes); 49a8e1175bSopenharmony_ci 50a8e1175bSopenharmony_ci TEST_EQUAL( 51a8e1175bSopenharmony_ci MBEDTLS_SVC_KEY_ID_GET_KEY_ID(psa_get_key_id(&attributes)), 0); 52a8e1175bSopenharmony_ci TEST_EQUAL( 53a8e1175bSopenharmony_ci MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(psa_get_key_id(&attributes)), 0); 54a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_lifetime(&attributes), 0); 55a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_usage_flags(&attributes), 0); 56a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_algorithm(&attributes), 0); 57a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_type(&attributes), 0); 58a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_bits(&attributes), 0); 59a8e1175bSopenharmony_ci} 60a8e1175bSopenharmony_ci/* END_CASE */ 61a8e1175bSopenharmony_ci 62a8e1175bSopenharmony_ci/* BEGIN_CASE */ 63a8e1175bSopenharmony_civoid persistence_attributes(int id1_arg, int owner_id1_arg, int lifetime_arg, 64a8e1175bSopenharmony_ci int id2_arg, int owner_id2_arg, 65a8e1175bSopenharmony_ci int expected_id_arg, int expected_owner_id_arg, 66a8e1175bSopenharmony_ci int expected_lifetime_arg) 67a8e1175bSopenharmony_ci{ 68a8e1175bSopenharmony_ci psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; 69a8e1175bSopenharmony_ci mbedtls_svc_key_id_t id1 = 70a8e1175bSopenharmony_ci mbedtls_svc_key_id_make(owner_id1_arg, id1_arg); 71a8e1175bSopenharmony_ci psa_key_lifetime_t lifetime = lifetime_arg; 72a8e1175bSopenharmony_ci mbedtls_svc_key_id_t id2 = 73a8e1175bSopenharmony_ci mbedtls_svc_key_id_make(owner_id2_arg, id2_arg); 74a8e1175bSopenharmony_ci mbedtls_svc_key_id_t expected_id = 75a8e1175bSopenharmony_ci mbedtls_svc_key_id_make(expected_owner_id_arg, expected_id_arg); 76a8e1175bSopenharmony_ci psa_key_lifetime_t expected_lifetime = expected_lifetime_arg; 77a8e1175bSopenharmony_ci 78a8e1175bSopenharmony_ci if (id1_arg != -1) { 79a8e1175bSopenharmony_ci psa_set_key_id(&attributes, id1); 80a8e1175bSopenharmony_ci } 81a8e1175bSopenharmony_ci if (lifetime_arg != -1) { 82a8e1175bSopenharmony_ci psa_set_key_lifetime(&attributes, lifetime); 83a8e1175bSopenharmony_ci } 84a8e1175bSopenharmony_ci if (id2_arg != -1) { 85a8e1175bSopenharmony_ci psa_set_key_id(&attributes, id2); 86a8e1175bSopenharmony_ci } 87a8e1175bSopenharmony_ci 88a8e1175bSopenharmony_ci TEST_ASSERT(mbedtls_svc_key_id_equal( 89a8e1175bSopenharmony_ci psa_get_key_id(&attributes), expected_id)); 90a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_lifetime(&attributes), expected_lifetime); 91a8e1175bSopenharmony_ci} 92a8e1175bSopenharmony_ci/* END_CASE */ 93a8e1175bSopenharmony_ci 94a8e1175bSopenharmony_ci/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_SE_C */ 95a8e1175bSopenharmony_civoid slot_number_attribute() 96a8e1175bSopenharmony_ci{ 97a8e1175bSopenharmony_ci psa_key_slot_number_t slot_number = 0xdeadbeef; 98a8e1175bSopenharmony_ci psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; 99a8e1175bSopenharmony_ci 100a8e1175bSopenharmony_ci /* Initially, there is no slot number. */ 101a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_slot_number(&attributes, &slot_number), 102a8e1175bSopenharmony_ci PSA_ERROR_INVALID_ARGUMENT); 103a8e1175bSopenharmony_ci 104a8e1175bSopenharmony_ci /* Test setting a slot number. */ 105a8e1175bSopenharmony_ci psa_set_key_slot_number(&attributes, 0); 106a8e1175bSopenharmony_ci PSA_ASSERT(psa_get_key_slot_number(&attributes, &slot_number)); 107a8e1175bSopenharmony_ci TEST_EQUAL(slot_number, 0); 108a8e1175bSopenharmony_ci 109a8e1175bSopenharmony_ci /* Test changing the slot number. */ 110a8e1175bSopenharmony_ci psa_set_key_slot_number(&attributes, 42); 111a8e1175bSopenharmony_ci PSA_ASSERT(psa_get_key_slot_number(&attributes, &slot_number)); 112a8e1175bSopenharmony_ci TEST_EQUAL(slot_number, 42); 113a8e1175bSopenharmony_ci 114a8e1175bSopenharmony_ci /* Test clearing the slot number. */ 115a8e1175bSopenharmony_ci psa_clear_key_slot_number(&attributes); 116a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_slot_number(&attributes, &slot_number), 117a8e1175bSopenharmony_ci PSA_ERROR_INVALID_ARGUMENT); 118a8e1175bSopenharmony_ci 119a8e1175bSopenharmony_ci /* Clearing again should have no effect. */ 120a8e1175bSopenharmony_ci psa_clear_key_slot_number(&attributes); 121a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_slot_number(&attributes, &slot_number), 122a8e1175bSopenharmony_ci PSA_ERROR_INVALID_ARGUMENT); 123a8e1175bSopenharmony_ci 124a8e1175bSopenharmony_ci /* Test that reset clears the slot number. */ 125a8e1175bSopenharmony_ci psa_set_key_slot_number(&attributes, 42); 126a8e1175bSopenharmony_ci PSA_ASSERT(psa_get_key_slot_number(&attributes, &slot_number)); 127a8e1175bSopenharmony_ci TEST_EQUAL(slot_number, 42); 128a8e1175bSopenharmony_ci psa_reset_key_attributes(&attributes); 129a8e1175bSopenharmony_ci TEST_EQUAL(psa_get_key_slot_number(&attributes, &slot_number), 130a8e1175bSopenharmony_ci PSA_ERROR_INVALID_ARGUMENT); 131a8e1175bSopenharmony_ci} 132a8e1175bSopenharmony_ci/* END_CASE */ 133