feat(core/prodtest): Add trusted anchors for device certificates.
What changed, and why it matters
This commit updates the Trezor production-test firmware to recognize and trust a new set of manufacturer root public keys when validating device certificates. It also refactors where those keys are stored so both certificate checking and the secure provisioning channel use the same key list. The change is a feature addition, not a fix for a known vulnerability, and it only affects the factory/prodtest firmware, not the end-user wallet firmware.
Review the new root keys against the manufacturer's key-management policy, confirm the non-production bypass is intentional and documented, and verify that the SHA-1-based AuthorityKeyIdentifier matching is acceptable for this use case. No immediate user action is required because this code is not part of the released wallet firmware.
Security signals we found
New trusted root public keys added for device certificate validation
Certificate chain verification now enforces a known root-of-trust in production builds
Non-production builds intentionally accept unknown roots with only a warning
Secure-channel HSM keys deduplicated into the same header as certificate root keys
Use of SHA-1 digest to match AuthorityKeyIdentifier in root-key lookup
Evidence from the diff
The patch adds hsm_keys.h, a centralized header containing device-authenticity root public keys (P-256, Ed25519, ML-DSA-44) and X25519 HSM keys for various Trezor models. common.c now builds root-key arrays from these macros and uses get_root_public_key() to look up a root key by SHA-1 digest of its Authority Key Identifier. The certificate-chain validator now verifies the final certificate’s signature against the matching trusted root key for ECDSA, EdDSA, and ML-DSA-44. In non-production builds, unknown roots are allowed with a warning; in production builds they cause failure. secure_channel.c is updated to use the same hsm_keys.h macros for its X25519 HSM public keys instead of hard-coded literals.
Changed components
core/embed/projects/prodtest/cmd/common.ccore/embed/projects/prodtest/cmd/hsm_keys.hcore/embed/projects/prodtest/cmd/secure_channel.cTrezor production-test (prodtest) firmwareInspect captured patch +611 / −13
diff --git a/core/embed/projects/prodtest/.changelog.d/5697.added b/core/embed/projects/prodtest/.changelog.d/5697.added
new file mode 100644
index 000000000..f99e8df3f
--- /dev/null
+++ b/core/embed/projects/prodtest/.changelog.d/5697.added
@@ -0,0 +1 @@
+Add trusted anchors for device certificates.
diff --git a/core/embed/projects/prodtest/cmd/common.c b/core/embed/projects/prodtest/cmd/common.c
index b7cbc3d5d..3a0a0c1bb 100644
--- a/core/embed/projects/prodtest/cmd/common.c
+++ b/core/embed/projects/prodtest/cmd/common.c
@@ -27,6 +27,7 @@
#include "der.h"
#include "ecdsa.h"
#include "ed25519-donna/ed25519.h"
+#include "hsm_keys.h"
#include "memzero.h"
#include "nist256p1.h"
#include "sha2.h"
@@ -34,6 +35,61 @@
#include <../vendor/mldsa-native/mldsa/sign.h>
+// HSM root certification authority public keys.
+const uint8_t ROOT_KEYS_P256[][ECDSA_PUBLIC_KEY_SIZE] = {
+#if PRODUCTION
+#ifdef DEV_AUTH_ROOT_PROD_P256
+ DEV_AUTH_ROOT_PROD_P256,
+#endif
+#ifdef DEV_AUTH_ROOT_PROD_BACKUP_P256
+ DEV_AUTH_ROOT_PROD_BACKUP_P256,
+#endif
+#else
+#ifdef DEV_AUTH_ROOT_DEBUG_P256
+ DEV_AUTH_ROOT_DEBUG_P256,
+#endif
+#ifdef DEV_AUTH_ROOT_STAGING_P256
+ DEV_AUTH_ROOT_STAGING_P256,
+#endif
+#endif
+};
+
+const ed25519_public_key ROOT_KEYS_ED25519[] = {
+#if PRODUCTION
+#ifdef DEV_AUTH_ROOT_PROD_ED25519
+ DEV_AUTH_ROOT_PROD_ED25519,
+#endif
+#ifdef DEV_AUTH_ROOT_PROD_BACKUP_ED25519
+ DEV_AUTH_ROOT_PROD_BACKUP_ED25519,
+#endif
+#else
+#ifdef DEV_AUTH_ROOT_DEBUG_ED25519
+ DEV_AUTH_ROOT_DEBUG_ED25519,
+#endif
+#ifdef DEV_AUTH_ROOT_STAGING_ED25519
+ DEV_AUTH_ROOT_STAGING_ED25519,
+#endif
+#endif
+};
+
+const uint8_t ROOT_KEYS_MLDSA44[][CRYPTO_PUBLICKEYBYTES] = {
+#if PRODUCTION
+#ifdef DEV_AUTH_ROOT_PROD_MLDSA44
+ DEV_AUTH_ROOT_PROD_MLDSA44,
+#endif
+#ifdef DEV_AUTH_ROOT_PROD_BACKUP_MLDSA44
+ DEV_AUTH_ROOT_PROD_BACKUP_MLDSA44,
+#endif
+#else
+#ifdef DEV_AUTH_ROOT_DEBUG_MLDSA44
+ DEV_AUTH_ROOT_DEBUG_MLDSA44,
+#endif
+#ifdef DEV_AUTH_ROOT_STAGING_MLDSA44
+ DEV_AUTH_ROOT_STAGING_MLDSA44,
+#endif
+#endif
+};
+
// Identifier of context-specific constructed tag 3, which is used for
// extensions in X.509.
#define DER_X509_EXTENSIONS 0xa3
@@ -309,6 +365,47 @@ static bool verify_signature(alg_id_t alg_id, const uint8_t* pub_key,
return false;
}
+static bool get_root_public_key(
+ alg_id_t alg_id, const uint8_t authority_key_digest[SHA1_DIGEST_LENGTH],
+ const uint8_t** pub_key, size_t* pub_key_size) {
+ const uint8_t* root_keys = NULL;
+ int root_key_count = 0;
+ size_t root_key_size = 0;
+ switch (alg_id) {
+ case ALG_ID_ECDSA_P256_WITH_SHA256:
+ root_keys = (const uint8_t*)ROOT_KEYS_P256;
+ root_key_count = sizeof(ROOT_KEYS_P256) / sizeof(ROOT_KEYS_P256[0]);
+ root_key_size = sizeof(ROOT_KEYS_P256[0]);
+ break;
+ case ALG_ID_EDDSA_25519:
+ root_keys = (const uint8_t*)ROOT_KEYS_ED25519;
+ root_key_count = sizeof(ROOT_KEYS_ED25519) / sizeof(ROOT_KEYS_ED25519[0]);
+ root_key_size = sizeof(ROOT_KEYS_ED25519[0]);
+ break;
+ case ALG_ID_MLDSA44:
+ root_keys = (const uint8_t*)ROOT_KEYS_MLDSA44;
+ root_key_count = sizeof(ROOT_KEYS_MLDSA44) / sizeof(ROOT_KEYS_MLDSA44[0]);
+ root_key_size = sizeof(ROOT_KEYS_MLDSA44[0]);
+ break;
+ default:
+ return false;
+ }
+
+ for (int i = 0; i < root_key_count; ++i) {
+ uint8_t pub_key_digest[SHA1_DIGEST_LENGTH] = {0};
+ const uint8_t* root_key = root_keys + i * root_key_size;
+ sha1_Raw(root_key, root_key_size, pub_key_digest);
+ if (memcmp(authority_key_digest, pub_key_digest, sizeof(pub_key_digest)) ==
+ 0) {
+ *pub_key = root_key;
+ *pub_key_size = root_key_size;
+ return true;
+ }
+ }
+
+ return false;
+}
+
bool check_cert_chain(cli_t* cli, const uint8_t* chain, size_t chain_size,
const uint8_t* sig, size_t sig_size,
const uint8_t challenge[CHALLENGE_SIZE]) {
@@ -355,7 +452,7 @@ bool check_cert_chain(cli_t* cli, const uint8_t* chain, size_t chain_size,
return false;
}
- // Skip the version, serialNumber, signature, issuer and validity
+ // Skip the version, serialNumber, signature algorithm, issuer and validity
DER_ITEM der_item = {0};
for (int i = 0; i < 5; ++i) {
if (!der_read_item(&tbs_cert.buf, &der_item)) {
@@ -501,7 +598,7 @@ bool check_cert_chain(cli_t* cli, const uint8_t* chain, size_t chain_size,
if (alg_id == ALG_ID_ECDSA_P256_WITH_SHA256) {
// Verify that the signature of the last certificate in the chain matches
// its own AuthorityKeyIdentifier to verify the integrity of the certificate
- // data. This is done only for ECDSA, since EdDSA does not allow to recover
+ // data. This is done only for ECDSA, since EdDSA does not allow recovery of
// the public key from the signature.
uint8_t digest[SHA256_DIGEST_LENGTH] = {0};
sha256_Raw(message, message_size, digest);
@@ -513,6 +610,7 @@ bool check_cert_chain(cli_t* cli, const uint8_t* chain, size_t chain_size,
return false;
}
+ bool matches = false;
for (int recid = 0; recid < 4; ++recid) {
uint8_t recovered_pub_key[65] = {0};
if (ecdsa_recover_pub_from_sig(&nist256p1, recovered_pub_key, decoded_sig,
@@ -521,12 +619,39 @@ bool check_cert_chain(cli_t* cli, const uint8_t* chain, size_t chain_size,
sha1_Raw(recovered_pub_key, sizeof(recovered_pub_key), pub_key_digest);
if (memcmp(authority_key_digest, pub_key_digest,
sizeof(pub_key_digest)) == 0) {
- return true;
+ matches = true;
+ break;
}
}
}
+ if (!matches) {
+ cli_error(cli, CLI_ERROR,
+ "check_device_cert_chain, ecdsa_verify_digest root.");
+ return false;
+ }
+ }
+
+ if (!get_root_public_key(alg_id, authority_key_digest, &pub_key,
+ &pub_key_size)) {
+ const char msg[] =
+ "check_device_cert_chain, failed to get root public key.";
+#if PRODUCTION
+ cli_error(cli, CLI_ERROR, msg);
+ return false;
+#else
+ // In non-production mode we succeed and write the certificate even if the
+ // root key is unknown, but we at least emit a warning.
+ cli_trace(cli, msg);
+ return true;
+#endif
+ }
+
+ // Verify the last signature.
+ if (!verify_signature(alg_id, pub_key, pub_key_size, sig, sig_size, message,
+ message_size)) {
cli_error(cli, CLI_ERROR,
- "check_device_cert_chain, ecdsa_verify_digest root.");
+ "check_device_cert_chain, verify_signature, cert %d.",
+ cert_count);
return false;
}
diff --git a/core/embed/projects/prodtest/cmd/hsm_keys.h b/core/embed/projects/prodtest/cmd/hsm_keys.h
new file mode 100644
index 000000000..f31ffd401
--- /dev/null
+++ b/core/embed/projects/prodtest/cmd/hsm_keys.h
@@ -0,0 +1,472 @@
+#pragma once
+
+// List of device authenticity root public keys and provisioning HSM public
+// keys.
+
+// clang-format off
+
+// X25519 secure channel debug key for provisioning all models.
+#define HSM_PUBLIC_DEBUG_X25519 \
+ {0xcf, 0xce, 0x80, 0xf7, 0xc8, 0x7e, 0xa1, 0xe9, 0x3d, 0x0d, 0x80, 0x98, \
+ 0x3f, 0xec, 0xc9, 0x98, 0xa0, 0xdd, 0xb6, 0xaa, 0x7a, 0x36, 0x36, 0x6b, \
+ 0x6c, 0x7d, 0xd4, 0x09, 0x32, 0x5f, 0x67, 0x4b}
+
+#ifdef TREZOR_MODEL_T2B1
+// P-256 ECDSA device authenticity root production key for T2B1.
+#define DEV_AUTH_ROOT_PROD_P256 \
+ {0x04, 0xca, 0x97, 0x48, 0x0a, 0xc0, 0xd7, 0xb1, 0xe6, 0xef, 0xaf, 0xe5, \
+ 0x18, 0xcd, 0x43, 0x3c, 0xec, 0x2b, 0xf8, 0xab, 0x98, 0x22, 0xd7, 0x6e, \
+ 0xaf, 0xd3, 0x43, 0x63, 0xb5, 0x5d, 0x63, 0xe6, 0x03, 0x80, 0xbf, 0xf2, \
+ 0x0a, 0xcc, 0x75, 0xcd, 0xe0, 0x3c, 0xff, 0xcb, 0x50, 0xab, 0x6f, 0x8c, \
+ 0xe7, 0x0c, 0x87, 0x8e, 0x37, 0xeb, 0xc5, 0x8f, 0xf7, 0xcc, 0xa0, 0xa8, \
+ 0x3b, 0x16, 0xb1, 0x5f, 0xa5}
+#endif // TREZOR_MODEL_T2B1
+
+#ifdef TREZOR_MODEL_T3B1
+// P-256 ECDSA device authenticity root production key for T3B1.
+#define DEV_AUTH_ROOT_PROD_P256 \
+ {0x04, 0x5b, 0x5c, 0x3f, 0xdd, 0x01, 0xf3, 0x60, 0x20, 0x92, 0x83, 0x42, \
+ 0x09, 0xb8, 0x6d, 0xf0, 0xca, 0x86, 0xa9, 0xfa, 0xf2, 0x5c, 0xac, 0x35, \
+ 0xc7, 0x3b, 0xf6, 0x23, 0x7d, 0x66, 0xeb, 0x21, 0xea, 0xfc, 0xec, 0x37, \
+ 0x06, 0xf1, 0xcc, 0xd5, 0xeb, 0x4c, 0xc7, 0xf2, 0xfa, 0x17, 0x51, 0x21, \
+ 0x3e, 0xcc, 0xb1, 0xc7, 0x83, 0x89, 0xaf, 0xba, 0x89, 0xa5, 0x78, 0x8f, \
+ 0xf3, 0x1e, 0xe4, 0x6a, 0x5d}
+#endif // TREZOR_MODEL_T3B1
+
+#if defined TREZOR_MODEL_T2B1 || defined TREZOR_MODEL_T3B1
+// P-256 ECDSA device authenticity root debug key for T2B1 and T3B1.
+#define DEV_AUTH_ROOT_DEBUG_P256 \
+ {0x04, 0x7f, 0x77, 0x36, 0x8d, 0xea, 0x2d, 0x4d, 0x61, 0xe9, 0x89, 0xf4, \
+ 0x74, 0xa5, 0x67, 0x23, 0xc3, 0x21, 0x2d, 0xac, 0xf8, 0xa8, 0x08, 0xd8, \
+ 0x79, 0x55, 0x95, 0xef, 0x38, 0x44, 0x14, 0x27, 0xc4, 0x38, 0x9b, 0xc4, \
+ 0x54, 0xf0, 0x20, 0x89, 0xd7, 0xf0, 0x8b, 0x87, 0x30, 0x05, 0xe4, 0xc2, \
+ 0x8d, 0x43, 0x24, 0x68, 0x99, 0x78, 0x71, 0xc0, 0xbf, 0x28, 0x6f, 0xd3, \
+ 0x86, 0x1e, 0x21, 0xe9, 0x6a}
+#endif // TREZOR_MODEL_T2B1 || TREZOR_MODEL_T3B1
+
+#ifdef TREZOR_MODEL_T3T1
+// P-256 ECDSA device authenticity root production key for T3T1.
+#define DEV_AUTH_ROOT_PROD_P256 \
+ {0x04, 0x18, 0x54, 0xb2, 0x7f, 0xb1, 0xd9, 0xf6, 0x5a, 0xbb, 0x66, 0x82, \
+ 0x8e, 0x78, 0xc9, 0xdc, 0x0c, 0xa3, 0x01, 0xe6, 0x60, 0x81, 0xab, 0x0c, \
+ 0x6a, 0x4d, 0x10, 0x4f, 0x9d, 0xf1, 0xcd, 0x0a, 0xd5, 0xa7, 0xc7, 0x5f, \
+ 0x77, 0xa8, 0xc0, 0x92, 0xf5, 0x5c, 0xf8, 0x25, 0xd2, 0xab, 0xaf, 0x73, \
+ 0x4f, 0x93, 0x4c, 0x93, 0x94, 0xd5, 0xe7, 0x5f, 0x75, 0xa5, 0xa0, 0x6a, \
+ 0x5e, 0xe9, 0xbe, 0x93, 0xae}
+
+// P-256 ECDSA device authenticity root debug key for T3T1.
+#define DEV_AUTH_ROOT_DEBUG_P256 \
+ {0x04, 0xe4, 0x8b, 0x69, 0xcd, 0x79, 0x62, 0x06, 0x8d, 0x3c, 0xca, 0x3b, \
+ 0xcc, 0x6b, 0x17, 0x47, 0xef, 0x49, 0x6c, 0x1e, 0x28, 0xb5, 0x52, 0x9e, \
+ 0x34, 0xad, 0x72, 0x95, 0x21, 0x5e, 0xa1, 0x61, 0xdb, 0xe8, 0xfb, 0x08, \
+ 0xae, 0x04, 0x79, 0x56, 0x8f, 0x9d, 0x2c, 0xb0, 0x76, 0x30, 0xcb, 0x3e, \
+ 0x52, 0xf4, 0xaf, 0x06, 0x92, 0x10, 0x2d, 0xa5, 0x87, 0x35, 0x59, 0xe4, \
+ 0x5e, 0x9f, 0xa7, 0x29, 0x59}
+#endif // TREZOR_MODEL_T3T1
+
+#ifdef TREZOR_MODEL_T3W1
+// X25519 secure channel production key for T3W1 provisioning.
+#define HSM_PUBLIC_PROD_X25519 \
+ {0xba, 0x79, 0x2d, 0x15, 0xc6, 0x87, 0xb4, 0xa5, 0x31, 0xbe, 0x20, 0x1e, \
+ 0x88, 0x73, 0x86, 0xaa, 0x7b, 0x9f, 0x24, 0x09, 0x2d, 0xb7, 0x7a, 0xc9, \
+ 0x5b, 0x84, 0xee, 0xb3, 0x36, 0x66, 0x47, 0x5c}
+
+// X25519 secure channel backup production key for T3W1 provisioning.
+#define HSM_PUBLIC_PROD_BACKUP_X25519 \
+ {0x07, 0x7a, 0xe8, 0xf9, 0xf8, 0x83, 0x9a, 0x8f, 0x07, 0x73, 0xc4, 0x98, \
+ 0x89, 0x40, 0x21, 0x86, 0xf9, 0xf9, 0xa8, 0xf4, 0xb2, 0xe7, 0xac, 0x0e, \
+ 0xe5, 0x83, 0xa2, 0xf7, 0xe6, 0x63, 0x82, 0x54}
+
+// P-256 ECDSA device authenticity root production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_P256 \
+ {0x04, 0x0d, 0xde, 0x0d, 0x3e, 0x0d, 0x4d, 0xa5, 0x93, 0xfa, 0xc6, 0xfd, \
+ 0x02, 0xa4, 0x61, 0xd0, 0xe7, 0xee, 0xf2, 0x38, 0xac, 0xa5, 0x5c, 0x7c, \
+ 0x50, 0xb4, 0xe9, 0xec, 0x37, 0xf3, 0x87, 0x33, 0x03, 0xb6, 0x42, 0x9e, \
+ 0xf1, 0xc9, 0xb7, 0x8b, 0x44, 0x11, 0xa7, 0xdc, 0xbb, 0xc5, 0xdd, 0xe5, \
+ 0x22, 0x59, 0x79, 0xc1, 0xc2, 0xda, 0x3b, 0x07, 0x3e, 0x82, 0xb1, 0xed, \
+ 0x3f, 0x5f, 0x98, 0x25, 0xbb}
+
+// P-256 ECDSA device authenticity root backup production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_BACKUP_P256 \
+ {0x04, 0xc6, 0xa6, 0x73, 0xaf, 0x4e, 0xc4, 0x4b, 0x10, 0x44, 0x1b, 0x1d, \
+ 0x78, 0x67, 0x6e, 0x15, 0x17, 0x3a, 0xd0, 0xe3, 0x6d, 0xf9, 0xf7, 0xf2, \
+ 0xfa, 0x1c, 0xd8, 0x19, 0x95, 0x5f, 0x20, 0xfe, 0x32, 0x91, 0x7b, 0x60, \
+ 0xda, 0x5f, 0xed, 0x3b, 0x3a, 0xa5, 0x4a, 0x9a, 0xb8, 0xb3, 0xed, 0x27, \
+ 0xd1, 0x98, 0xb3, 0x76, 0x8c, 0xad, 0x26, 0xee, 0xf5, 0x93, 0x5c, 0xd8, \
+ 0x7a, 0xf0, 0xaf, 0x06, 0x5e}
+
+// P-256 ECDSA device authenticity root debug key for T3W1.
+#define DEV_AUTH_ROOT_DEBUG_P256 \
+ {0x04, 0x52, 0x11, 0x92, 0xe1, 0x73, 0xa9, 0xda, 0x4e, 0x30, 0x23, 0xf7, \
+ 0x47, 0xd8, 0x36, 0x56, 0x37, 0x25, 0x37, 0x26, 0x81, 0xeb, 0xa3, 0x07, \
+ 0x9c, 0x56, 0xff, 0x11, 0xb2, 0xfc, 0x13, 0x7a, 0xb1, 0x89, 0xeb, 0x41, \
+ 0x55, 0xf3, 0x71, 0x12, 0x76, 0x51, 0xb5, 0x59, 0x4f, 0x8c, 0x33, 0x2f, \
+ 0xc1, 0xe9, 0xc0, 0xf3, 0xb8, 0x0d, 0x42, 0x12, 0x82, 0x26, 0x68, 0xb6, \
+ 0x31, 0x89, 0x70, 0x65, 0x78}
+
+// P-256 ECDSA device authenticity root staging key for T3W1.
+#define DEV_AUTH_ROOT_STAGING_P256 \
+ {0x04, 0x65, 0xe8, 0x8f, 0x9b, 0x2c, 0xea, 0x67, 0xe8, 0x36, 0x4f, 0x0c, \
+ 0xfc, 0xfa, 0xcd, 0x50, 0x0a, 0xf2, 0x4e, 0x90, 0x40, 0xb3, 0x57, 0xbe, \
+ 0xee, 0x62, 0x9c, 0xcc, 0x4f, 0xce, 0x17, 0x04, 0xd1, 0xa7, 0xef, 0x72, \
+ 0x84, 0xf3, 0x87, 0x70, 0x8f, 0x92, 0xef, 0x14, 0x60, 0x0e, 0x2c, 0xaa, \
+ 0xd6, 0x89, 0x40, 0x16, 0xfe, 0xe8, 0x19, 0xd6, 0x23, 0xb9, 0x5d, 0x66, \
+ 0x21, 0x0c, 0x3e, 0x75, 0x19}
+
+// Ed25519 device authenticity root production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_ED25519 \
+ {0x59, 0x23, 0x7a, 0xcd, 0x17, 0x13, 0x40, 0x61, 0xd6, 0x55, 0xb3, 0xf8, \
+ 0xd6, 0x24, 0x57, 0x3c, 0xa0, 0x6c, 0xe8, 0xd8, 0x62, 0xf3, 0x8b, 0xa4, \
+ 0xe0, 0x51, 0x40, 0xce, 0x1d, 0x3d, 0x60, 0x9d}
+
+// Ed25519 device authenticity root backup production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_BACKUP_ED25519 \
+ {0x56, 0x12, 0x60, 0x65, 0x84, 0xee, 0x7e, 0x0b, 0xc3, 0x13, 0xb1, 0x3f, \
+ 0x7a, 0xc9, 0x41, 0x56, 0xbb, 0x4c, 0xb7, 0x5b, 0xd7, 0x75, 0x85, 0xdd, \
+ 0xbe, 0x57, 0x93, 0x01, 0x30, 0x6e, 0x85, 0xf1}
+
+// Ed25519 device authenticity root staging key for T3W1.
+#define DEV_AUTH_ROOT_STAGING_ED25519 \
+ {0xcd, 0x31, 0x8d, 0xc8, 0x40, 0x5a, 0xe4, 0xf4, 0x14, 0x4e, 0x32, 0x84, \
+ 0xdc, 0xb7, 0xb0, 0xcb, 0x0f, 0x0c, 0x21, 0x95, 0xc2, 0xca, 0x14, 0xa0, \
+ 0xf6, 0xfc, 0xcd, 0x91, 0x04, 0xe3, 0x2a, 0x4b}
+
+// ML-DSA-44 device authenticity root production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_MLDSA44 \
+ {0xea, 0x67, 0xd6, 0x00, 0x0e, 0x79, 0xd1, 0x6b, 0xc9, 0x11, 0x9c, 0xea, \
+ 0x88, 0xb3, 0x41, 0x53, 0x69, 0xd6, 0x12, 0xf0, 0x2a, 0x6b, 0xca, 0x6e, \
+ 0x18, 0xe0, 0xdb, 0xe5, 0xe2, 0xd3, 0x7d, 0xa7, 0x16, 0xb9, 0x93, 0xa0, \
+ 0x52, 0x58, 0xa6, 0x42, 0xc6, 0x56, 0xa4, 0xe1, 0xc8, 0x0f, 0x2d, 0xb1, \
+ 0xf2, 0x81, 0x8e, 0x5e, 0xbc, 0xbe, 0x57, 0x15, 0x44, 0x83, 0x89, 0x07, \
+ 0x95, 0x26, 0x89, 0x5f, 0x8e, 0x62, 0x00, 0x01, 0xb1, 0xc1, 0xdc, 0x85, \
+ 0x7a, 0xa6, 0x16, 0x5e, 0xc1, 0xd0, 0xb7, 0x31, 0x12, 0x7c, 0x42, 0x4c, \
+ 0xbf, 0x0d, 0xec, 0x1a, 0xe3, 0x3b, 0xbc, 0xe5, 0x00, 0xb9, 0xe7, 0x97, \
+ 0x4d, 0x2a, 0x83, 0x62, 0x6f, 0xe0, 0xbe, 0x91, 0x55, 0x5d, 0x79, 0xe1, \
+ 0xf9, 0x1f, 0xbc, 0xb5, 0xdf, 0x82, 0x17, 0x38, 0x38, 0x5c, 0xba, 0x29, \
+ 0xdc, 0x1a, 0x71, 0xc3, 0xef, 0x2d, 0x1d, 0x3b, 0x31, 0x65, 0xff, 0x66, \
+ 0xb4, 0x63, 0x8b, 0x71, 0x21, 0xdb, 0x9e, 0xcd, 0xfe, 0xb3, 0x9d, 0x20, \
+ 0x16, 0x37, 0x32, 0xd1, 0x68, 0x5f, 0x76, 0x04, 0x95, 0x6d, 0xe9, 0xf5, \
+ 0x49, 0xc5, 0xa7, 0xfc, 0xbf, 0x2a, 0x27, 0xb9, 0x13, 0xa9, 0x41, 0x07, \
+ 0x90, 0x4c, 0xdb, 0xfe, 0x48, 0x6d, 0xf4, 0xa6, 0x2d, 0xc2, 0x7f, 0x0f, \
+ 0x7b, 0xa1, 0x4c, 0x11, 0x03, 0xf9, 0xde, 0x86, 0x48, 0x0c, 0x12, 0xbc, \
+ 0xaf, 0x1b, 0xab, 0x70, 0x58, 0x42, 0x77, 0xa9, 0xfd, 0xac, 0x50, 0xd0, \
+ 0x3d, 0x50, 0xe9, 0xe7, 0xbb, 0x6d, 0xd3, 0xb8, 0xb6, 0x1c, 0xaf, 0xe0, \
+ 0x7c, 0x55, 0x13, 0xc4, 0xfb, 0xb3, 0x5d, 0x14, 0x76, 0x6f, 0xef, 0x05, \
+ 0x82, 0xca, 0x1d, 0x78, 0xeb, 0xc4, 0xfb, 0x24, 0x6e, 0xe3, 0xac, 0x23, \
+ 0x1e, 0xef, 0x77, 0x0e, 0x74, 0xad, 0x42, 0x07, 0xdd, 0xdc, 0x8f, 0x36, \
+ 0x66, 0x70, 0x0c, 0x84, 0xaa, 0x14, 0x46, 0xcb, 0x5c, 0xee, 0xf0, 0xb6, \
+ 0xf1, 0x13, 0x04, 0x1a, 0x9e, 0xeb, 0x87, 0x08, 0x56, 0x4a, 0x4c, 0x43, \
+ 0xfd, 0xb4, 0x62, 0x03, 0xdd, 0x1a, 0x2b, 0x2c, 0x48, 0xa0, 0xe4, 0x85, \
+ 0xbc, 0x10, 0xa7, 0x2a, 0x8a, 0x8e, 0x5b, 0x00, 0x6d, 0x3d, 0x39, 0x89, \
+ 0x41, 0xb3, 0x33, 0x65, 0xb0, 0x4b, 0x54, 0xd1, 0x4d, 0x23, 0x09, 0x50, \
+ 0xc7, 0xdf, 0x04, 0x8a, 0xfd, 0x2c, 0x16, 0xff, 0x15, 0x15, 0x38, 0x7a, \
+ 0x97, 0xb7, 0x12, 0xf6, 0x8f, 0x65, 0xf0, 0x8f, 0xd7, 0x22, 0xd4, 0xb7, \
+ 0x5c, 0x97, 0x00, 0x7c, 0x4f, 0x7d, 0xff, 0xf5, 0xe5, 0xf2, 0x29, 0x08, \
+ 0xb5, 0x6b, 0xf4, 0x0a, 0xcd, 0x52, 0x63, 0xcc, 0x41, 0x90, 0x07, 0xa3, \
+ 0x55, 0xbc, 0xd1, 0xf4, 0xa3, 0xdd, 0x20, 0x12, 0x86, 0xe5, 0x8b, 0xe1, \
+ 0x16, 0x5e, 0x0e, 0xed, 0xf6, 0xc2, 0x36, 0xc7, 0xaa, 0xa7, 0xcf, 0xf3, \
+ 0xa8, 0xfb, 0xd6, 0xae, 0xe5, 0xd3, 0xea, 0x53, 0x68, 0xbb, 0xf0, 0xaa, \
+ 0xd8, 0xf4, 0x11, 0x47, 0xce, 0x87, 0x4e, 0x2c, 0x97, 0xed, 0x3f, 0xdf, \
+ 0xe8, 0x59, 0xde, 0xf1, 0x43, 0xf6, 0x3c, 0x1e, 0x7a, 0x09, 0x3c, 0xe1, \
+ 0x86, 0x15, 0x01, 0x6a, 0x85, 0x7e, 0x87, 0x5a, 0x40, 0x99, 0xd7, 0xa5, \
+ 0x6b, 0x03, 0x6c, 0x7b, 0xdb, 0xa2, 0x05, 0xff, 0x21, 0x84, 0x1c, 0x46, \
+ 0x93, 0xec, 0xfe, 0x08, 0xae, 0x8f, 0xaf, 0x10, 0xc7, 0x3f, 0xe3, 0xa8, \
+ 0xe2, 0x02, 0xa5, 0x85, 0xc3, 0x9a, 0xe8, 0xb0, 0x84, 0xf2, 0x87, 0x9a, \
+ 0x2c, 0x20, 0xfa, 0xf8, 0xab, 0xe5, 0x16, 0x3e, 0xb8, 0xac, 0xff, 0xfd, \
+ 0xe4, 0xb9, 0xa7, 0x3a, 0x97, 0x06, 0xbb, 0x5d, 0x3a, 0xe9, 0x12, 0x35, \
+ 0xf6, 0x73, 0xdf, 0x8f, 0x20, 0xf5, 0xdd, 0x72, 0xc0, 0x6d, 0xf8, 0xa7, \
+ 0x40, 0x19, 0x24, 0xc6, 0x14, 0xeb, 0x12, 0xd9, 0x15, 0xde, 0xff, 0xac, \
+ 0xba, 0x68, 0x97, 0x38, 0x61, 0x27, 0x80, 0x87, 0x7f, 0x39, 0xa8, 0x91, \
+ 0xb3, 0xcc, 0x06, 0x73, 0xc7, 0x28, 0x65, 0x3f, 0x72, 0x87, 0x43, 0x86, \
+ 0xd6, 0xa0, 0x97, 0x51, 0x6d, 0x56, 0xc1, 0x96, 0xc9, 0xf1, 0x51, 0x5a, \
+ 0x62, 0xb5, 0xdd, 0xba, 0xb2, 0xc7, 0x95, 0xd4, 0x8b, 0xe8, 0xb6, 0xa3, \
+ 0x04, 0x53, 0x30, 0x34, 0xf3, 0x23, 0xc6, 0x97, 0x0d, 0x43, 0xa0, 0x89, \
+ 0x57, 0xd8, 0xb0, 0xdb, 0x7c, 0xf8, 0x0e, 0x6c, 0x02, 0x58, 0x90, 0x69, \
+ 0xf9, 0xbf, 0x62, 0x2e, 0x60, 0xf6, 0x95, 0x3b, 0xfd, 0x10, 0xd6, 0x8c, \
+ 0xac, 0x3d, 0x42, 0x1b, 0xf9, 0x14, 0x51, 0x69, 0xfa, 0x0b, 0x10, 0xd2, \
+ 0x38, 0x42, 0x12, 0x55, 0x6e, 0x04, 0x2d, 0x95, 0x68, 0x6c, 0x44, 0xba, \
+ 0xcd, 0x01, 0xb8, 0xb2, 0xe6, 0x98, 0x16, 0x3c, 0xa6, 0xd2, 0xb9, 0x65, \
+ 0x55, 0x7e, 0x8e, 0x16, 0xf0, 0xd3, 0x67, 0x2b, 0xb3, 0x2c, 0x0d, 0xc3, \
+ 0xbb, 0xce, 0xd7, 0x8f, 0x75, 0x91, 0x8d, 0xf5, 0x97, 0x42, 0xfc, 0xb9, \
+ 0x83, 0x49, 0x25, 0xb5, 0x0c, 0x56, 0x8e, 0xc3, 0x05, 0xdb, 0x53, 0xe3, \
+ 0xd7, 0x91, 0x58, 0x51, 0x62, 0x0f, 0x07, 0x63, 0x82, 0x0a, 0xd5, 0x11, \
+ 0x89, 0x60, 0x41, 0xd7, 0xa8, 0x36, 0xb7, 0x64, 0xb5, 0x12, 0x73, 0xf6, \
+ 0xab, 0x1e, 0x40, 0x21, 0xe6, 0x7b, 0xcc, 0x50, 0x95, 0xc0, 0x2f, 0x55, \
+ 0xc1, 0x32, 0xb6, 0x74, 0xd4, 0x7b, 0x36, 0x27, 0x18, 0x30, 0x50, 0x8c, \
+ 0x6d, 0x08, 0xe7, 0x57, 0x81, 0x81, 0xfc, 0xf9, 0x5c, 0x90, 0x27, 0xc4, \
+ 0x3b, 0xeb, 0xc5, 0x6b, 0x0d, 0x08, 0x3d, 0x6b, 0xbd, 0xe1, 0x0e, 0x70, \
+ 0x11, 0x3a, 0xe4, 0x11, 0x02, 0x18, 0x1f, 0x14, 0x7b, 0xd6, 0xaa, 0xd5, \
+ 0x88, 0x98, 0xd2, 0x96, 0xb1, 0x4e, 0xc4, 0xf7, 0xe0, 0x49, 0xff, 0x47, \
+ 0x83, 0x19, 0x49, 0xb8, 0xf5, 0xaa, 0x29, 0xa2, 0xc7, 0x4e, 0x7e, 0xa2, \
+ 0x6a, 0x42, 0x70, 0xe8, 0x4d, 0x4a, 0xce, 0x36, 0x40, 0x7b, 0x25, 0x57, \
+ 0x67, 0xf9, 0xeb, 0x96, 0x76, 0xd1, 0x55, 0x59, 0xd1, 0xc4, 0x03, 0xb1, \
+ 0xa5, 0x94, 0x9a, 0x9c, 0xa2, 0xa7, 0x4e, 0x6e, 0x0f, 0x27, 0x19, 0xb1, \
+ 0x13, 0x06, 0x91, 0x17, 0x99, 0xbe, 0x9d, 0xea, 0x59, 0x7e, 0xc8, 0xb3, \
+ 0x75, 0xba, 0xc6, 0x46, 0xf8, 0xa9, 0xa0, 0x3e, 0x6f, 0x22, 0x71, 0xd9, \
+ 0xfb, 0x5b, 0x69, 0x5c, 0x51, 0xd7, 0xfe, 0x21, 0x25, 0xa0, 0x8e, 0x24, \
+ 0x3d, 0x63, 0xe5, 0xd4, 0x26, 0xb6, 0xdb, 0xbc, 0x14, 0x9a, 0x87, 0xe6, \
+ 0x5f, 0x8b, 0x18, 0x88, 0x46, 0x5f, 0x99, 0xce, 0x51, 0x9c, 0xe4, 0xdd, \
+ 0x8d, 0x51, 0x43, 0x2e, 0x45, 0xe4, 0xbd, 0x01, 0xa4, 0x18, 0x93, 0x18, \
+ 0x9a, 0x86, 0x56, 0xbc, 0x9c, 0x92, 0x26, 0xfc, 0x4b, 0xbc, 0x38, 0x44, \
+ 0x15, 0x69, 0xd3, 0xbe, 0x87, 0x18, 0x0c, 0x83, 0x3d, 0x63, 0xd5, 0x3a, \
+ 0xdc, 0x15, 0xd9, 0x53, 0xec, 0x6f, 0xcd, 0x16, 0x43, 0xaa, 0x00, 0xf2, \
+ 0x0a, 0xea, 0x7c, 0xc1, 0x69, 0xef, 0xee, 0xb9, 0x62, 0xeb, 0xb7, 0x24, \
+ 0xba, 0x00, 0x08, 0x86, 0x1a, 0x1f, 0xda, 0x98, 0x8c, 0x93, 0xd3, 0xea, \
+ 0x0e, 0x32, 0x24, 0xd4, 0xc7, 0x2c, 0x0c, 0x2f, 0xec, 0xf4, 0xf9, 0x54, \
+ 0xf9, 0xfc, 0xf4, 0x7b, 0x5f, 0x39, 0xb5, 0x9a, 0x9c, 0x4c, 0x12, 0x42, \
+ 0x33, 0x82, 0xae, 0x2e, 0xf5, 0x47, 0x31, 0x04, 0x90, 0xbb, 0x3d, 0x57, \
+ 0x66, 0x1a, 0x51, 0xb9, 0xee, 0x35, 0x6d, 0x07, 0x20, 0xf6, 0xe3, 0x76, \
+ 0xe2, 0x37, 0x4c, 0x38, 0xe7, 0x38, 0xe1, 0x58, 0xdb, 0xec, 0x8d, 0x7c, \
+ 0xc5, 0xa2, 0x3a, 0x62, 0x69, 0xa3, 0xca, 0x44, 0x1a, 0x4e, 0xc4, 0x06, \
+ 0xdd, 0xee, 0xf5, 0xa0, 0xd6, 0x00, 0x7d, 0x0b, 0x35, 0x90, 0xba, 0x19, \
+ 0xee, 0xb2, 0xa6, 0xda, 0x67, 0xfe, 0x21, 0xb6, 0x86, 0x25, 0xd1, 0xd4, \
+ 0x22, 0x73, 0x9c, 0x92, 0x8c, 0x7b, 0x9a, 0x49, 0x16, 0x3a, 0x6f, 0xfe, \
+ 0x60, 0xcf, 0xce, 0x4c, 0xfa, 0x91, 0x8b, 0x69, 0x0f, 0xe5, 0xb3, 0x00, \
+ 0x02, 0x2e, 0x88, 0xff, 0x16, 0x40, 0x20, 0xce, 0x98, 0x15, 0xd1, 0x8c, \
+ 0x97, 0xa6, 0x3a, 0xd3, 0x38, 0x3e, 0x11, 0x01, 0xeb, 0x52, 0x3c, 0x5e, \
+ 0x1d, 0x20, 0x48, 0x2d, 0xd6, 0xd0, 0x41, 0x1b, 0x13, 0xb7, 0x5c, 0x89, \
+ 0xe8, 0x64, 0xfa, 0x6b, 0xed, 0xe2, 0x67, 0x4b, 0xfa, 0x5c, 0x32, 0x83, \
+ 0xa1, 0x48, 0x7a, 0x30, 0x93, 0xff, 0x05, 0xdb, 0xa3, 0xf8, 0x64, 0x20, \
+ 0xa7, 0xa9, 0xac, 0x62, 0xc5, 0x99, 0x71, 0xfa, 0x9d, 0x10, 0xc9, 0xeb, \
+ 0xc6, 0x8f, 0x36, 0xd6, 0x5e, 0x79, 0x8f, 0x95, 0xc3, 0xa2, 0xcb, 0x11, \
+ 0x99, 0x3a, 0xe1, 0x45, 0x48, 0x55, 0xcd, 0xa4, 0xd8, 0x29, 0x0f, 0x2f, \
+ 0x0a, 0xa8, 0xf4, 0x8c, 0xbd, 0xda, 0xd9, 0x22, 0x11, 0xa1, 0xe1, 0xa3, \
+ 0x85, 0x88, 0x82, 0x21, 0x59, 0xc2, 0x57, 0xc0, 0x77, 0xa7, 0xbd, 0x1c, \
+ 0x1a, 0xfe, 0xb3, 0x64, 0x4e, 0x60, 0x01, 0xa1, 0xf0, 0xdc, 0x08, 0x33, \
+ 0x99, 0x3c, 0x06, 0x88, 0x79, 0xf4, 0x84, 0xd6, 0xa4, 0xda, 0x8c, 0x1f, \
+ 0xb8, 0x59, 0x59, 0xd2, 0x82, 0xbe, 0x52, 0x58, 0x32, 0x25, 0xb6, 0x0c, \
+ 0x31, 0xcf, 0x1e, 0xbe, 0x0e, 0x74, 0xbb, 0xd3, 0xfc, 0x74, 0xca, 0xf0, \
+ 0x39, 0xad, 0x3c, 0x03, 0xf5, 0x9b, 0x5d, 0xa6, 0x94, 0xfa, 0x81, 0x0e, \
+ 0x19, 0x9a, 0xd7, 0x58, 0x7b, 0x59, 0x35, 0x48, 0xc8, 0x28, 0xa1, 0x8c, \
+ 0x6a, 0x9b, 0x65, 0x7d, 0xf6, 0xcb, 0x39, 0xe8, 0x39, 0xf3, 0x6b, 0xef, \
+ 0xfc, 0x07, 0xc6, 0xe8, 0x5c, 0x8b, 0xbd, 0x7e, 0x98, 0x64, 0x6a, 0xf8, \
+ 0x79, 0xbe, 0xad, 0x4d, 0x3e, 0x1b, 0x79, 0xc4, 0x01, 0xeb, 0x64, 0x49, \
+ 0xa4, 0x20, 0x0f, 0x1c, 0xbd, 0xad, 0x39, 0x32, 0x9f, 0xc4, 0x3c, 0x55, \
+ 0x53, 0xa2, 0x86, 0xa0}
+
+// ML-DSA-44 device authenticity root backup production key for T3W1.
+#define DEV_AUTH_ROOT_PROD_BACKUP_MLDSA44 \
+ {0xfe, 0xdf, 0x8b, 0x0c, 0x16, 0x16, 0x4b, 0x9c, 0xec, 0x42, 0x78, 0x82, \
+ 0xaa, 0x03, 0xd3, 0xbd, 0x6a, 0x15, 0x88, 0xcf, 0xba, 0xeb, 0xaf, 0x93, \
+ 0xcf, 0x2f, 0xc5, 0x2f, 0x27, 0x54, 0x17, 0x77, 0x74, 0x33, 0xa9, 0x38, \
+ 0xdc, 0xd6, 0x51, 0x63, 0x45, 0x14, 0x8f, 0x72, 0x8c, 0x93, 0x5a, 0x40, \
+ 0xef, 0x3b, 0x6c, 0x41, 0xfd, 0x3e, 0xd8, 0x31, 0xfe, 0xa1, 0x37, 0x74, \
+ 0xbd, 0x39, 0x88, 0x7d, 0xa8, 0xb0, 0x6e, 0x2e, 0x67, 0x1c, 0xc3, 0x2a, \
+ 0x1c, 0x72, 0xe4, 0x4a, 0x13, 0xd1, 0xcd, 0x98, 0x5d, 0xc2, 0xdd, 0xcb, \
+ 0x63, 0xe4, 0x57, 0xbb, 0xd2, 0x9d, 0x38, 0x18, 0x6d, 0xdb, 0x77, 0x6b, \
+ 0x8e, 0x73, 0xb6, 0x45, 0xc8, 0xbf, 0x61, 0x63, 0x09, 0xf8, 0x90, 0xd1, \
+ 0x75, 0x53, 0x8a, 0x9d, 0x10, 0xc8, 0x2e, 0x59, 0x5d, 0xea, 0x03, 0xf7, \
+ 0x05, 0x64, 0xff, 0x69, 0xb5, 0x34, 0x97, 0xec, 0xef, 0xd5, 0x1f, 0xd8, \
+ 0x32, 0x00, 0x41, 0xd9, 0xb1, 0x09, 0x23, 0x86, 0x03, 0x3e, 0xd3, 0x7a, \
+ 0x93, 0xdd, 0x9b, 0x4b, 0x9d, 0xa1, 0x29, 0x7f, 0x80, 0x8e, 0xac, 0x21, \
+ 0x02, 0x0b, 0x8d, 0xc4, 0x74, 0x7e, 0x01, 0x85, 0x4e, 0xbd, 0xc4, 0x07, \
+ 0xa0, 0x4f, 0xc1, 0x8b, 0x27, 0x58, 0x72, 0x01, 0x25, 0xac, 0xb4, 0x1f, \
+ 0x0c, 0x60, 0xe1, 0x6c, 0xd5, 0x37, 0x07, 0xa6, 0x53, 0x92, 0xfe, 0xed, \
+ 0x06, 0xc9, 0xfc, 0xc2, 0x8a, 0x3e, 0x73, 0x8d, 0xbc, 0x91, 0x61, 0x4e, \
+ 0x89, 0xe5, 0xd5, 0x35, 0x27, 0x4c, 0x6b, 0x22, 0x6d, 0x83, 0xf3, 0x35, \
+ 0xa0, 0xdd, 0x08, 0x87, 0x55, 0x57, 0x1c, 0xf6, 0x24, 0x96, 0xca, 0x46, \
+ 0x42, 0xec, 0x8e, 0x65, 0xeb, 0xa8, 0xbe, 0x2b, 0x8c, 0xec, 0x46, 0x41, \
+ 0x6c, 0x6a, 0x3a, 0xd4, 0xbe, 0x10, 0x56, 0x9a, 0xc5, 0x32, 0xe0, 0x2d, \
+ 0x6e, 0x06, 0xb6, 0xce, 0x0c, 0x0d, 0x4b, 0x7a, 0x99, 0xa1, 0x1c, 0x91, \
+ 0x0f, 0x9f, 0x06, 0x31, 0xb0, 0xcd, 0x72, 0xe2, 0x06, 0x37, 0x23, 0x7e, \
+ 0xef, 0xf7, 0x23, 0xe7, 0x22, 0xf7, 0xaa, 0x62, 0x67, 0x32, 0x43, 0x4c, \
+ 0x47, 0x84, 0x3a, 0x09, 0x97, 0x39, 0xe9, 0x6e, 0x31, 0x26, 0x7d, 0x8d, \
+ 0x69, 0x05, 0xd8, 0xb2, 0xb7, 0x12, 0xa5, 0xa6, 0x9d, 0x93, 0x43, 0xa3, \
+ 0xc1, 0xe0, 0x7a, 0xfb, 0x41, 0x4b, 0x73, 0x95, 0x0f, 0x4b, 0x1d, 0xf1, \
+ 0x96, 0x24, 0x30, 0x05, 0xfb, 0x61, 0xc6, 0x20, 0x0e, 0xf3, 0x46, 0x82, \
+ 0x6d, 0x6c, 0x0f, 0x4c, 0xc8, 0xed, 0xe0, 0x52, 0xed, 0x48, 0x23, 0x59, \
+ 0x97, 0xbb, 0x36, 0x6d, 0xad, 0xe4, 0x48, 0x3b, 0xfc, 0x11, 0xfe, 0x65, \
+ 0xfd, 0x0c, 0x55, 0x39, 0xe8, 0x9d, 0x8b, 0xd2, 0x71, 0xe5, 0x4e, 0x30, \
+ 0xda, 0x6e, 0x51, 0x92, 0xa0, 0xf3, 0x43, 0xde, 0xa3, 0x80, 0x6a, 0xa7, \
+ 0x98, 0xd1, 0x2d, 0x62, 0x25, 0x1a, 0x06, 0x3d, 0x07, 0x1b, 0xa6, 0x7c, \
+ 0x35, 0xd3, 0xa2, 0x6e, 0x58, 0x2c, 0x2d, 0x36, 0x1c, 0xf2, 0xd0, 0xfc, \
+ 0x36, 0xfb, 0x1b, 0x5a, 0x46, 0xe4, 0x69, 0x66, 0x93, 0x38, 0xb1, 0xc1, \
+ 0x74, 0x4b, 0xdf, 0xe3, 0x65, 0x70, 0x0a, 0x6a, 0x1c, 0x64, 0x1a, 0xb2, \
+ 0xb7, 0x90, 0x6e, 0x2b, 0x7c, 0x0c, 0x0a, 0x9a, 0xf8, 0x86, 0x2a, 0xb5, \
+ 0x75, 0x1a, 0x67, 0x8e, 0x3e, 0x01, 0x56, 0x84, 0x7f, 0xf6, 0x09, 0x3c, \
+ 0xa7, 0xeb, 0xd4, 0x8d, 0xd8, 0xb1, 0xd6, 0xf7, 0x73, 0x6c, 0x20, 0x39, \
+ 0xe7, 0x05, 0xc1, 0xe2, 0x0f, 0x42, 0xed, 0x5c, 0xac, 0x6d, 0xb3, 0xdc, \
+ 0x7a, 0x7e, 0x2f, 0xac, 0xbb, 0x75, 0x41, 0x1e, 0x7f, 0xb8, 0xa1, 0x56, \
+ 0xdf, 0x52, 0xa2, 0x92, 0x6a, 0xfa, 0x90, 0x70, 0x93, 0x7c, 0xde, 0x4d, \
+ 0xd4, 0xbd, 0x45, 0x62, 0x94, 0xba, 0x59, 0xbd, 0xcf, 0x12, 0x3f, 0x11, \
+ 0xdc, 0xda, 0x26, 0x7d, 0x47, 0x57, 0x21, 0xab, 0xfe, 0xca, 0xb1, 0xb3, \
+ 0x18, 0x48, 0xa2, 0x72, 0x36, 0xaa, 0x75, 0x1e, 0x5b, 0x55, 0x01, 0x5f, \
+ 0x03, 0x3d, 0x87, 0xfb, 0x9c, 0xf5, 0xc0, 0x86, 0xe0, 0x9f, 0x16, 0x67, \
+ 0xcf, 0x7e, 0xc2, 0xe7, 0x24, 0x36, 0xc9, 0x07, 0xc5, 0x76, 0x36, 0x90, \
+ 0xd6, 0x98, 0xff, 0xfa, 0x99, 0x77, 0x09, 0xbb, 0x89, 0x52, 0x6c, 0xae, \
+ 0x77, 0x2b, 0xb9, 0x62, 0xc0, 0x6e, 0xd1, 0xb8, 0x9d, 0x41, 0x88, 0x35, \
+ 0x67, 0x2b, 0x85, 0xe1, 0xa1, 0xb2, 0xe3, 0xc5, 0x5f, 0x4e, 0x60, 0x7e, \
+ 0xca, 0xd0, 0x9b, 0xdb, 0x3a, 0x18, 0x22, 0x4b, 0x98, 0x05, 0x65, 0x9a, \
+ 0xa2, 0xec, 0xf0, 0xb6, 0x2d, 0xbf, 0x62, 0x65, 0xe2, 0x7d, 0x41, 0x01, \
+ 0x45, 0x0e, 0xdb, 0x59, 0x0d, 0x52, 0xd5, 0x25, 0xb6, 0x2b, 0x11, 0x14, \
+ 0xda, 0xd2, 0xeb, 0x06, 0xc9, 0x51, 0xa2, 0xc7, 0x7c, 0x7e, 0xcf, 0xbf, \
+ 0x5f, 0x1f, 0x6f, 0xe2, 0x85, 0xf3, 0x97, 0x27, 0x95, 0x8c, 0xe0, 0xb5, \
+ 0xcf, 0xe8, 0xfd, 0x46, 0x54, 0x20, 0xc2, 0x70, 0x30, 0x99, 0x99, 0xe6, \
+ 0x69, 0x4e, 0xe3, 0x1f, 0xcb, 0x7d, 0x64, 0x80, 0xa7, 0x5d, 0x0d, 0x72, \
+ 0x55, 0x8c, 0xd6, 0xa0, 0x50, 0xb8, 0xd1, 0x1a, 0x9a, 0x6d, 0x77, 0x36, \
+ 0x70, 0x00, 0x27, 0xfb, 0xe1, 0x4b, 0x48, 0x94, 0x9b, 0x7e, 0x1a, 0xf2, \
+ 0xca, 0x14, 0x8a, 0xd4, 0xe4, 0xb4, 0xb9, 0x3e, 0x95, 0x75, 0xa4, 0x11, \
+ 0x9a, 0xfd, 0x1b, 0x57, 0xc2, 0x50, 0x60, 0x6d, 0x5a, 0x4e, 0x25, 0x8c, \
+ 0x23, 0x93, 0xc1, 0x04, 0xd6, 0x51, 0x99, 0x5b, 0x1e, 0x75, 0x88, 0x7f, \
+ 0x49, 0x2f, 0xf0, 0x5e, 0x92, 0xe1, 0x63, 0x03, 0x32, 0xf1, 0x76, 0xd8, \
+ 0x6a, 0x04, 0x53, 0xb4, 0x12, 0xd0, 0x86, 0x9d, 0x98, 0xd6, 0xab, 0x27, \
+ 0x37, 0x7a, 0x74, 0x76, 0x6e, 0x3c, 0xad, 0xde, 0x29, 0xc1, 0x85, 0x3e, \
+ 0x63, 0x98, 0xa9, 0xed, 0xfa, 0x48, 0xc0, 0xd1, 0x4e, 0x7c, 0x14, 0x8b, \
+ 0x04, 0x8f, 0x1b, 0xf2, 0x5d, 0x11, 0x97, 0x9e, 0x94, 0x87, 0x8c, 0xb8, \
+ 0x6e, 0xaf, 0x1e, 0x55, 0x63, 0x8c, 0x1b, 0x39, 0xe0, 0xac, 0x52, 0x54, \
+ 0xa0, 0x09, 0xbf, 0x95, 0x7f, 0x4b, 0x62, 0x47, 0x96, 0x75, 0x3c, 0x34, \
+ 0x51, 0x24, 0x6e, 0x5a, 0x7b, 0x90, 0x22, 0x92, 0x6a, 0xa7, 0x7b, 0x7a, \
+ 0x1b, 0x4a, 0xe7, 0xd2, 0x5f, 0x77, 0x6d, 0x43, 0x95, 0xba, 0x98, 0xa3, \
+ 0x7d, 0x9e, 0x21, 0xb2, 0x21, 0xda, 0x29, 0x56, 0x4e, 0x50, 0xa6, 0x69, \
+ 0x05, 0x66, 0x50, 0xa4, 0x04, 0x89, 0x38, 0x6e, 0x89, 0x09, 0xc6, 0xca, \
+ 0x21, 0xd3, 0x69, 0xc3, 0x49, 0x5c, 0x44, 0xb2, 0xf7, 0x13, 0x73, 0xa3, \
+ 0x92, 0xc9, 0xfa, 0x89, 0xc9, 0x08, 0x5f, 0x46, 0x7d, 0x24, 0xd6, 0x21, \
+ 0x9f, 0xcd, 0xd2, 0xb5, 0x61, 0x26, 0x79, 0x2e, 0xb6, 0xa1, 0x42, 0x69, \
+ 0xc4, 0x26, 0x4a, 0x56, 0x92, 0x6b, 0x1a, 0x7d, 0x9a, 0x1c, 0x03, 0xd9, \
+ 0x64, 0x9d, 0x15, 0x7f, 0x93, 0x8a, 0xbf, 0xdc, 0x2a, 0x56, 0xc2, 0x07, \
+ 0x95, 0x06, 0x57, 0x74, 0x83, 0x80, 0x30, 0xda, 0x41, 0xa4, 0xc6, 0x17, \
+ 0x89, 0x19, 0xcc, 0x1c, 0x6c, 0x88, 0xde, 0x14, 0x58, 0xd9, 0xba, 0xa1, \
+ 0xe5, 0x1a, 0x4a, 0x19, 0x94, 0xe6, 0xd5, 0xcc, 0x94, 0xb0, 0x49, 0xb1, \
+ 0x5c, 0x23, 0x5c, 0x5c, 0xf4, 0x6d, 0x2c, 0xf2, 0x3f, 0x09, 0xd5, 0x65, \
+ 0xc5, 0xa5, 0x49, 0x7e, 0xf0, 0xb3, 0xa5, 0xfb, 0xc8, 0xd1, 0xbe, 0x8e, \
+ 0xd7, 0x8f, 0x37, 0x94, 0xc4, 0x9d, 0x49, 0x36, 0x13, 0x9b, 0x04, 0x19, \
+ 0xfa, 0xaf, 0xfc, 0x52, 0xb5, 0x5c, 0xb9, 0x1f, 0x6e, 0x1b, 0xaf, 0xac, \
+ 0xd5, 0x55, 0x23, 0xc0, 0xb7, 0xee, 0xc5, 0x6d, 0x98, 0xe4, 0x22, 0x8c, \
+ 0xd0, 0xf9, 0xd0, 0x0b, 0xc9, 0x86, 0x6d, 0xac, 0x71, 0xe4, 0x3d, 0xb2, \
+ 0xb2, 0xcf, 0x31, 0x19, 0x99, 0xd7, 0xbc, 0x3a, 0x49, 0x21, 0x98, 0x36, \
+ 0xf5, 0x58, 0xcb, 0xb5, 0xd8, 0xfa, 0xa7, 0x9e, 0x83, 0x07, 0x9c, 0x6c, \
+ 0xe9, 0x22, 0x88, 0xaa, 0xe8, 0x52, 0x55, 0x3b, 0x65, 0x5e, 0xf6, 0xbc, \
+ 0x87, 0xfb, 0xb2, 0x5c, 0xa3, 0xab, 0x48, 0x2a, 0xec, 0xaf, 0x0a, 0x86, \
+ 0xee, 0xcc, 0x92, 0x34, 0x19, 0x06, 0xcc, 0x89, 0xd2, 0x34, 0x08, 0x7f, \
+ 0x5a, 0xbd, 0x6d, 0x21, 0x00, 0xa6, 0x0d, 0x36, 0x1d, 0x51, 0x6d, 0x46, \
+ 0x0d, 0x43, 0x6b, 0x46, 0x70, 0x6a, 0xd4, 0x4b, 0x8b, 0x4e, 0xf3, 0xfe, \
+ 0x54, 0xea, 0x19, 0x8f, 0xfc, 0x2c, 0xf8, 0xc8, 0xe1, 0x44, 0xec, 0x62, \
+ 0xc4, 0xce, 0x86, 0xed, 0x5d, 0x18, 0x12, 0x83, 0xfc, 0x17, 0xc9, 0x26, \
+ 0x66, 0x8c, 0xa4, 0xe0, 0xb8, 0x68, 0x3e, 0x0c, 0x7b, 0xc6, 0x62, 0xa5, \
+ 0x4e, 0xa7, 0xf4, 0xc8, 0x30, 0x36, 0x5a, 0xd1, 0xcd, 0xea, 0x58, 0xab, \
+ 0xee, 0x9a, 0x72, 0x61, 0x68, 0xce, 0x98, 0x70, 0x72, 0x99, 0x72, 0x88, \
+ 0x4e, 0xcf, 0xe5, 0xba, 0xf0, 0x6f, 0x1e, 0xe6, 0x64, 0xaa, 0x42, 0x2e, \
+ 0x26, 0xf9, 0xf7, 0x6e, 0x20, 0x90, 0x8d, 0x72, 0xe7, 0x8c, 0x1a, 0x2d, \
+ 0xcd, 0x94, 0xfe, 0x1c, 0x07, 0x57, 0x3d, 0x77, 0x06, 0xd7, 0xbd, 0xc0, \
+ 0x7d, 0x0b, 0x41, 0x49, 0x8c, 0x0d, 0x52, 0xec, 0x3a, 0x90, 0xd6, 0xe7, \
+ 0xc0, 0xfc, 0xef, 0x59, 0x7a, 0x88, 0x4f, 0xb2, 0xca, 0xba, 0x29, 0xc2, \
+ 0x27, 0x95, 0x69, 0xa1, 0xe6, 0x4d, 0xd6, 0xc7, 0xed, 0x4b, 0x31, 0x2d, \
+ 0x21, 0x97, 0xb6, 0x39, 0x14, 0x07, 0x89, 0x9b, 0x25, 0xd2, 0x1c, 0xef, \
+ 0xd1, 0x40, 0x8e, 0xca, 0x42, 0x20, 0x4f, 0x76, 0xcb, 0x04, 0x36, 0xf4, \
+ 0x4c, 0x0a, 0x9c, 0x2e, 0x1e, 0xca, 0x19, 0xdf, 0x8d, 0x93, 0x25, 0x5c, \
+ 0x0d, 0xa6, 0x46, 0x9d, 0xc4, 0x7d, 0xa8, 0x83, 0xe1, 0x86, 0x38, 0x7f, \
+ 0x76, 0x01, 0x1c, 0xc8}
+
+// ML-DSA-44 device authenticity root staging key for T3W1.
+#define DEV_AUTH_ROOT_STAGING_MLDSA44 \
+ {0x1f, 0x3e, 0x5e, 0xda, 0xd4, 0x5f, 0xc6, 0x98, 0x0d, 0xbf, 0xd5, 0x97, \
+ 0xed, 0x17, 0xb7, 0x7e, 0x4d, 0x4a, 0xd1, 0xb1, 0xec, 0x48, 0x04, 0xe0, \
+ 0x4d, 0xc0, 0x61, 0xcc, 0x2c, 0xfe, 0x77, 0xbc, 0x96, 0xfb, 0xc9, 0x3f, \
+ 0x69, 0x8f, 0x1f, 0xe0, 0x0c, 0x47, 0x17, 0x7c, 0x81, 0x50, 0x27, 0x6d, \
+ 0xab, 0x86, 0xcb, 0xf4, 0x07, 0xad, 0xd7, 0x52, 0x7d, 0xeb, 0x09, 0xb6, \
+ 0x5a, 0x66, 0x23, 0xef, 0x58, 0x14, 0x22, 0x29, 0x2d, 0x77, 0x74, 0x4b, \
+ 0xe6, 0x4f, 0x44, 0x01, 0xca, 0x65, 0xb9, 0xbd, 0x02, 0x7e, 0x32, 0xa7, \
+ 0x6f, 0x30, 0x74, 0x13, 0xb0, 0x86, 0x86, 0x9e, 0xcc, 0xbc, 0xfc, 0x5e, \
+ 0x88, 0x23, 0xbe, 0x8e, 0x0b, 0x38, 0x97, 0x72, 0x7b, 0xca, 0x56, 0x8f, \
+ 0xee, 0xff, 0x62, 0x95, 0x7c, 0xd1, 0xe2, 0x61, 0xe4, 0xaa, 0xb6, 0x72, \
+ 0x71, 0x72, 0x5d, 0x24, 0x0c, 0x7e, 0x7d, 0x2a, 0x20, 0xa5, 0xc2, 0x01, \
+ 0x69, 0x9b, 0xe8, 0x3d, 0x6c, 0x6a, 0x57, 0xfd, 0xfc, 0x09, 0xac, 0x9b, \
+ 0x6b, 0x59, 0x9e, 0x2a, 0x14, 0xa5, 0x0e, 0x42, 0x1d, 0x24, 0x6d, 0x1d, \
+ 0x1d, 0xf8, 0x05, 0xdb, 0x0b, 0x25, 0x53, 0x4e, 0x50, 0x0f, 0xed, 0x76, \
+ 0xfa, 0x89, 0x97, 0x5a, 0x42, 0x70, 0xe2, 0x74, 0xa9, 0xfa, 0x72, 0xb5, \
+ 0x28, 0xe4, 0x7d, 0x99, 0x9a, 0xbd, 0xec, 0xa5, 0xe0, 0x8e, 0x51, 0xd4, \
+ 0x47, 0xae, 0x40, 0x19, 0xf6, 0x99, 0x08, 0x8d, 0x48, 0x5b, 0xb5, 0x2d, \
+ 0x5e, 0xec, 0x7a, 0x8c, 0x72, 0x5c, 0xd3, 0x4f, 0xf9, 0x55, 0xc1, 0x64, \
+ 0x37, 0x87, 0x7a, 0x13, 0x1f, 0x06, 0x84, 0x38, 0xb5, 0x69, 0x9c, 0x22, \
+ 0x85, 0x00, 0x04, 0x63, 0xe2, 0x4c, 0x63, 0x3b, 0x02, 0x3c, 0xde, 0x27, \
+ 0x9b, 0xe0, 0x15, 0xdb, 0x2f, 0x8b, 0x16, 0xde, 0x07, 0xfa, 0x82, 0xee, \
+ 0x9a, 0xdc, 0xbf, 0x86, 0x8b, 0x89, 0x8e, 0x25, 0xee, 0xef, 0x5d, 0x60, \
+ 0xd0, 0x3e, 0x1d, 0xa8, 0x74, 0xac, 0xa6, 0xf2, 0x08, 0x9b, 0x1e, 0x7c, \
+ 0x72, 0xd7, 0xb5, 0x32, 0xd3, 0xa2, 0x7e, 0x38, 0x93, 0x6d, 0x53, 0xc0, \
+ 0x08, 0x0f, 0x99, 0x08, 0xb6, 0x72, 0x7b, 0x13, 0xfe, 0x96, 0x1e, 0xc8, \
+ 0xb0, 0x80, 0x04, 0xf0, 0x77, 0xb9, 0xcc, 0xe9, 0x5b, 0x5e, 0xee, 0x9b, \
+ 0x44, 0xd3, 0x51, 0xe7, 0x9e, 0xb2, 0x22, 0xab, 0xa1, 0xbc, 0x18, 0x89, \
+ 0x5d, 0x36, 0xcf, 0x48, 0x43, 0xff, 0xcd, 0xfc, 0x73, 0x5e, 0x1b, 0x66, \
+ 0xf3, 0xe7, 0x2d, 0xb5, 0xaa, 0xf8, 0xb5, 0xec, 0xf5, 0x6d, 0xbf, 0x0d, \
+ 0x61, 0x6c, 0xf5, 0x3d, 0x19, 0x2a, 0x60, 0xe6, 0x1a, 0xd3, 0xc5, 0x1a, \
+ 0x59, 0x52, 0x13, 0x10, 0x0f, 0xd0, 0x08, 0x35, 0x43, 0x4a, 0x28, 0xaa, \
+ 0xb3, 0xeb, 0x59, 0x49, 0xd3, 0x40, 0x5d, 0xe5, 0xdb, 0x1a, 0x58, 0x6b, \
+ 0xd6, 0xe9, 0x37, 0x44, 0x49, 0x13, 0xe9, 0xf1, 0xd4, 0xc0, 0x02, 0x47, \
+ 0xac, 0xd4, 0x9a, 0x2e, 0xd9, 0x95, 0x36, 0x36, 0xe5, 0xd7, 0x44, 0x17, \
+ 0xb4, 0xc7, 0x14, 0x4c, 0x6c, 0x22, 0xfd, 0x8f, 0x7e, 0x25, 0xcb, 0x6c, \
+ 0xf6, 0xc8, 0x51, 0x0d, 0xe6, 0x91, 0x5b, 0x74, 0xc9, 0x5a, 0x28, 0xc1, \
+ 0x97, 0x15, 0x22, 0x08, 0x09, 0x6d, 0x02, 0x49, 0xb8, 0x61, 0x50, 0xe8, \
+ 0x07, 0x97, 0x8c, 0xa9, 0x85, 0xc1, 0x10, 0xd0, 0x7b, 0x7d, 0x0a, 0x24, \
+ 0x43, 0x40, 0x39, 0xf6, 0xef, 0x12, 0xa6, 0x9d, 0x3e, 0x07, 0x3a, 0xf6, \
+ 0xae, 0x44, 0xe7, 0xc4, 0x60, 0x6a, 0x35, 0x4a, 0x3e, 0x95, 0x3b, 0xdc, \
+ 0xff, 0x10, 0xc8, 0xdc, 0x68, 0xb8, 0x07, 0xf4, 0x1a, 0xc5, 0x63, 0xff, \
+ 0x0d, 0x71, 0x41, 0xc3, 0x28, 0xb3, 0x41, 0x52, 0xa2, 0x5a, 0x16, 0xe9, \
+ 0xcb, 0x82, 0x28, 0xf7, 0x70, 0x73, 0x56, 0xd2, 0xd7, 0xf3, 0xca, 0xa8, \
+ 0xd7, 0x78, 0xa8, 0x5e, 0x3b, 0x66, 0x24, 0x2c, 0x12, 0x42, 0x81, 0xc0, \
+ 0xf3, 0x20, 0x1a, 0xd2, 0x85, 0x96, 0xb8, 0x68, 0xdb, 0x13, 0x81, 0x49, \
+ 0xeb, 0x98, 0xb8, 0x21, 0xdc, 0xaa, 0xf8, 0x6b, 0x5e, 0x11, 0xc2, 0xac, \
+ 0x11, 0x61, 0x97, 0x5b, 0xf0, 0xb2, 0xec, 0xef, 0xc1, 0x11, 0xb7, 0xb7, \
+ 0x40, 0x1c, 0xe2, 0x61, 0x91, 0x15, 0x26, 0x61, 0x80, 0x44, 0xd1, 0x26, \
+ 0xee, 0xee, 0x88, 0x5e, 0xfe, 0x51, 0xbe, 0x0e, 0x32, 0xe9, 0x3a, 0xaa, \
+ 0xff, 0xe3, 0x48, 0x99, 0xdf, 0x5b, 0x10, 0xdf, 0x7c, 0x5a, 0x9c, 0x54, \
+ 0xc5, 0xb4, 0x70, 0x46, 0x71, 0x64, 0x0a, 0x92, 0xe8, 0x63, 0x1f, 0x0d, \
+ 0x40, 0x1f, 0x44, 0xc2, 0x23, 0x8b, 0x5f, 0x9a, 0x37, 0x49, 0x9b, 0x3d, \
+ 0x83, 0xc1, 0xc6, 0x00, 0x96, 0xf2, 0xb4, 0x8c, 0x30, 0x81, 0xdd, 0x97, \
+ 0x69, 0xdb, 0x32, 0x5c, 0x1c, 0xd1, 0xff, 0xe8, 0x4b, 0xfd, 0x8a, 0x80, \
+ 0xdd, 0xe3, 0xcd, 0x65, 0x0c, 0x49, 0xe1, 0x4a, 0xf3, 0xab, 0x6c, 0x31, \
+ 0x7e, 0xe7, 0x4b, 0xd3, 0x9e, 0x97, 0x6f, 0xf5, 0xb7, 0xad, 0x49, 0x0e, \
+ 0x80, 0xf3, 0xef, 0xf9, 0xed, 0xf3, 0xb3, 0x85, 0x50, 0x70, 0xa5, 0xa0, \
+ 0x6f, 0xbe, 0x9c, 0xbc, 0xa5, 0x4f, 0x52, 0x1e, 0x3d, 0x74, 0xcf, 0x13, \
+ 0xa4, 0xd1, 0x16, 0xe2, 0x3e, 0x53, 0x1a, 0x7c, 0x70, 0x23, 0x2c, 0x04, \
+ 0x4b, 0x7e, 0x7d, 0x02, 0x46, 0x7a, 0xfe, 0x2a, 0x40, 0xde, 0xf1, 0x42, \
+ 0x98, 0x68, 0x8e, 0xce, 0xd5, 0xd3, 0xd8, 0x7a, 0x10, 0x2d, 0x31, 0xd7, \
+ 0xcd, 0x54, 0x09, 0x91, 0x8c, 0xed, 0x4b, 0xab, 0x19, 0x05, 0x05, 0xdf, \
+ 0x48, 0xf4, 0x51, 0xde, 0xea, 0x1c, 0x29, 0x16, 0x82, 0x46, 0xd6, 0x21, \
+ 0x52, 0x9f, 0x03, 0x46, 0xea, 0xab, 0x0e, 0x23, 0x02, 0xf3, 0xce, 0x20, \
+ 0x6d, 0xd8, 0x48, 0x37, 0x70, 0x4b, 0x8b, 0xde, 0xdb, 0xad, 0xea, 0x5b, \
+ 0x58, 0x22, 0xcd, 0xec, 0xbf, 0xdb, 0x18, 0x0c, 0xde, 0x14, 0xe6, 0x2e, \
+ 0xe2, 0x6a, 0x92, 0x9f, 0x0a, 0x37, 0xa9, 0x9b, 0xac, 0xfe, 0x23, 0x73, \
+ 0x76, 0xa3, 0xe6, 0xc2, 0x89, 0xb0, 0x6b, 0x8e, 0x93, 0xed, 0x9d, 0x14, \
+ 0x35, 0xe3, 0xee, 0x63, 0x99, 0xab, 0x1a, 0x06, 0xd4, 0xf7, 0x00, 0x97, \
+ 0xf8, 0x0e, 0x26, 0xfe, 0x6f, 0x60, 0xb2, 0x7a, 0x68, 0x10, 0x4f, 0x63, \
+ 0x33, 0xb8, 0xdb, 0x1b, 0xc7, 0x8e, 0x12, 0xd5, 0x46, 0x47, 0xb2, 0x3f, \
+ 0xeb, 0x0f, 0x11, 0xae, 0x07, 0x0f, 0x3a, 0x6b, 0xe9, 0xd9, 0xf4, 0xd8, \
+ 0x9a, 0x6b, 0x5e, 0xf8, 0x59, 0x5d, 0x01, 0x0d, 0x41, 0x0e, 0x72, 0x13, \
+ 0x8c, 0xfc, 0xbd, 0x5e, 0x41, 0xcc, 0xa1, 0xdf, 0x33, 0xdd, 0xad, 0x65, \
+ 0x7b, 0x69, 0x9c, 0xf4, 0xd3, 0xdc, 0x60, 0x28, 0x88, 0xe5, 0xaa, 0xa0, \
+ 0xa7, 0xa2, 0x32, 0x5b, 0xa4, 0xa3, 0x6d, 0x7d, 0xe4, 0x9c, 0x59, 0x1d, \
+ 0x8e, 0x35, 0x5f, 0xd1, 0xde, 0x64, 0x4d, 0x77, 0x2b, 0xf2, 0xa0, 0x60, \
+ 0x09, 0x37, 0x43, 0x38, 0x8d, 0xbe, 0x5d, 0x30, 0xa2, 0xd9, 0x73, 0x04, \
+ 0xab, 0xc1, 0x7c, 0x54, 0x7b, 0xd6, 0x52, 0x76, 0x29, 0x1d, 0x6a, 0xa7, \
+ 0xb0, 0x72, 0x37, 0x03, 0x73, 0x32, 0x39, 0xfa, 0xbe, 0xf3, 0x9c, 0x2d, \
+ 0xe4, 0x70, 0x71, 0xd5, 0x00, 0x74, 0xe6, 0x8f, 0xbe, 0x71, 0xc8, 0x8f, \
+ 0x75, 0xd4, 0x51, 0x0b, 0xb5, 0xf6, 0xbc, 0x24, 0x4b, 0x3e, 0x7b, 0x21, \
+ 0x9e, 0xb8, 0x9f, 0xe5, 0xf1, 0x48, 0x45, 0x9a, 0x2d, 0x69, 0x3c, 0xd3, \
+ 0xfa, 0xc3, 0x2a, 0xa0, 0x69, 0xcb, 0xdd, 0x4e, 0x27, 0xc9, 0x77, 0x80, \
+ 0x96, 0xf6, 0x80, 0x5b, 0xf6, 0xdf, 0x9a, 0xec, 0x96, 0x71, 0xf0, 0xa5, \
+ 0x8b, 0x28, 0x70, 0x4f, 0x74, 0x77, 0x5e, 0x81, 0xac, 0x46, 0x82, 0x6c, \
+ 0x1c, 0x47, 0x09, 0xb0, 0xe0, 0x98, 0x9d, 0x6e, 0x8e, 0x73, 0xbd, 0x17, \
+ 0x95, 0xce, 0x85, 0xd8, 0x5c, 0x14, 0xad, 0x29, 0x97, 0xcd, 0x28, 0x10, \
+ 0x27, 0x2a, 0x56, 0x82, 0xe7, 0xed, 0x9a, 0xa7, 0xa0, 0x92, 0x70, 0x8c, \
+ 0x0f, 0x4b, 0xc6, 0x7f, 0x68, 0xd3, 0x17, 0xd4, 0x06, 0xa9, 0x6d, 0xdd, \
+ 0x28, 0x42, 0xea, 0x22, 0xcb, 0xf3, 0x41, 0x0c, 0xd7, 0xa7, 0x70, 0x05, \
+ 0xb6, 0x11, 0x15, 0xb7, 0x94, 0x89, 0x4c, 0xf9, 0xd1, 0x0e, 0xbb, 0x4f, \
+ 0x55, 0x52, 0xbe, 0xc8, 0xc2, 0x1d, 0x90, 0xba, 0x97, 0xd6, 0x13, 0x9d, \
+ 0x52, 0x61, 0xd7, 0xf5, 0x1f, 0x40, 0x09, 0xc3, 0x61, 0x8f, 0x9f, 0xeb, \
+ 0x22, 0xcc, 0x92, 0x9a, 0xde, 0x20, 0x4e, 0xca, 0x7c, 0x0f, 0x81, 0x34, \
+ 0x09, 0xce, 0xb8, 0x8a, 0x13, 0x51, 0x2f, 0x85, 0xe0, 0x39, 0x48, 0x31, \
+ 0x4b, 0xa9, 0xc4, 0x48, 0x8a, 0xaf, 0xda, 0x88, 0xce, 0x44, 0x7a, 0x0e, \
+ 0x05, 0x2a, 0x6a, 0x60, 0x5e, 0x32, 0xd0, 0x4a, 0x20, 0xe2, 0xe5, 0x2c, \
+ 0x41, 0xf3, 0x71, 0x24, 0x79, 0x63, 0xf2, 0x4f, 0xc2, 0x8c, 0x5c, 0xc1, \
+ 0xdd, 0xd8, 0xfe, 0x16, 0x81, 0xa2, 0xa2, 0x93, 0xda, 0xf2, 0x68, 0x8e, \
+ 0x9b, 0x02, 0x63, 0x03, 0xa7, 0x6c, 0xc6, 0x0f, 0x40, 0x29, 0x0c, 0x4d, \
+ 0x82, 0x3e, 0xfb, 0x85, 0xf3, 0x6c, 0xb5, 0xe0, 0x92, 0x36, 0x9c, 0xc2, \
+ 0x05, 0x15, 0xa8, 0x07, 0x7e, 0x77, 0x02, 0xed, 0x54, 0xca, 0x15, 0x65, \
+ 0xd3, 0x7b, 0x83, 0x18, 0x4e, 0xe4, 0x6c, 0x4a, 0x6a, 0xdf, 0x28, 0x40, \
+ 0xf5, 0xa5, 0xfb, 0x00, 0x2d, 0xb7, 0x06, 0x90, 0xbb, 0xf9, 0x38, 0x88, \
+ 0xe6, 0x85, 0xfd, 0xd1, 0xf9, 0xea, 0x21, 0x1b, 0x42, 0x69, 0x3e, 0x0b, \
+ 0xd5, 0xba, 0x52, 0x35, 0xa6, 0xea, 0x1b, 0x71, 0x47, 0x74, 0xd1, 0x32, \
+ 0x79, 0xd7, 0xdb, 0x34, 0x40, 0xf7, 0xfb, 0xce, 0xd5, 0x3f, 0x20, 0x3c, \
+ 0xe6, 0x50, 0x05, 0x55, 0xbc, 0xb9, 0x25, 0x1e, 0x6f, 0x36, 0xd3, 0x35, \
+ 0x23, 0x26, 0x50, 0x1c}
+#endif // TREZOR_MODEL_T3W1
diff --git a/core/embed/projects/prodtest/cmd/secure_channel.c b/core/embed/projects/prodtest/cmd/secure_channel.c
index 559e8b2fa..bd5166291 100644
--- a/core/embed/projects/prodtest/cmd/secure_channel.c
+++ b/core/embed/projects/prodtest/cmd/secure_channel.c
@@ -18,6 +18,7 @@
*/
#include "secure_channel.h"
+#include "hsm_keys.h"
#include "memzero.h"
@@ -40,18 +41,17 @@ static curve25519_key prodtest_private_key = {
0xc8, 0x56, 0x36, 0x89, 0xf5, 0xa6, 0x70, 0x66, 0x43, 0xeb, 0xe3,
0x7e, 0xff, 0x7a, 0x2c, 0x20, 0x31, 0x27, 0x58, 0xbe, 0x5f, 0x01,
0xc8, 0x6f, 0x9b, 0xe7, 0xe2, 0xe6, 0x0b, 0xee, 0x7e, 0x55};
+
static curve25519_key hsm_public_keys[] = {
#if PRODUCTION
- {0xba, 0x79, 0x2d, 0x15, 0xc6, 0x87, 0xb4, 0xa5, 0x31, 0xbe, 0x20,
- 0x1e, 0x88, 0x73, 0x86, 0xaa, 0x7b, 0x9f, 0x24, 0x09, 0x2d, 0xb7,
- 0x7a, 0xc9, 0x5b, 0x84, 0xee, 0xb3, 0x36, 0x66, 0x47, 0x5c},
- {0x07, 0x7a, 0xe8, 0xf9, 0xf8, 0x83, 0x9a, 0x8f, 0x07, 0x73, 0xc4,
- 0x98, 0x89, 0x40, 0x21, 0x86, 0xf9, 0xf9, 0xa8, 0xf4, 0xb2, 0xe7,
- 0xac, 0x0e, 0xe5, 0x83, 0xa2, 0xf7, 0xe6, 0x63, 0x82, 0x54}
+#ifdef HSM_PUBLIC_PROD_X25519
+ HSM_PUBLIC_PROD_X25519,
+#endif
+#ifdef HSM_PUBLIC_PROD_BACKUP_X25519
+ HSM_PUBLIC_PROD_BACKUP_X25519,
+#endif
#else
- {0xcf, 0xce, 0x80, 0xf7, 0xc8, 0x7e, 0xa1, 0xe9, 0x3d, 0x0d, 0x80,
- 0x98, 0x3f, 0xec, 0xc9, 0x98, 0xa0, 0xdd, 0xb6, 0xaa, 0x7a, 0x36,
- 0x36, 0x6b, 0x6c, 0x7d, 0xd4, 0x09, 0x32, 0x5f, 0x67, 0x4b}
+ HSM_PUBLIC_DEBUG_X25519,
#endif
};
Why this scored 35/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.