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