Skip to content

Commit c3a8659

Browse files
itayzafrirOren Cohen
authored andcommitted
Add mbed-crypto key derivation test
1 parent 680d983 commit c3a8659

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

TESTS/mbed-crypto/sanity/main.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,37 @@ void test_crypto_asymmetric_sign_verify(void)
240240
mbedtls_psa_crypto_free();
241241
}
242242

243+
void test_crypto_key_derivation(void)
244+
{
245+
psa_key_slot_t slot = 1, derived_slot = 2;
246+
psa_algorithm_t alg = PSA_ALG_HKDF(PSA_ALG_SHA_256), derived_alg = PSA_ALG_CTR;
247+
psa_key_type_t derived_key_type = PSA_KEY_TYPE_AES, got_type;
248+
psa_key_policy_t policy;
249+
psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
250+
size_t key_bits = 512, derived_key_bits = 256, got_bits;
251+
252+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_crypto_init());
253+
254+
psa_key_policy_init(&policy);
255+
psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_DERIVE, alg);
256+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(slot, &policy));
257+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(slot, PSA_KEY_TYPE_DERIVE, key_bits, NULL, 0));
258+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_key_derivation(&generator, slot, alg, NULL, 0, NULL, 0,
259+
PSA_BITS_TO_BYTES(derived_key_bits)));
260+
psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_ENCRYPT, derived_alg);
261+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(derived_slot, &policy));
262+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generator_import_key(derived_slot, derived_key_type,
263+
derived_key_bits, &generator));
264+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_get_key_information(derived_slot, &got_type, &got_bits));
265+
TEST_ASSERT_EQUAL(derived_key_type, got_type);
266+
TEST_ASSERT_EQUAL(derived_key_bits, got_bits);
267+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generator_abort(&generator));
268+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot));
269+
TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(derived_slot));
270+
271+
mbedtls_psa_crypto_free();
272+
}
273+
243274
utest::v1::status_t case_failure_handler(const Case *const source, const failure_t reason)
244275
{
245276
mbedtls_psa_crypto_free();
@@ -259,6 +290,7 @@ Case cases[] = {
259290
Case("mbed-crypto hash verify", test_crypto_hash_verify, case_failure_handler),
260291
Case("mbed-crypto symmetric cipher encrypt/decrypt", test_crypto_symmetric_cipher_encrypt_decrypt, case_failure_handler),
261292
Case("mbed-crypto asymmetric sign/verify", test_crypto_asymmetric_sign_verify, case_failure_handler),
293+
Case("mbed-crypto key derivation", test_crypto_key_derivation, case_failure_handler),
262294
};
263295

264296
Specification specification(test_setup, cases);

0 commit comments

Comments
 (0)