5 #include "sw/device/lib/crypto/drivers/keymgr.h"
8 #include "sw/device/lib/crypto/drivers/entropy.h"
9 #include "sw/device/lib/crypto/impl/status.h"
11 #include "sw/device/lib/testing/keymgr_testutils.h"
12 #include "sw/device/lib/testing/test_framework/check.h"
16 #define MODULE_ID MAKE_MODULE_ID('t', 's', 't')
43 TRY(keymgr_testutils_startup(&keymgr, &kmac));
44 TRY(keymgr_testutils_advance_state(&keymgr, &kOwnerIntParams));
45 TRY(keymgr_testutils_advance_state(&keymgr, &kOwnerRootKeyParams));
51 return entropy_complex_init();
62 return keymgr_generate_key_sw(kTestDiversification, &key);
72 return keymgr_generate_key_aes(kTestDiversification);
82 return keymgr_generate_key_kmac(kTestDiversification);
92 return keymgr_generate_key_otbn(kTestDiversification);
106 for (
size_t i = 0; i < kKeymgrOutputShareNumWords; i++) {
107 uint32_t word1 = key1.share0[i] ^ key1.share1[i];
108 uint32_t word2 = key2.share0[i] ^ key2.share1[i];
109 if (word1 != word2) {
122 status_t sw_keys_change_salt_test(
void) {
130 TRY(keymgr_generate_key_sw(div, &key1));
135 TRY(keymgr_generate_key_sw(div, &key2));
138 TRY_CHECK(!output_equiv(key1, key2));
143 TRY(keymgr_generate_key_sw(div, &key3));
146 TRY_CHECK(output_equiv(key1, key3));
149 TRY_CHECK_ARRAYS_NE(key1.share0, key2.share0,
sizeof(key1.share0));
160 status_t sw_keys_change_version_test(
void) {
168 TRY(keymgr_generate_key_sw(div, &key1));
173 TRY(keymgr_generate_key_sw(div, &key2));
176 TRY_CHECK(!output_equiv(key1, key2));
181 TRY(keymgr_generate_key_sw(div, &key3));
184 TRY_CHECK(output_equiv(key1, key3));
187 TRY_CHECK_ARRAYS_NE(key1.share0, key2.share0,
sizeof(key1.share0));
192 OTTF_DEFINE_TEST_CONFIG();
205 return status_ok(result);