6 #include "sw/device/lib/crypto/drivers/entropy.h"
9 #include "sw/device/lib/testing/test_framework/check.h"
13 #define MODULE_ID MAKE_MODULE_ID('t', 's', 't')
17 .version = kOtcryptoLibVersion1,
18 .key_mode = kOtcryptoKeyModeAesKwp,
19 .key_length = 256 / 8,
21 .security_level = kOtcryptoKeySecurityLevelLow,
32 size_t wrapped_num_words;
36 uint32_t wrapped_key_data[wrapped_num_words];
38 .data = wrapped_key_data,
45 TRY_CHECK(key_to_wrap->keyblob_length %
sizeof(uint32_t) == 0);
46 size_t keyblob_words = key_to_wrap->keyblob_length /
sizeof(uint32_t);
47 uint32_t unwrapped_key_keyblob[keyblob_words];
49 .keyblob_length = keyblob_words *
sizeof(uint32_t),
50 .keyblob = unwrapped_key_keyblob,
54 .data = wrapped_key_data,
57 key_kek, &success, &unwrapped_key));
61 TRY_CHECK_ARRAYS_EQ(unwrapped_key.keyblob, key_to_wrap->keyblob,
63 TRY_CHECK(
memcmp(&unwrapped_key.config, &key_to_wrap->config,
65 TRY_CHECK(unwrapped_key.keyblob_length == key_to_wrap->keyblob_length);
66 TRY_CHECK(unwrapped_key.checksum == key_to_wrap->checksum);
74 static status_t wrap_unwrap_random_test(
void) {
76 .version = kOtcryptoLibVersion1,
77 .key_mode = kOtcryptoKeyModeKmac128,
78 .key_length = 128 / 8,
80 .security_level = kOtcryptoKeySecurityLevelLow,
84 uint32_t keyblob[(kKmacKeyConfig.key_length * 2) /
sizeof(uint32_t)];
86 .config = kKmacKeyConfig,
87 .keyblob_length =
sizeof(keyblob),
94 uint32_t kek_keyblob[(kWrappingKeyConfig.key_length * 2) /
sizeof(uint32_t)];
96 .config = kWrappingKeyConfig,
97 .keyblob_length =
sizeof(kek_keyblob),
98 .keyblob = kek_keyblob,
102 return run_wrap_unwrap(&kmac_key, &kek);
105 OTTF_DEFINE_TEST_CONFIG();
110 CHECK_STATUS_OK(entropy_complex_init());
113 return status_ok(result);