5 #include "sw/device/lib/crypto/drivers/entropy.h"
6 #include "sw/device/lib/crypto/impl/keyblob.h"
12 #include "sw/device/lib/testing/keymgr_testutils.h"
13 #include "sw/device/lib/testing/test_framework/check.h"
17 #define MODULE_ID MAKE_MODULE_ID('t', 's', 't')
21 kP256PublicKeyWords = 512 / 32,
23 kP256SignatureWords = 512 / 32,
25 kP256PrivateKeyBytes = 256 / 8,
29 static const char kMessage[] =
"test message";
32 .version = kOtcryptoLibVersion1,
33 .key_mode = kOtcryptoKeyModeEcdsaP256,
34 .key_length = kP256PrivateKeyBytes,
36 .security_level = kOtcryptoKeySecurityLevelLow,
39 static const uint32_t kPrivateKeySalt[7] = {0xdeadbeef, 0xdeadbeef, 0xdeadbeef,
40 0xdeadbeef, 0xdeadbeef, 0xdeadbeef,
43 static const uint32_t kPrivateKeyVersion = 0x0;
45 status_t sign_then_verify_test(
void) {
47 uint32_t keyblob[keyblob_num_words(kPrivateKeyConfig)];
49 .config = kPrivateKeyConfig,
50 .keyblob_length =
sizeof(keyblob),
59 uint32_t pk[kP256PublicKeyWords] = {0};
61 .key_mode = kOtcryptoKeyModeEcdsaP256,
62 .key_length =
sizeof(pk),
72 .len =
sizeof(kMessage) - 1,
73 .data = (
unsigned char *)&kMessage,
75 uint32_t message_digest_data[kSha256DigestWords];
77 .data = message_digest_data,
79 .mode = kOtcryptoHashModeSha256,
84 uint32_t sig[kP256SignatureWords] = {0};
89 &private_key, message_digest,
96 &public_key, message_digest,
98 &verification_result));
113 TRY(keymgr_testutils_try_startup(&keymgr, &kmac, &keymgr_state));
116 TRY(keymgr_testutils_advance_state(&keymgr, &kOwnerIntParams));
117 TRY(keymgr_testutils_advance_state(&keymgr, &kOwnerRootKeyParams));
119 TRY(keymgr_testutils_advance_state(&keymgr, &kOwnerRootKeyParams));
127 return entropy_complex_init();
130 OTTF_DEFINE_TEST_CONFIG();
138 return status_ok(result);