What changed, and why it matters
This commit moves the configuration settings for the Tropic secure chip out of the production-test tool and into the main firmware. At boot, the device now checks whether the Tropic chip's configuration matches the version expected by the firmware, and can update or repair it if needed. It also adds a version number stored in a Tropic memory slot and uses a backup slot during updates. The change is a feature/refactoring patch; there is no direct evidence in the commit that it fixes a known security vulnerability, but misconfiguration of a security chip is a security-sensitive operation.
Review the new `tropic_ensure_configuration()` implementation (not fully shown in the diff) to confirm it cannot downgrade or corrupt the irreversible configuration, and that it handles partial update failures safely. Verify that slot 6/7 access controls prevent unauthorized writes to the distribution version or backup slot. Ensure the generated JSON values match the intended security policy and that the Mako template's address-order check cannot be bypassed.
Security signals we found
Boot-time enforcement of expected secure-element configuration
Versioned configuration tables for reversible and irreversible Tropic configs
Use of a backup slot during configuration update
Retry wrappers added for whole-chip configuration reads
Refactoring of security-critical configuration out of prodtest into shared firmware
No changelog entry and no explicit security framing in commit message
Evidence from the diff
The patch refactors Tropic (Tropic01 secure element) configuration management. Previously, prodtest_tropic.c contained hardcoded g_irreversible_configuration and g_reversible_configuration structs. These are replaced by generated tables in core/embed/sec/tropic/config/tropic_configs.c (from JSON via a Mako template), keyed by distribution version. New firmware code calls tropic_ensure_configuration() during driver init in secmon/main.c and the Unix emulator. The prodtest lock/read commands now read/write a distribution version from/to Tropic R-memory slot 6 and use slot 7 as a temporary backup. Retry wrappers are used for whole-config reads. The patch also enables sensor configuration in model_server and adds upgrade tests.
Changed components
core/embed/sec/tropic/config/tropic_configs.ccore/embed/sec/tropic/config/tropic_configs.jsoncore/embed/sec/tropic/config/tropic_configs.c.makocore/embed/sec/tropic/tropic.ccore/embed/sec/tropic/inc/sec/tropic_configs.hcore/embed/projects/secmon/main.ccore/embed/projects/unix/main_main.ccore/embed/projects/prodtest/cmd/prodtest_tropic.ctests/upgrade_tests/test_tropic_config_set.pyInspect captured patch +9518 / −530
diff --git a/Makefile b/Makefile
index a1d13398..736d1498 100644
--- a/Makefile
+++ b/Makefile
@@ -187,11 +187,13 @@ lsgen: ## generate linker scripts
lsgen_check: ## check generated linker scripts
lsgen --check
-tropic_model_config:
+tropic_config:
./core/tools/generate_tropic_model_config.py
+ ./core/tools/generate_tropic_config_docs.py
-tropic_model_config_check:
+tropic_config_check:
./core/tools/generate_tropic_model_config.py --check
+ ./core/tools/generate_tropic_config_docs.py --check
hsm_keys:
./core/tools/generate_hsm_keys.py
@@ -205,9 +207,9 @@ prodtest_error_codes: ## generate prodtest error codes JSON
prodtest_error_codes_check: ## check prodtest error codes JSON is up to date
python3 core/tools/prodtest_error_codes.py --check
-gen: templates mocks icons protobuf vendorheader solana_templates bootloader_hashes lsgen tropic_model_config hsm_keys prodtest_error_codes ## regenerate auto-generated files from sources
+gen: templates mocks icons protobuf vendorheader solana_templates bootloader_hashes lsgen tropic_config hsm_keys prodtest_error_codes ## regenerate auto-generated files from sources
-gen_check: templates_check mocks_check icons_check protobuf_check vendorheader_check solana_templates_check bootloader_hashes_check lsgen_check tropic_model_config_check hsm_keys_check prodtest_error_codes_check ## check validity of auto-generated files
+gen_check: templates_check mocks_check icons_check protobuf_check vendorheader_check solana_templates_check bootloader_hashes_check lsgen_check tropic_config_check hsm_keys_check prodtest_error_codes_check ## check validity of auto-generated files
uvlock_check: ## check that uv.lock is up to date
@echo [UVLOCK-CHECK]
diff --git a/core/embed/projects/prodtest/cmd/prodtest_tropic.c b/core/embed/projects/prodtest/cmd/prodtest_tropic.c
index d253c26a..823331bb 100644
--- a/core/embed/projects/prodtest/cmd/prodtest_tropic.c
+++ b/core/embed/projects/prodtest/cmd/prodtest_tropic.c
@@ -31,6 +31,7 @@
#include <sec/secret.h>
#include <sec/secret_keys.h>
+#include "bignum.h"
#include "ecdsa.h"
#include "memzero.h"
#include "nist256p1.h"
@@ -42,6 +43,7 @@
#include "libtropic_l2.h"
#include <sec/tropic.h>
+#include <sec/tropic_configs.h>
#include "secure_channel.h"
@@ -58,425 +60,6 @@ static tropic_handshake_state_t g_tropic_handshake_state =
// TODO: Update this link to correspond with the latest chip revision when it
// becomes available.
// https://github.com/tropicsquare/tropic01/blob/da459d18db7aea107419035b9cdf316d89a73445/doc/api/tropic01_user_api_v1.1.2.pdf
-// TODO: Adjust the configuration to match the revision of the provisioned
-// tropics.
-// clang-format off
-static const struct lt_config_t g_irreversible_configuration = {
- .obj = {
- // # CFG_START_UP (0x00)
- // | Setting | Value |
- // |-------------------------|-------------------------|
- // | RFU_1 (bit 0) | 1 |
- // | MBIST_DIS (bit 1) | 0 (TEST_ON) |
- // | RNGTEST_DIS (bit 2) | 0 (TEST_ON) |
- // | MAINTENANCE_ENA (bit 3) | 1 (MAINTENANCE_ALLOWED) |
- ~0U & ~BIT(1) & ~BIT(2),
- // # CFG_SENSORS (0x08)
- // | Setting | Value |
- // |---------------------------------|----------------------|
- // | PTRNG0_TEST_DIS (bit 0) | 1 (NO_ACTION) |
- // | PTRNG1_TEST_DIS (bit 1) | 1 (NO_ACTION) |
- // | OSCILLATOR_MON_DIS (bit 2) | 1 (NO_ACTION) |
- // | SHIELD_DIS (bit 3) | 1 (NO_ACTION) |
- // | VOLTAGE_MON_DIS (bit 4) | 1 (NO_ACTION) |
- // | GLITCH_DET_DIS (bit 5) | 1 (NO_ACTION) |
- // | TEMP_SENS_DIS (bit 6) | 1 (NO_ACTION) |
- // | LASER_DET_DIS (bit 7) | 1 (NO_ACTION) |
- // | EM_PULSE_DET_DIS (bit 8) | 1 (NO_ACTION) |
- // | CPU_ALERT_DIS (bit 9) | 1 (NO_ACTION) |
- // | PIN_VERIF_BIT_FLIP_DIS (bit 10) | 1 (NO_ACTION) |
- // | SCB_BIT_FLIP_DIS (bit 11) | 1 (NO_ACTION) |
- // | CPB_BIT_FLIP_DIS (bit 12) | 1 (NO_ACTION) |
- // | ECC_BIT_FLIP_DIS (bit 13) | 1 (NO_ACTION) |
- // | R_MEM_BIT_FLIP_DIS (bit 14) | 1 (NO_ACTION) |
- // | EKDB_BIT_FLIP_DIS (bit 15) | 1 (NO_ACTION) |
- // | I_MEM_BIT_FLIP_DIS (bit 16) | 1 (NO_ACTION) |
- // | PLATFORM_BIT_FLIP_DIS (bit 17) | 1 (NO_ACTION) |
- ~0U,
- // # CFG_DEBUG (0x10)
- // | Setting | Value |
- // |-------------------|-------|
- // | FW_LOG_EN (bit 0) | 0 |
- ~0U & ~BIT(0),
- // # CFG_GPO (0x14)
- ~0U,
- // # CFG_SLEEP_MODE (0x18)
- // | Setting | Value |
- // |-----------------------|-------|
- // | SLEEP_MODE_EN (bit 0) | 1 |
- ~0U,
- // # CFG_UAP_PAIRING_KEY_WRITE (0x20)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | WRITE_PKEY_SLOT_0 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | WRITE_PKEY_SLOT_1 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | WRITE_PKEY_SLOT_2 | 0 (bit 16) | 0 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | WRITE_PKEY_SLOT_3 | 0 (bit 24) | 0 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(9) & ~BIT(16) & ~BIT(17) & ~BIT(24) & ~BIT(25),
- // # CFG_UAP_PAIRING_KEY_READ (0x24)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_PKEY_SLOT_0 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | READ_PKEY_SLOT_1 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | READ_PKEY_SLOT_2 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | READ_PKEY_SLOT_3 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_PAIRING_KEY_INVALIDATE (0x28)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | INVALIDATE_PKEY_SLOT_0 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | INVALIDATE_PKEY_SLOT_1 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | INVALIDATE_PKEY_SLOT_2 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | INVALIDATE_PKEY_SLOT_3 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_R_CONFIG_WRITE_ERASE (0x30)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | R_CONFIG_WRITE_ERASE | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- ~0U & ~BIT(0) & ~BIT(1),
- // # CFG_UAP_R_CONFIG_READ (0x34)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | R_CONFIG_READ_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | R_CONFIG_READ_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- ~0U & ~BIT(0) & ~BIT(8),
- // # CFG_UAP_I_CONFIG_WRITE (0x40)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | I_CONFIG_WRITE_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | I_CONFIG_WRITE_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- ~0U & ~BIT(0) & ~BIT(8),
- // # CFG_UAP_I_CONFIG_READ (0x44)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | I_CONFIG_READ_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | I_CONFIG_READ_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- ~0U & ~BIT(0) & ~BIT(8),
- // # CFG_UAP_PING (0x100)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |---------|----------------|---------------|---------------|---------------|
- // | PING | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- ~0U & ~BIT(0),
- // # CFG_UAP_R_MEM_DATA_WRITE (0x110)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | WRITE_UDATA_SLOT_0_127 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | WRITE_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | WRITE_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | WRITE_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(9) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_R_MEM_DATA_READ (0x114)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_UDATA_SLOT_0_127 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | READ_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | READ_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | READ_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(9) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_R_MEM_DATA_ERASE (0x118)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ERASE_UDATA_SLOT_0_127 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | ERASE_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | ERASE_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | ERASE_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(9) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_RANDOM_VALUE_GET (0x120)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | RANDOM_VALUE_GET | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- ~0U & ~BIT(0),
- // # CFG_UAP_ECC_KEY_GENERATE (0x130)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | GEN_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | GEN_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | GEN_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | GEN_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_ECC_KEY_STORE (0x134)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | STORE_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | STORE_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | STORE_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | STORE_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_ECC_KEY_READ (0x138)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_ECCKEY_SLOT_0_7 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | READ_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | READ_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | READ_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_ECC_KEY_ERASE (0x13c)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ERASE_ECCKEY_SLOT_0_7 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | ERASE_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | ERASE_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | ERASE_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_ECDSA_SIGN (0x140)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ECDSA_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | ECDSA_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | ECDSA_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | ECDSA_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_EDDSA_SIGN (0x144)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | EDDSA_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | EDDSA_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | EDDSA_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | EDDSA_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_MCOUNTER_INIT (0x150)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_INIT_0_3 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | MCOUNTER_INIT_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | MCOUNTER_INIT_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | MCOUNTER_INIT_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_MCOUNTER_GET (0x154)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_GET_0_3 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | MCOUNTER_GET_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | MCOUNTER_GET_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | MCOUNTER_GET_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_MCOUNTER_UPDATE (0x158)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_UPDATE_0_3 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | MCOUNTER_UPDATE_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | MCOUNTER_UPDATE_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | MCOUNTER_UPDATE_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(8) & ~BIT(16) & ~BIT(24),
- // # CFG_UAP_MAC_AND_DESTROY (0x160)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MACANDD_0_31 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 1 (bit 3) |
- // | MACANDD_32_63 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 1 (bit 11) |
- // | MACANDD_64_95 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 1 (bit 19) |
- // | MACANDD_96_127 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 1 (bit 27) |
- ~0U & ~BIT(0) & ~BIT(1) & ~BIT(8) & ~BIT(9) & ~BIT(16) & ~BIT(24),
- }};
-
-// TODO: Adjust the configuration to match the revision of the provisioned
-// tropics.
-static const struct lt_config_t g_reversible_configuration = {
- .obj = {
- // # CFG_START_UP (0x00)
- // | Setting | Value |
- // |-------------------------|---------------------------|
- // | RFU_1 (bit 0) | 1 |
- // | MBIST_DIS (bit 1) | 0 (TEST_ON) |
- // | RNGTEST_DIS (bit 2) | 0 (TEST_ON) |
- // | MAINTENANCE_ENA (bit 3) | 0 (MAINTENANCE_FORBIDDEN) |
- BIT(0),
- // # CFG_SENSORS (0x08)
- // | Setting | Value |
- // |---------------------------------|----------------------|
- // | PTRNG0_TEST_DIS (bit 0) | 0 (ENTER_ALARM_MODE) |
- // | PTRNG1_TEST_DIS (bit 1) | 0 (ENTER_ALARM_MODE) |
- // | OSCILLATOR_MON_DIS (bit 2) | 0 (ENTER_ALARM_MODE) |
- // | SHIELD_DIS (bit 3) | 0 (ENTER_ALARM_MODE) |
- // | VOLTAGE_MON_DIS (bit 4) | 0 (ENTER_ALARM_MODE) |
- // | GLITCH_DET_DIS (bit 5) | 0 (ENTER_ALARM_MODE) |
- // | TEMP_SENS_DIS (bit 6) | 0 (ENTER_ALARM_MODE) |
- // | LASER_DET_DIS (bit 7) | 0 (ENTER_ALARM_MODE) |
- // | EM_PULSE_DET_DIS (bit 8) | 0 (ENTER_ALARM_MODE) |
- // | CPU_ALERT_DIS (bit 9) | 0 (ENTER_ALARM_MODE) |
- // | PIN_VERIF_BIT_FLIP_DIS (bit 10) | 0 (ENTER_ALARM_MODE) |
- // | SCB_BIT_FLIP_DIS (bit 11) | 0 (ENTER_ALARM_MODE) |
- // | CPB_BIT_FLIP_DIS (bit 12) | 0 (ENTER_ALARM_MODE) |
- // | ECC_BIT_FLIP_DIS (bit 13) | 0 (ENTER_ALARM_MODE) |
- // | R_MEM_BIT_FLIP_DIS (bit 14) | 0 (ENTER_ALARM_MODE) |
- // | EKDB_BIT_FLIP_DIS (bit 15) | 0 (ENTER_ALARM_MODE) |
- // | I_MEM_BIT_FLIP_DIS (bit 16) | 0 (ENTER_ALARM_MODE) |
- // | PLATFORM_BIT_FLIP_DIS (bit 17) | 0 (ENTER_ALARM_MODE) |
- 0,
- // # CFG_DEBUG (0x10)
- // | Setting | Value |
- // |-------------------|-------|
- // | FW_LOG_EN (bit 0) | 0 |
- 0,
- // # CFG_GPO (0x14)
- 0,
- // # CFG_SLEEP_MODE (0x18)
- // | Setting | Value |
- // |-----------------------|-------|
- // | SLEEP_MODE_EN (bit 0) | 1 |
- BIT(0),
- // # CFG_UAP_PAIRING_KEY_WRITE (0x20)
- // | Target | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | WRITE_PKEY_SLOT_0 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | WRITE_PKEY_SLOT_1 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | WRITE_PKEY_SLOT_2 | 0 (bit 16) | 0 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | WRITE_PKEY_SLOT_3 | 0 (bit 24) | 0 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(10) | BIT(18) | BIT(26),
- // # CFG_UAP_PAIRING_KEY_READ (0x24)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_PKEY_SLOT_0 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | READ_PKEY_SLOT_1 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | READ_PKEY_SLOT_2 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | READ_PKEY_SLOT_3 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_PAIRING_KEY_INVALIDATE (0x28)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | INVALIDATE_PKEY_SLOT_0 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | INVALIDATE_PKEY_SLOT_1 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | INVALIDATE_PKEY_SLOT_2 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | INVALIDATE_PKEY_SLOT_3 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_R_CONFIG_WRITE_ERASE (0x30)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | R_CONFIG_WRITE_ERASE | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- BIT(2),
- // # CFG_UAP_R_CONFIG_READ (0x34)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | R_CONFIG_READ_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | R_CONFIG_READ_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10),
- // # CFG_UAP_I_CONFIG_WRITE (0x40)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | I_CONFIG_WRITE_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | I_CONFIG_WRITE_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10),
- // # CFG_UAP_I_CONFIG_READ (0x44)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | I_CONFIG_READ_CFG | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | I_CONFIG_READ_FUNC | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10),
- // # CFG_UAP_PING (0x100)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |---------|----------------|---------------|---------------|---------------|
- // | PING | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- BIT(1) | BIT(2),
- // # CFG_UAP_R_MEM_DATA_WRITE (0x110)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | WRITE_UDATA_SLOT_0_127 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | WRITE_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | WRITE_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | WRITE_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_R_MEM_DATA_READ (0x114)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_UDATA_SLOT_0_127 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | READ_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | READ_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | READ_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_R_MEM_DATA_ERASE (0x118)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ERASE_UDATA_SLOT_0_127 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | ERASE_UDATA_SLOT_128_255 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | ERASE_UDATA_SLOT_256_383 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | ERASE_UDATA_SLOT_384_511 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_RANDOM_VALUE_GET (0x120)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | RANDOM_VALUE_GET | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- BIT(1) | BIT(2),
- // # CFG_UAP_ECC_KEY_GENERATE (0x130)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | GEN_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | GEN_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | GEN_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | GEN_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_ECC_KEY_STORE (0x134)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | STORE_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | STORE_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | STORE_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | STORE_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_ECC_KEY_READ (0x138)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | READ_ECCKEY_SLOT_0_7 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | READ_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | READ_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | READ_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_ECC_KEY_ERASE (0x13c)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ERASE_ECCKEY_SLOT_0_7 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | ERASE_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | ERASE_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | ERASE_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_ECDSA_SIGN (0x140)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | ECDSA_ECCKEY_SLOT_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | ECDSA_ECCKEY_SLOT_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | ECDSA_ECCKEY_SLOT_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | ECDSA_ECCKEY_SLOT_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_EDDSA_SIGN (0x144)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | EDDSA_ECCKEY_0_7 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | EDDSA_ECCKEY_8_15 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | EDDSA_ECCKEY_16_23 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | EDDSA_ECCKEY_24_31 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_MCOUNTER_INIT (0x148)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_INIT_0_3 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | MCOUNTER_INIT_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | MCOUNTER_INIT_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | MCOUNTER_INIT_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_MCOUNTER_GET (0x154)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_GET_0_3 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | MCOUNTER_GET_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | MCOUNTER_GET_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | MCOUNTER_GET_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_MCOUNTER_UPDATE (0x158)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MCOUNTER_UPDATE_0_3 | 0 (bit 0) | 1 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | MCOUNTER_UPDATE_4_7 | 0 (bit 8) | 1 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | MCOUNTER_UPDATE_8_11 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | MCOUNTER_UPDATE_12_15 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(1) | BIT(2) | BIT(9) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- // # CFG_UAP_MAC_AND_DESTROY (0x160)
- // | Setting | Pairing Key 0 | Pairing Key 1 | Pairing Key 2 | Pairing Key 3 |
- // |--------------------------|---------------|---------------|---------------|---------------|
- // | MACANDD_0_31 | 0 (bit 0) | 0 (bit 1) | 1 (bit 2) | 0 (bit 3) |
- // | MACANDD_32_63 | 0 (bit 8) | 0 (bit 9) | 1 (bit 10) | 0 (bit 11) |
- // | MACANDD_64_95 | 0 (bit 16) | 1 (bit 17) | 1 (bit 18) | 0 (bit 19) |
- // | MACANDD_96_127 | 0 (bit 24) | 1 (bit 25) | 1 (bit 26) | 0 (bit 27) |
- BIT(2) | BIT(10) | BIT(17) | BIT(18) | BIT(25) | BIT(26),
- }};
-// clang-format on
// Total number of MAC-and-destroy slots.
#define TROPIC_MAC_AND_DESTROY_SLOT_TOTAL \
@@ -555,7 +138,7 @@ static void prodtest_tropic_get_chip_id(cli_t* cli) {
lt_handle_t* tropic_handle = tropic_get_handle();
- struct lt_chip_id_t chip_id;
+ lt_chip_id_t chip_id;
lt_ret_t ret = lt_get_info_chip_id(tropic_handle, &chip_id);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_CHIP_ID,
@@ -639,40 +222,91 @@ tropic_locked_status get_tropic_locked_status(cli_t* cli) {
}
}
- struct lt_config_t configuration_read = {0};
+ tropic_expected_config_t config = {0};
+ if (!tropic_get_expected_tropic_config_from_distribution_version(
+ tropic_prodtest_config_distribution_version, &config)) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_CHECK_EXPECTED_CONFIG,
+ "Prodtest expected configuration not found.");
+ return TROPIC_LOCKED_ERROR;
+ }
- ret = lt_read_whole_R_config(tropic_handle, &configuration_read);
+ lt_config_t configuration_read = {0};
+ ret = lt_read_whole_R_config_retry(tropic_handle, &configuration_read);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_CHECK_R_CONFIG_READ,
- "`lt_read_whole_R_config()` failed with error '%s'",
+ "`lt_read_whole_R_config_retry()` failed with error '%s'",
lt_ret_verbose(ret));
return TROPIC_LOCKED_ERROR;
}
- if (memcmp(&g_reversible_configuration, (uint8_t*)&configuration_read,
- sizeof(g_reversible_configuration)) != 0) {
+ if (memcmp(config.max_r_config, (uint8_t*)&configuration_read,
+ sizeof(*config.max_r_config)) != 0) {
cli_trace(cli,
"The reversible configuration read does not match the expected "
"reversible configuration.");
return TROPIC_LOCKED_FALSE;
}
- ret = lt_read_whole_I_config(tropic_handle, &configuration_read);
+ ret = lt_read_whole_I_config_retry(tropic_handle, &configuration_read);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_CHECK_I_CONFIG_READ,
- "`lt_read_whole_I_config()` failed with error '%s'",
+ "`lt_read_whole_I_config_retry()` failed with error '%s'",
lt_ret_verbose(ret));
return TROPIC_LOCKED_ERROR;
}
- if (memcmp(&g_irreversible_configuration, (uint8_t*)&configuration_read,
- sizeof(g_irreversible_configuration)) != 0) {
+ if (memcmp(config.i_config, (uint8_t*)&configuration_read,
+ sizeof(*config.i_config)) != 0) {
cli_trace(cli,
"The irreversible configuration read does not match the expected "
"irreversible configuration.");
return TROPIC_LOCKED_FALSE;
}
+ uint8_t distribution_version_bytes[sizeof(
+ tropic_prodtest_config_distribution_version)] = {0};
+ uint16_t distribution_version_read_length = 0;
+ ret = lt_r_mem_data_read(
+ tropic_handle, TROPIC_CONFIG_DISTRIBUTION_VERSION_SLOT,
+ distribution_version_bytes, sizeof(distribution_version_bytes),
+ &distribution_version_read_length);
+ if (ret == LT_L3_R_MEM_DATA_READ_SLOT_EMPTY) {
+ cli_trace(cli, "The distribution version slot is empty.");
+ return TROPIC_LOCKED_FALSE;
+ } else if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_CHECK_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return TROPIC_LOCKED_ERROR;
+ }
+
+ if (distribution_version_read_length != sizeof(distribution_version_bytes) ||
+ read_be(distribution_version_bytes) !=
+ tropic_prodtest_config_distribution_version) {
+ cli_trace(cli,
+ "The distribution version read does not match the expected "
+ "distribution version.");
+ return TROPIC_LOCKED_FALSE;
+ }
+
+ ret = lt_r_mem_data_read(
+ tropic_handle, TROPIC_CONFIG_BACKUP_DISTRIBUTION_VERSION_SLOT,
+ distribution_version_bytes, sizeof(distribution_version_bytes),
+ &distribution_version_read_length);
+
+ switch (ret) {
+ case LT_L3_R_MEM_DATA_READ_SLOT_EMPTY:
+ break; // the backup slot is expected to be empty
+ case LT_OK:
+ cli_trace(cli, "The backup distribution version slot is not empty.");
+ return TROPIC_LOCKED_FALSE;
+ default:
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_CHECK_BACKUP_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return TROPIC_LOCKED_ERROR;
+ }
+
return TROPIC_LOCKED_TRUE;
}
@@ -765,7 +399,7 @@ cleanup:
}
static void prodtest_tropic_pair(cli_t* cli) {
- // If this functions successfully completes, it is ensured that:
+ // If this function successfully completes, it is ensured that:
// * The public tropic key is written to MCU's flash.
// * The factory pairing key in tropic's `TR01_PAIRING_KEY_SLOT_INDEX_0` is
// invalidated.
@@ -1328,7 +962,15 @@ static void prodtest_tropic_lock(cli_t* cli) {
return;
}
- struct lt_config_t configuration_read = {0};
+ tropic_expected_config_t config = {0};
+ if (!tropic_get_expected_tropic_config_from_distribution_version(
+ tropic_prodtest_config_distribution_version, &config)) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_EXPECTED_CONFIG,
+ "Prodtest expected configuration not found.");
+ return;
+ }
+
+ lt_config_t configuration_read = {0};
lt_handle_t* tropic_handle = tropic_get_handle();
ret = lt_r_config_erase(tropic_handle);
@@ -1339,7 +981,7 @@ static void prodtest_tropic_lock(cli_t* cli) {
return;
}
- ret = lt_write_whole_R_config(tropic_handle, &g_reversible_configuration);
+ ret = lt_write_whole_R_config(tropic_handle, config.max_r_config);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_R_CONFIG_WRITE,
"`lt_write_whole_R_config()` failed with error '%s'",
@@ -1355,14 +997,14 @@ static void prodtest_tropic_lock(cli_t* cli) {
return;
}
- if (memcmp(&g_reversible_configuration, (uint8_t*)&configuration_read,
- sizeof(g_reversible_configuration)) != 0) {
+ if (memcmp(config.max_r_config, (uint8_t*)&configuration_read,
+ sizeof(*config.max_r_config)) != 0) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_MISMATCH,
"Reversible configuration mismatch after write.");
return;
}
- ret = lt_write_whole_I_config(tropic_handle, &g_irreversible_configuration);
+ ret = lt_write_whole_I_config(tropic_handle, config.i_config);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_I_CONFIG_WRITE,
"`lt_write_whole_I_config()` failed with error '%s'",
@@ -1370,21 +1012,98 @@ static void prodtest_tropic_lock(cli_t* cli) {
return;
}
- ret = lt_read_whole_I_config(tropic_handle, &configuration_read);
+ ret = lt_read_whole_I_config_retry(tropic_handle, &configuration_read);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_I_CONFIG_VERIFY_READ,
- "`lt_read_whole_I_config()` failed with error '%s'",
+ "`lt_read_whole_I_config_retry()` failed with error '%s'",
lt_ret_verbose(ret));
return;
}
- if (memcmp(&g_irreversible_configuration, (uint8_t*)&configuration_read,
- sizeof(g_irreversible_configuration)) != 0) {
+ if (memcmp(config.i_config, (uint8_t*)&configuration_read,
+ sizeof(*config.i_config)) != 0) {
cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_I_CONFIG_MISMATCH,
"Irreversible configuration mismatch after write.");
return;
}
+ ret = lt_r_mem_data_erase(tropic_handle,
+ TROPIC_CONFIG_DISTRIBUTION_VERSION_SLOT);
+ if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_ERASE,
+ "`lt_r_mem_data_erase()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return;
+ }
+
+ uint8_t distribution_version_bytes[sizeof(config.distribution_version)] = {0};
+ write_be(distribution_version_bytes, config.distribution_version);
+ ret = lt_r_mem_data_write(
+ tropic_handle, TROPIC_CONFIG_DISTRIBUTION_VERSION_SLOT,
+ distribution_version_bytes, sizeof(distribution_version_bytes));
+ if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_WRITE,
+ "`lt_r_mem_data_write()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return;
+ }
+
+ uint16_t distribution_version_read_length = 0;
+ ret = lt_r_mem_data_read(
+ tropic_handle, TROPIC_CONFIG_DISTRIBUTION_VERSION_SLOT,
+ distribution_version_bytes, sizeof(distribution_version_bytes),
+ &distribution_version_read_length);
+ if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return;
+ }
+
+ if (distribution_version_read_length != sizeof(distribution_version_bytes)) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_LEN,
+ "Distribution version length mismatch after write. Expected %zu, "
+ "got %u.",
+ sizeof(distribution_version_bytes),
+ (unsigned int)distribution_version_read_length);
+ return;
+ }
+
+ if (config.distribution_version != read_be(distribution_version_bytes)) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_MISMATCH,
+ "Distribution version mismatch after write. Expected %u, got %u.",
+ (unsigned int)config.distribution_version,
+ (unsigned int)read_be(distribution_version_bytes));
+ return;
+ }
+
+ ret = lt_r_mem_data_erase(tropic_handle,
+ TROPIC_CONFIG_BACKUP_DISTRIBUTION_VERSION_SLOT);
+ if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_ERASE,
+ "`lt_r_mem_data_erase()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return;
+ }
+
+ ret = lt_r_mem_data_read(
+ tropic_handle, TROPIC_CONFIG_BACKUP_DISTRIBUTION_VERSION_SLOT,
+ distribution_version_bytes, sizeof(distribution_version_bytes),
+ &distribution_version_read_length);
+ switch (ret) {
+ case LT_L3_R_MEM_DATA_READ_SLOT_EMPTY:
+ break; // the backup slot is expected to be empty
+ case LT_OK:
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_NOT_EMPTY,
+ "The backup distribution version slot is not empty.");
+ return;
+ default:
+ cli_error(cli, PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error '%s'",
+ lt_ret_verbose(ret));
+ return;
+ }
+
cli_ok(cli, "");
}
@@ -2991,7 +2710,7 @@ static void prodtest_tropic_set_sensors(cli_t* cli) {
}
}
- struct lt_config_t configuration = {0};
+ lt_config_t configuration = {0};
lt_ret_t ret = lt_read_whole_R_config_retry(tropic_handle, &configuration);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_SENSORS_READ_CONFIG,
@@ -3012,7 +2731,7 @@ static void prodtest_tropic_set_sensors(cli_t* cli) {
}
// Verify the write
- struct lt_config_t verify_configuration = {0};
+ lt_config_t verify_configuration = {0};
ret = lt_read_whole_R_config_retry(tropic_handle, &verify_configuration);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_SENSORS_SLOT_READ,
@@ -3087,7 +2806,7 @@ static void prodtest_tropic_read_configs(cli_t* cli) {
}
// read reversible configuration
- struct lt_config_t r_config = {0};
+ lt_config_t r_config = {0};
lt_ret_t ret = lt_read_whole_R_config_retry(tropic_handle, &r_config);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_R_CONFIG,
@@ -3103,11 +2822,12 @@ static void prodtest_tropic_read_configs(cli_t* cli) {
}
// read irreversible configuration
- struct lt_config_t i_config = {0};
- ret = lt_read_whole_I_config(tropic_handle, &i_config);
+ lt_config_t i_config = {0};
+ ret = lt_read_whole_I_config_retry(tropic_handle, &i_config);
if (ret != LT_OK) {
cli_error(cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_I_CONFIG,
- "`lt_read_whole_I_config()` failed with error %s",
+
+ "`lt_read_whole_I_config_retry()` failed with error %s",
lt_ret_verbose(ret));
return;
}
@@ -3119,6 +2839,49 @@ static void prodtest_tropic_read_configs(cli_t* cli) {
i_config.obj[i], i * 0x08);
}
+ cli_trace(cli, "");
+ cli_trace(cli, "=== Configuration Distribution Version ===");
+ uint8_t read_value_bytes[sizeof(uint32_t)] = {0};
+ uint16_t read_length = 0;
+ ret = lt_r_mem_data_read(
+ tropic_get_handle(), TROPIC_CONFIG_DISTRIBUTION_VERSION_SLOT,
+ read_value_bytes, sizeof(read_value_bytes), &read_length);
+ if (ret == LT_L3_R_MEM_DATA_READ_SLOT_EMPTY) {
+ cli_trace(cli, "Configuration distribution version: empty");
+ } else if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error %s",
+ lt_ret_verbose(ret));
+ return;
+ } else if (read_length != sizeof(read_value_bytes)) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_LEN,
+ "Unexpected length of configuration distribution version data");
+ return;
+ } else {
+ cli_trace(cli, "Configuration distribution version: %u",
+ (unsigned int)read_be(read_value_bytes));
+ }
+ read_length = 0;
+ ret = lt_r_mem_data_read(
+ tropic_get_handle(), TROPIC_CONFIG_BACKUP_DISTRIBUTION_VERSION_SLOT,
+ read_value_bytes, sizeof(read_value_bytes), &read_length);
+ if (ret == LT_L3_R_MEM_DATA_READ_SLOT_EMPTY) {
+ cli_trace(cli, "Configuration backup distribution version: empty");
+ } else if (ret != LT_OK) {
+ cli_error(cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_READ,
+ "`lt_r_mem_data_read()` failed with error %s",
+ lt_ret_verbose(ret));
+ return;
+ } else if (read_length != sizeof(read_value_bytes)) {
+ cli_error(
+ cli, PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_LEN,
+ "Unexpected length of configuration backup distribution version data");
+ return;
+ } else {
+ cli_trace(cli, "Configuration backup distribution version: %u",
+ (unsigned int)read_be(read_value_bytes));
+ }
+
cli_ok(cli, "");
}
diff --git a/core/embed/projects/prodtest/error_codes.json b/core/embed/projects/prodtest/error_codes.json
index 43ae8c31..eaef5a29 100644
--- a/core/embed/projects/prodtest/error_codes.json
+++ b/core/embed/projects/prodtest/error_codes.json
@@ -1538,116 +1538,196 @@
},
{
"code": 20120,
- "name": "PRODTEST_ERR_TROPIC_STRESS_MAC_AND_DESTROY",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_CHECK_EXPECTED_CONFIG",
"module": "tropic"
},
{
"code": 20121,
- "name": "PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_CHECK_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20122,
- "name": "PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY_MISMATCH",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_CHECK_BACKUP_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20123,
- "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_KEY_READ",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_EXPECTED_CONFIG",
"module": "tropic"
},
{
"code": 20124,
- "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_CURVE",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_ERASE",
"module": "tropic"
},
{
"code": 20125,
- "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_VERIFY",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_WRITE",
"module": "tropic"
},
{
"code": 20126,
- "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20127,
- "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_GET",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_LEN",
"module": "tropic"
},
{
"code": 20128,
- "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT_MISMATCH",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_MISMATCH",
"module": "tropic"
},
{
"code": 20129,
- "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_UPDATE",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_ERASE",
"module": "tropic"
},
{
"code": 20130,
- "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_MISMATCH",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_NOT_EMPTY",
"module": "tropic"
},
{
"code": 20131,
- "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_ERASE",
+ "name": "PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20132,
- "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_WRITE",
+ "name": "PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20133,
- "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_READ",
+ "name": "PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_LEN",
"module": "tropic"
},
{
"code": 20134,
- "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_MISMATCH",
+ "name": "PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_READ",
"module": "tropic"
},
{
"code": 20135,
- "name": "PRODTEST_ERR_TROPIC_TEST_RNG_ZERO",
+ "name": "PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_LEN",
"module": "tropic"
},
{
"code": 20136,
- "name": "PRODTEST_ERR_TROPIC_TEST_RNG_REPEAT",
+ "name": "PRODTEST_ERR_TROPIC_STRESS_MAC_AND_DESTROY",
"module": "tropic"
},
{
"code": 20137,
- "name": "PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_COUNT",
+ "name": "PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY",
"module": "tropic"
},
{
"code": 20138,
- "name": "PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_RANGE",
+ "name": "PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY_MISMATCH",
"module": "tropic"
},
{
"code": 20139,
- "name": "PRODTEST_ERR_TROPIC_SENSORS_REBOOT",
+ "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_KEY_READ",
"module": "tropic"
},
{
"code": 20140,
- "name": "PRODTEST_ERR_TROPIC_TESTS_CLEANUP_RMEM",
+ "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_CURVE",
"module": "tropic"
},
{
"code": 20141,
- "name": "PRODTEST_ERR_TROPIC_TESTS_CLEANUP_ECC",
+ "name": "PRODTEST_ERR_TROPIC_TEST_SIGN_VERIFY",
"module": "tropic"
},
{
"code": 20142,
+ "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT",
+ "module": "tropic"
+ },
+ {
+ "code": 20143,
+ "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_GET",
+ "module": "tropic"
+ },
+ {
+ "code": 20144,
+ "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT_MISMATCH",
+ "module": "tropic"
+ },
+ {
+ "code": 20145,
+ "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_UPDATE",
+ "module": "tropic"
+ },
+ {
+ "code": 20146,
+ "name": "PRODTEST_ERR_TROPIC_TEST_COUNTER_MISMATCH",
+ "module": "tropic"
+ },
+ {
+ "code": 20147,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_ERASE",
+ "module": "tropic"
+ },
+ {
+ "code": 20148,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_WRITE",
+ "module": "tropic"
+ },
+ {
+ "code": 20149,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_READ",
+ "module": "tropic"
+ },
+ {
+ "code": 20150,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RMEM_MISMATCH",
+ "module": "tropic"
+ },
+ {
+ "code": 20151,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RNG_ZERO",
+ "module": "tropic"
+ },
+ {
+ "code": 20152,
+ "name": "PRODTEST_ERR_TROPIC_TEST_RNG_REPEAT",
+ "module": "tropic"
+ },
+ {
+ "code": 20153,
+ "name": "PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_COUNT",
+ "module": "tropic"
+ },
+ {
+ "code": 20154,
+ "name": "PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_RANGE",
+ "module": "tropic"
+ },
+ {
+ "code": 20155,
+ "name": "PRODTEST_ERR_TROPIC_SENSORS_REBOOT",
+ "module": "tropic"
+ },
+ {
+ "code": 20156,
+ "name": "PRODTEST_ERR_TROPIC_TESTS_CLEANUP_RMEM",
+ "module": "tropic"
+ },
+ {
+ "code": 20157,
+ "name": "PRODTEST_ERR_TROPIC_TESTS_CLEANUP_ECC",
+ "module": "tropic"
+ },
+ {
+ "code": 20158,
"name": "PRODTEST_ERR_TROPIC_TESTS_CLEANUP_COUNTER",
"module": "tropic"
},
diff --git a/core/embed/projects/prodtest/prodtest_error_codes.h b/core/embed/projects/prodtest/prodtest_error_codes.h
index b49bdbb8..bdf23eff 100644
--- a/core/embed/projects/prodtest/prodtest_error_codes.h
+++ b/core/embed/projects/prodtest/prodtest_error_codes.h
@@ -378,29 +378,45 @@ typedef enum {
PRODTEST_ERR_TROPIC_BENCHMARK_MCOUNTER_GET = 20117,
PRODTEST_ERR_TROPIC_BENCHMARK_MCOUNTER_UPDATE = 20118,
PRODTEST_ERR_TROPIC_BENCHMARK_RANDOM_GET = 20119,
- PRODTEST_ERR_TROPIC_STRESS_MAC_AND_DESTROY = 20120,
- PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY = 20121,
- PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY_MISMATCH = 20122,
- PRODTEST_ERR_TROPIC_TEST_SIGN_KEY_READ = 20123,
- PRODTEST_ERR_TROPIC_TEST_SIGN_CURVE = 20124,
- PRODTEST_ERR_TROPIC_TEST_SIGN_VERIFY = 20125,
- PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT = 20126,
- PRODTEST_ERR_TROPIC_TEST_COUNTER_GET = 20127,
- PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT_MISMATCH = 20128,
- PRODTEST_ERR_TROPIC_TEST_COUNTER_UPDATE = 20129,
- PRODTEST_ERR_TROPIC_TEST_COUNTER_MISMATCH = 20130,
- PRODTEST_ERR_TROPIC_TEST_RMEM_ERASE = 20131,
- PRODTEST_ERR_TROPIC_TEST_RMEM_WRITE = 20132,
- PRODTEST_ERR_TROPIC_TEST_RMEM_READ = 20133,
- PRODTEST_ERR_TROPIC_TEST_RMEM_MISMATCH = 20134,
- PRODTEST_ERR_TROPIC_TEST_RNG_ZERO = 20135,
- PRODTEST_ERR_TROPIC_TEST_RNG_REPEAT = 20136,
- PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_COUNT = 20137,
- PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_RANGE = 20138,
- PRODTEST_ERR_TROPIC_SENSORS_REBOOT = 20139,
- PRODTEST_ERR_TROPIC_TESTS_CLEANUP_RMEM = 20140,
- PRODTEST_ERR_TROPIC_TESTS_CLEANUP_ECC = 20141,
- PRODTEST_ERR_TROPIC_TESTS_CLEANUP_COUNTER = 20142,
+ PRODTEST_ERR_TROPIC_LOCK_CHECK_EXPECTED_CONFIG = 20120,
+ PRODTEST_ERR_TROPIC_LOCK_CHECK_DISTR_VERSION_READ = 20121,
+ PRODTEST_ERR_TROPIC_LOCK_CHECK_BACKUP_DISTR_VERSION_READ = 20122,
+ PRODTEST_ERR_TROPIC_LOCK_EXPECTED_CONFIG = 20123,
+ PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_ERASE = 20124,
+ PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_WRITE = 20125,
+ PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_READ = 20126,
+ PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_LEN = 20127,
+ PRODTEST_ERR_TROPIC_LOCK_DISTR_VERSION_MISMATCH = 20128,
+ PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_ERASE = 20129,
+ PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_NOT_EMPTY = 20130,
+ PRODTEST_ERR_TROPIC_LOCK_BACKUP_DISTR_VERSION_READ = 20131,
+ PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_READ = 20132,
+ PRODTEST_ERR_TROPIC_READ_CONFIGS_DISTR_VERSION_LEN = 20133,
+ PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_READ = 20134,
+ PRODTEST_ERR_TROPIC_READ_CONFIGS_BACKUP_DISTR_VERSION_LEN = 20135,
+ PRODTEST_ERR_TROPIC_STRESS_MAC_AND_DESTROY = 20136,
+ PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY = 20137,
+ PRODTEST_ERR_TROPIC_TEST_MAC_AND_DESTROY_MISMATCH = 20138,
+ PRODTEST_ERR_TROPIC_TEST_SIGN_KEY_READ = 20139,
+ PRODTEST_ERR_TROPIC_TEST_SIGN_CURVE = 20140,
+ PRODTEST_ERR_TROPIC_TEST_SIGN_VERIFY = 20141,
+ PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT = 20142,
+ PRODTEST_ERR_TROPIC_TEST_COUNTER_GET = 20143,
+ PRODTEST_ERR_TROPIC_TEST_COUNTER_INIT_MISMATCH = 20144,
+ PRODTEST_ERR_TROPIC_TEST_COUNTER_UPDATE = 20145,
+ PRODTEST_ERR_TROPIC_TEST_COUNTER_MISMATCH = 20146,
+ PRODTEST_ERR_TROPIC_TEST_RMEM_ERASE = 20147,
+ PRODTEST_ERR_TROPIC_TEST_RMEM_WRITE = 20148,
+ PRODTEST_ERR_TROPIC_TEST_RMEM_READ = 20149,
+ PRODTEST_ERR_TROPIC_TEST_RMEM_MISMATCH = 20150,
+ PRODTEST_ERR_TROPIC_TEST_RNG_ZERO = 20151,
+ PRODTEST_ERR_TROPIC_TEST_RNG_REPEAT = 20152,
+ PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_COUNT = 20153,
+ PRODTEST_ERR_TROPIC_EXPLICIT_SLOT_RANGE = 20154,
+ PRODTEST_ERR_TROPIC_SENSORS_REBOOT = 20155,
+ PRODTEST_ERR_TROPIC_TESTS_CLEANUP_RMEM = 20156,
+ PRODTEST_ERR_TROPIC_TESTS_CLEANUP_ECC = 20157,
+ PRODTEST_ERR_TROPIC_TESTS_CLEANUP_COUNTER = 20158,
// === unit-test (21000–21999) ===
PRODTEST_ERR_UNIT_TEST_FAILED = 21010,
diff --git a/core/embed/projects/secmon/main.c b/core/embed/projects/secmon/main.c
index 022922f1..1d57d13b 100644
--- a/core/embed/projects/secmon/main.c
+++ b/core/embed/projects/secmon/main.c
@@ -126,7 +126,14 @@ static void drivers_init(void) {
#ifdef USE_TROPIC
tropic_init();
-#endif
+#if defined(USE_SECRET) && defined(LOCKABLE_BOOTLOADER)
+ if (secfalse != secret_bootloader_locked()) {
+ ensure(tropic_ensure_configuration(), "Tropic configuration check failed");
+ }
+#else
+ ensure(tropic_ensure_configuration(), "Tropic configuration check failed");
+#endif // USE_SECRET && LOCKABLE_BOOTLOADER
+#endif // USE_TROPIC
#ifdef USE_BACKUP_RAM
backup_ram_init();
diff --git a/core/embed/projects/unix/main_main.c b/core/embed/projects/unix/main_main.c
index b0a29db6..7b766d9f 100644
--- a/core/embed/projects/unix/main_main.c
+++ b/core/embed/projects/unix/main_main.c
@@ -99,6 +99,7 @@ static void drivers_init(void) {
#ifdef USE_TROPIC
tropic_init();
+ ensure(tropic_ensure_configuration(), "Tropic configuration check failed");
#endif
usb_configure(NULL);
diff --git a/core/embed/sec/tropic/build.rs b/core/embed/sec/tropic/build.rs
index 7e7e2628..c2705e3f 100644
--- a/core/embed/sec/tropic/build.rs
+++ b/core/embed/sec/tropic/build.rs
@@ -23,7 +23,7 @@ pub fn def_module(lib: &mut CLibrary) -> Result<()> {
bail_unsupported!();
}
- lib.add_sources(["tropic/tropic.c"]);
+ lib.add_sources(["tropic/tropic.c", "tropic/config/tropic_configs.c"]);
lib.add_sources_in_dir(
&tropic_dir,
diff --git a/core/embed/sec/tropic/config/tropic_configs.c b/core/embed/sec/tropic/config/tropic_configs.c
new file mode 100644
index 00000000..295ce69a
--- /dev/null
+++ b/core/embed/sec/tropic/config/tropic_configs.c
@@ -0,0 +1,213 @@
+// generated from `tropic_configs.json` by `tropic_configs.c.mako`
+// (by running `make templates` in `core`)
+// Do not edit manually!
+
+/*
+ * This file is part of the Trezor project, https://trezor.io/
+ *
+ * Copyright (c) SatoshiLabs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sec/tropic_configs.h>
+
+// See the documentation of Tropic configurations in
+// `docs/core/misc/tropic_configs.md` for more details.
+
+// clang-format off
+// Count check: the compiler resolves LT_CONFIG_OBJ_CNT; the numbers on the left
+// are computed from tropic_configs.json at template generation time.
+// This catches a missing category in the JSON (too-few silently zero-fills in
+// C).
+#if 27 != LT_CONFIG_OBJ_CNT
+#error "irreversible_configurations category count in tropic_configs.json does not match LT_CONFIG_OBJ_CNT"
+#endif
+#if 27 != LT_CONFIG_OBJ_CNT
+#error "reversible_configurations category count in tropic_configs.json does not match LT_CONFIG_OBJ_CNT"
+#endif
+
+const tropic_versioned_config_t tropic_irreversible_configs[] = {
+ {
+ .version = 0,
+ .config = {
+ .obj = {
+ 0xFFFFFFF9U,
+ 0xFFFFFFFFU,
+ 0xFFFFFFFEU,
+ 0xFFFFFFFFU,
+ 0xFFFFFFFFU,
+ 0xFCFCFCFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFFFFFFFCU,
+ 0xFFFFFEFEU,
+ 0xFFFFFEFEU,
+ 0xFFFFFEFEU,
+ 0xFFFFFFFEU,
+ 0xFEFEFCFCU,
+ 0xFEFEFCFEU,
+ 0xFEFEFCFEU,
+ 0xFFFFFFFEU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFEFEFCFCU,
+ }
+ },
+ },
+ {
+ .version = 1,
+ .config = {
+ .obj = {
+ 0xFFFFFFF9U,
+ 0xFFFC0000U,
+ 0xFFFFFFFEU,
+ 0xFFFFFFFFU,
+ 0xFFFFFFFFU,
+ 0xFCFCFCFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFFFFFFFCU,
+ 0xFFFFFEFEU,
+ 0xFFFFFEFEU,
+ 0xFFFFFEFEU,
+ 0xFFFFFFFEU,
+ 0xFEFEFCFCU,
+ 0xFEFEFCFEU,
+ 0xFEFEFCFEU,
+ 0xFFFFFFFEU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFCU,
+ 0xFEFEFEFEU,
+ 0xFEFEFEFEU,
+ 0xFEFEFCFCU,
+ }
+ },
+ },
+};
+
+const tropic_versioned_config_t tropic_reversible_configs[] = {
+ {
+ .version = 0,
+ .config = {
+ .obj = {
+ 0x00000009U,
+ 0,
+ 0,
+ 0,
+ 0x00000001U,
+ 0x04040404U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x00000004U,
+ 0x00000606U,
+ 0x00000606U,
+ 0x00000606U,
+ 0x00000006U,
+ 0x06060404U,
+ 0x06060406U,
+ 0x06060406U,
+ 0x00000006U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x06060404U,
+ }
+ },
+ },
+ {
+ .version = 1,
+ .config = {
+ .obj = {
+ 0x00000001U,
+ 0,
+ 0,
+ 0,
+ 0x00000001U,
+ 0x04040404U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x00000004U,
+ 0x00000606U,
+ 0x00000606U,
+ 0x00000606U,
+ 0x00000006U,
+ 0x06060404U,
+ 0x06060406U,
+ 0x06060406U,
+ 0x00000006U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060604U,
+ 0x06060606U,
+ 0x06060606U,
+ 0x06060404U,
+ }
+ },
+ },
+};
+
+// TODO: This is hardcoded for now. We should generate it from a JSON file in the future.
+
+const tropic_config_distribution_t tropic_config_distributions[] = {
+ {
+ .distribution_version = 0,
+ .min_reversible_version = 0,
+ .max_reversible_version = 1,
+ .irreversible_version = 0,
+ },
+ {
+ .distribution_version = 1,
+ .min_reversible_version = 1,
+ .max_reversible_version = 1,
+ .irreversible_version = 1,
+ },
+};
+
+const uint32_t tropic_prodtest_config_distribution_version = 0;
+
+// clang-format on
+
+const size_t tropic_reversible_config_count =
+ sizeof(tropic_reversible_configs) / sizeof(tropic_reversible_configs[0]);
+
+const size_t tropic_irreversible_config_count =
+ sizeof(tropic_irreversible_configs) /
+ sizeof(tropic_irreversible_configs[0]);
+
+const size_t tropic_config_distribution_count =
+ sizeof(tropic_config_distributions) /
+ sizeof(tropic_config_distributions[0]);
diff --git a/core/embed/sec/tropic/config/tropic_configs.c.mako b/core/embed/sec/tropic/config/tropic_configs.c.mako
new file mode 100644
index 00000000..19beb820
--- /dev/null
+++ b/core/embed/sec/tropic/config/tropic_configs.c.mako
@@ -0,0 +1,168 @@
+// generated from `tropic_configs.json` by `tropic_configs.c.mako`
+// (by running `make templates` in `core`)
+// Do not edit manually!
+
+/*
+ * This file is part of the Trezor project, https://trezor.io/
+ *
+ * Copyright (c) SatoshiLabs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sec/tropic_configs.h>
+<%
+def all_except(selected_bits: list[int]) -> str:
+ result = 0xFFFFFFFF
+ for bit in selected_bits:
+ result &= ~(1 << bit)
+ return f"0x{result:08X}U,"
+
+def bits(selected_bits: list[int]) -> str:
+ result = 0
+ for bit in selected_bits:
+ result |= (1 << bit)
+ return f"0x{result:08X}U," if result != 0 else "0,"
+
+def uap_all_except(configs, category):
+ selected_bits = []
+ config = configs["config"]
+ for key in range(4):
+ for details in config[category]['setting'][f'pairing_key_{key}'].values():
+ if not details['value']:
+ selected_bits.append(details['bit'])
+ return all_except(selected_bits)
+
+def uap_bits(configs, category):
+ selected_bits = []
+ config = configs["config"]
+ for key in range(4):
+ for details in config[category]['setting'][f'pairing_key_{key}'].values():
+ if details['value']:
+ selected_bits.append(details['bit'])
+ return bits(selected_bits)
+
+import json
+in_filename = ROOT / "core" / "embed" / "sec" / "tropic" / "config" / "tropic_configs.json"
+with open(in_filename, "r") as f:
+ configs = json.load(f)
+reversible_configs = configs["reversible_configurations"]
+irreversible_configs = configs["irreversible_configurations"]
+i_names = [category for category in irreversible_configs[0]['config'].keys() if not('uap' in category)]
+r_names = [category for category in reversible_configs[0]['config'].keys() if not('uap' in category)]
+
+i_uap_names = [category for category in irreversible_configs[0]['config'].keys() if 'uap' in category]
+r_uap_names = [category for category in reversible_configs[0]['config'].keys() if 'uap' in category]
+
+# Verify that category addresses are strictly ascending in every version.
+# The count against LT_CONFIG_OBJ_CNT is checked at C compile time via #if below.
+for _cfg_name, _cfg_list in [("irreversible", irreversible_configs), ("reversible", reversible_configs)]:
+ for _cfg_version in _cfg_list:
+ _prev_addr = -1
+ for _cat, _cat_data in _cfg_version['config'].items():
+ _addr = int(_cat_data['address'], 16)
+ if _addr <= _prev_addr:
+ raise ValueError(
+ f"{_cfg_name} config v{_cfg_version['version']}: "
+ f"category '{_cat}' at address {hex(_addr)} is not in strictly "
+ "ascending order — categories must match TROPIC_CONFIG_ADDRS ordering"
+ )
+ _prev_addr = _addr
+
+_i_obj_cnt = len(irreversible_configs[0]['config'])
+_r_obj_cnt = len(reversible_configs[0]['config'])
+
+%>
+// See the documentation of Tropic configurations in
+// `docs/core/misc/tropic_configs.md` for more details.
+
+// clang-format off
+// Count check: the compiler resolves LT_CONFIG_OBJ_CNT; the numbers on the left
+// are computed from tropic_configs.json at template generation time.
+// This catches a missing category in the JSON (too-few silently zero-fills in
+// C).
+#if ${_i_obj_cnt} != LT_CONFIG_OBJ_CNT
+#error "irreversible_configurations category count in tropic_configs.json does not match LT_CONFIG_OBJ_CNT"
+#endif
+#if ${_r_obj_cnt} != LT_CONFIG_OBJ_CNT
+#error "reversible_configurations category count in tropic_configs.json does not match LT_CONFIG_OBJ_CNT"
+#endif
+
+const tropic_versioned_config_t tropic_irreversible_configs[] = {
+% for cfg_version in irreversible_configs:
+ {
+ .version = ${cfg_version["version"]},
+ .config = {
+ .obj = {
+% for category in i_names:
+ ${all_except([c['bit'] for c in cfg_version["config"][category]["setting"].values() if not(c['value'])])}
+% endfor
+% for category in i_uap_names:
+ ${uap_all_except(cfg_version, category)}
+% endfor
+ }
+ },
+ },
+% endfor
+};
+
+const tropic_versioned_config_t tropic_reversible_configs[] = {
+% for cfg_version in reversible_configs:
+ {
+ .version = ${cfg_version["version"]},
+ .config = {
+ .obj = {
+% for category in r_names:
+ ${bits([c['bit'] for c in cfg_version["config"][category]["setting"].values() if c['value']])}
+% endfor
+% for category in r_uap_names:
+ ${uap_bits(cfg_version, category)}
+% endfor
+ }
+ },
+ },
+% endfor
+};
+
+// TODO: This is hardcoded for now. We should generate it from a JSON file in the future.
+
+const tropic_config_distribution_t tropic_config_distributions[] = {
+ {
+ .distribution_version = 0,
+ .min_reversible_version = 0,
+ .max_reversible_version = 1,
+ .irreversible_version = 0,
+ },
+ {
+ .distribution_version = 1,
+ .min_reversible_version = 1,
+ .max_reversible_version = 1,
+ .irreversible_version = 1,
+ },
+};
+
+const uint32_t tropic_prodtest_config_distribution_version = 0;
+
+// clang-format on
+
+const size_t tropic_reversible_config_count =
+ sizeof(tropic_reversible_configs) / sizeof(tropic_reversible_configs[0]);
+
+const size_t tropic_irreversible_config_count =
+ sizeof(tropic_irreversible_configs) /
+ sizeof(tropic_irreversible_configs[0]);
+
+const size_t tropic_config_distribution_count =
+ sizeof(tropic_config_distributions) /
+ sizeof(tropic_config_distributions[0]);
diff --git a/core/embed/sec/tropic/config/tropic_configs.json b/core/embed/sec/tropic/config/tropic_configs.json
new file mode 100644
index 00000000..d2217fa4
--- /dev/null
+++ b/core/embed/sec/tropic/config/tropic_configs.json
@@ -0,0 +1,6406 @@
+{
+ "irreversible_configurations": [
+ {
+ "version": 0,
+ "config":{
+ "cfg_start_up": {
+ "address": "0x00",
+ "setting": {
+ "rfu_1": {
+ "value": true,
+ "bit": 0
+ },
+ "mbist_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "test_on"
+ },
+ "rngtest_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "test_on"
+ },
+ "maintenance_ena": {
+ "value": true,
+ "bit": 3,
+ "comment": "maintenance_allowed"
+ }
+ }
+ },
+ "cfg_sensors": {
+ "address": "0x08",
+ "setting": {
+ "ptrng0_test_dis": {
+ "value": true,
+ "bit": 0,
+ "comment": "no_action"
+ },
+ "ptrng1_test_dis": {
+ "value": true,
+ "bit": 1,
+ "comment": "no_action"
+ },
+ "oscillator_mon_dis": {
+ "value": true,
+ "bit": 2,
+ "comment": "no_action"
+ },
+ "shield_dis": {
+ "value": true,
+ "bit": 3,
+ "comment": "no_action"
+ },
+ "voltage_mon_dis": {
+ "value": true,
+ "bit": 4,
+ "comment": "no_action"
+ },
+ "glitch_det_dis": {
+ "value": true,
+ "bit": 5,
+ "comment": "no_action"
+ },
+ "temp_sens_dis": {
+ "value": true,
+ "bit": 6,
+ "comment": "no_action"
+ },
+ "laser_det_dis": {
+ "value": true,
+ "bit": 7,
+ "comment": "no_action"
+ },
+ "em_pulse_det_dis": {
+ "value": true,
+ "bit": 8,
+ "comment": "no_action"
+ },
+ "cpu_alert_dis": {
+ "value": true,
+ "bit": 9,
+ "comment": "no_action"
+ },
+ "pin_verif_bit_flip_dis": {
+ "value": true,
+ "bit": 10,
+ "comment": "no_action"
+ },
+ "scb_bit_flip_dis": {
+ "value": true,
+ "bit": 11,
+ "comment": "no_action"
+ },
+ "cpb_bit_flip_dis": {
+ "value": true,
+ "bit": 12,
+ "comment": "no_action"
+ },
+ "ecc_bit_flip_dis": {
+ "value": true,
+ "bit": 13,
+ "comment": "no_action"
+ },
+ "r_mem_bit_flip_dis": {
+ "value": true,
+ "bit": 14,
+ "comment": "no_action"
+ },
+ "ekdb_bit_flip_dis": {
+ "value": true,
+ "bit": 15,
+ "comment": "no_action"
+ },
+ "i_mem_bit_flip_dis": {
+ "value": true,
+ "bit": 16,
+ "comment": "no_action"
+ },
+ "platform_bit_flip_dis": {
+ "value": true,
+ "bit": 17,
+ "comment": "no_action"
+ }
+ }
+ },
+ "cfg_debug": {
+ "address": "0x10",
+ "setting": {
+ "fw_log_en": {
+ "value": false,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_gpo": {
+ "address": "0x14",
+ "setting": {}
+ },
+ "cfg_sleep_mode": {
+ "address": "0x18",
+ "setting": {
+ "sleep_mode_en": {
+ "value": true,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_uap_pairing_key_write": {
+ "address": "0x20",
+ "setting": {
+ "pairing_key_0": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 1
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 9
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 17
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_read": {
+ "address": "0x24",
+ "setting": {
+ "pairing_key_0": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_invalidate": {
+ "address": "0x28",
+ "setting": {
+ "pairing_key_0": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_write_erase": {
+ "address": "0x30",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_read": {
+ "address": "0x34",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_write": {
+ "address": "0x40",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_read": {
+ "address": "0x44",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_ping": {
+ "address": "0x100",
+ "setting": {
+ "pairing_key_0": {
+ "ping": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "ping": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "ping": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "ping": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_write": {
+ "address": "0x110",
+ "setting": {
+ "pairing_key_0": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 1
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_read": {
+ "address": "0x114",
+ "setting": {
+ "pairing_key_0": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_erase": {
+ "address": "0x118",
+ "setting": {
+ "pairing_key_0": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_random_value_get": {
+ "address": "0x120",
+ "setting": {
+ "pairing_key_0": {
+ "random_value_get": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "random_value_get": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "random_value_get": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "random_value_get": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_generate": {
+ "address": "0x130",
+ "setting": {
+ "pairing_key_0": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_store": {
+ "address": "0x134",
+ "setting": {
+ "pairing_key_0": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_read": {
+ "address": "0x138",
+ "setting": {
+ "pairing_key_0": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_erase": {
+ "address": "0x13c",
+ "setting": {
+ "pairing_key_0": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecdsa_sign": {
+ "address": "0x140",
+ "setting": {
+ "pairing_key_0": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_eddsa_sign": {
+ "address": "0x144",
+ "setting": {
+ "pairing_key_0": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_init": {
+ "address": "0x150",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_init_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_init_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_init_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 1
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_get": {
+ "address": "0x154",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_get_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_get_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_get_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_get_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_update": {
+ "address": "0x158",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_update_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_update_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_update_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_update_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mac_and_destroy": {
+ "address": "0x160",
+ "setting": {
+ "pairing_key_0": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 0
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 8
+ },
+ "macandd_64_95": {
+ "value": false,
+ "bit": 16
+ },
+ "macandd_96_127": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 1
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 9
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 17
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "macandd_0_31": {
+ "value": true,
+ "bit": 2
+ },
+ "macandd_32_63": {
+ "value": true,
+ "bit": 10
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 18
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "macandd_0_31": {
+ "value": true,
+ "bit": 3
+ },
+ "macandd_32_63": {
+ "value": true,
+ "bit": 11
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 19
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "version": 1,
+ "config":{
+ "cfg_start_up": {
+ "address": "0x00",
+ "setting": {
+ "rfu_1": {
+ "value": true,
+ "bit": 0
+ },
+ "mbist_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "test_on"
+ },
+ "rngtest_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "test_on"
+ },
+ "maintenance_ena": {
+ "value": true,
+ "bit": 3,
+ "comment": "maintenance_allowed"
+ }
+ }
+ },
+ "cfg_sensors": {
+ "address": "0x08",
+ "setting": {
+ "ptrng0_test_dis": {
+ "value": false,
+ "bit": 0,
+ "comment": "enter_alarm_mode"
+ },
+ "ptrng1_test_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "enter_alarm_mode"
+ },
+ "oscillator_mon_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "enter_alarm_mode"
+ },
+ "shield_dis": {
+ "value": false,
+ "bit": 3,
+ "comment": "enter_alarm_mode"
+ },
+ "voltage_mon_dis": {
+ "value": false,
+ "bit": 4,
+ "comment": "enter_alarm_mode"
+ },
+ "glitch_det_dis": {
+ "value": false,
+ "bit": 5,
+ "comment": "enter_alarm_mode"
+ },
+ "temp_sens_dis": {
+ "value": false,
+ "bit": 6,
+ "comment": "enter_alarm_mode"
+ },
+ "laser_det_dis": {
+ "value": false,
+ "bit": 7,
+ "comment": "enter_alarm_mode"
+ },
+ "em_pulse_det_dis": {
+ "value": false,
+ "bit": 8,
+ "comment": "enter_alarm_mode"
+ },
+ "cpu_alert_dis": {
+ "value": false,
+ "bit": 9,
+ "comment": "enter_alarm_mode"
+ },
+ "pin_verif_bit_flip_dis": {
+ "value": false,
+ "bit": 10,
+ "comment": "enter_alarm_mode"
+ },
+ "scb_bit_flip_dis": {
+ "value": false,
+ "bit": 11,
+ "comment": "enter_alarm_mode"
+ },
+ "cpb_bit_flip_dis": {
+ "value": false,
+ "bit": 12,
+ "comment": "enter_alarm_mode"
+ },
+ "ecc_bit_flip_dis": {
+ "value": false,
+ "bit": 13,
+ "comment": "enter_alarm_mode"
+ },
+ "r_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 14,
+ "comment": "enter_alarm_mode"
+ },
+ "ekdb_bit_flip_dis": {
+ "value": false,
+ "bit": 15,
+ "comment": "enter_alarm_mode"
+ },
+ "i_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 16,
+ "comment": "enter_alarm_mode"
+ },
+ "platform_bit_flip_dis": {
+ "value": false,
+ "bit": 17,
+ "comment": "enter_alarm_mode"
+ }
+ }
+ },
+ "cfg_debug": {
+ "address": "0x10",
+ "setting": {
+ "fw_log_en": {
+ "value": false,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_gpo": {
+ "address": "0x14",
+ "setting": {}
+ },
+ "cfg_sleep_mode": {
+ "address": "0x18",
+ "setting": {
+ "sleep_mode_en": {
+ "value": true,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_uap_pairing_key_write": {
+ "address": "0x20",
+ "setting": {
+ "pairing_key_0": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 1
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 9
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 17
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_read": {
+ "address": "0x24",
+ "setting": {
+ "pairing_key_0": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_invalidate": {
+ "address": "0x28",
+ "setting": {
+ "pairing_key_0": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 3
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 11
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 19
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_write_erase": {
+ "address": "0x30",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_read": {
+ "address": "0x34",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_write": {
+ "address": "0x40",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_read": {
+ "address": "0x44",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 3
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_ping": {
+ "address": "0x100",
+ "setting": {
+ "pairing_key_0": {
+ "ping": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "ping": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "ping": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "ping": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_write": {
+ "address": "0x110",
+ "setting": {
+ "pairing_key_0": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 1
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_read": {
+ "address": "0x114",
+ "setting": {
+ "pairing_key_0": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_erase": {
+ "address": "0x118",
+ "setting": {
+ "pairing_key_0": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 3
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 11
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 19
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_random_value_get": {
+ "address": "0x120",
+ "setting": {
+ "pairing_key_0": {
+ "random_value_get": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "random_value_get": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "random_value_get": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "random_value_get": {
+ "value": true,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_generate": {
+ "address": "0x130",
+ "setting": {
+ "pairing_key_0": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_store": {
+ "address": "0x134",
+ "setting": {
+ "pairing_key_0": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_read": {
+ "address": "0x138",
+ "setting": {
+ "pairing_key_0": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_erase": {
+ "address": "0x13c",
+ "setting": {
+ "pairing_key_0": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecdsa_sign": {
+ "address": "0x140",
+ "setting": {
+ "pairing_key_0": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_eddsa_sign": {
+ "address": "0x144",
+ "setting": {
+ "pairing_key_0": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 3
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 11
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 19
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_init": {
+ "address": "0x150",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_init_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_init_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_init_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 1
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_get": {
+ "address": "0x154",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_get_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_get_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_get_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_get_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_update": {
+ "address": "0x158",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_update_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_update_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_update_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_update_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 3
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 11
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 19
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mac_and_destroy": {
+ "address": "0x160",
+ "setting": {
+ "pairing_key_0": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 0
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 8
+ },
+ "macandd_64_95": {
+ "value": false,
+ "bit": 16
+ },
+ "macandd_96_127": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 1
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 9
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 17
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "macandd_0_31": {
+ "value": true,
+ "bit": 2
+ },
+ "macandd_32_63": {
+ "value": true,
+ "bit": 10
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 18
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "macandd_0_31": {
+ "value": true,
+ "bit": 3
+ },
+ "macandd_32_63": {
+ "value": true,
+ "bit": 11
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 19
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 27
+ }
+ }
+ }
+ }
+ }
+ }
+ ],
+ "reversible_configurations": [
+ {
+ "version": 0,
+ "config":{
+ "cfg_start_up": {
+ "address": "0x00",
+ "setting": {
+ "rfu_1": {
+ "value": true,
+ "bit": 0
+ },
+ "mbist_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "test_on"
+ },
+ "rngtest_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "test_on"
+ },
+ "maintenance_ena": {
+ "value": true,
+ "bit": 3,
+ "comment": "maintenance_allowed"
+ }
+ }
+ },
+ "cfg_sensors": {
+ "address": "0x08",
+ "setting": {
+ "ptrng0_test_dis": {
+ "value": false,
+ "bit": 0,
+ "comment": "enter_alarm_mode"
+ },
+ "ptrng1_test_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "enter_alarm_mode"
+ },
+ "oscillator_mon_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "enter_alarm_mode"
+ },
+ "shield_dis": {
+ "value": false,
+ "bit": 3,
+ "comment": "enter_alarm_mode"
+ },
+ "voltage_mon_dis": {
+ "value": false,
+ "bit": 4,
+ "comment": "enter_alarm_mode"
+ },
+ "glitch_det_dis": {
+ "value": false,
+ "bit": 5,
+ "comment": "enter_alarm_mode"
+ },
+ "temp_sens_dis": {
+ "value": false,
+ "bit": 6,
+ "comment": "enter_alarm_mode"
+ },
+ "laser_det_dis": {
+ "value": false,
+ "bit": 7,
+ "comment": "enter_alarm_mode"
+ },
+ "em_pulse_det_dis": {
+ "value": false,
+ "bit": 8,
+ "comment": "enter_alarm_mode"
+ },
+ "cpu_alert_dis": {
+ "value": false,
+ "bit": 9,
+ "comment": "enter_alarm_mode"
+ },
+ "pin_verif_bit_flip_dis": {
+ "value": false,
+ "bit": 10,
+ "comment": "enter_alarm_mode"
+ },
+ "scb_bit_flip_dis": {
+ "value": false,
+ "bit": 11,
+ "comment": "enter_alarm_mode"
+ },
+ "cpb_bit_flip_dis": {
+ "value": false,
+ "bit": 12,
+ "comment": "enter_alarm_mode"
+ },
+ "ecc_bit_flip_dis": {
+ "value": false,
+ "bit": 13,
+ "comment": "enter_alarm_mode"
+ },
+ "r_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 14,
+ "comment": "enter_alarm_mode"
+ },
+ "ekdb_bit_flip_dis": {
+ "value": false,
+ "bit": 15,
+ "comment": "enter_alarm_mode"
+ },
+ "i_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 16,
+ "comment": "enter_alarm_mode"
+ },
+ "platform_bit_flip_dis": {
+ "value": false,
+ "bit": 17,
+ "comment": "enter_alarm_mode"
+ }
+ }
+ },
+ "cfg_debug": {
+ "address": "0x10",
+ "setting": {
+ "fw_log_en": {
+ "value": false,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_gpo": {
+ "address": "0x14",
+ "setting": {}
+ },
+ "cfg_sleep_mode": {
+ "address": "0x18",
+ "setting": {
+ "sleep_mode_en": {
+ "value": true,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_uap_pairing_key_write": {
+ "address": "0x20",
+ "setting": {
+ "pairing_key_0": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 1
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 9
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 17
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_read": {
+ "address": "0x24",
+ "setting": {
+ "pairing_key_0": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_invalidate": {
+ "address": "0x28",
+ "setting": {
+ "pairing_key_0": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_write_erase": {
+ "address": "0x30",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_read": {
+ "address": "0x34",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_write": {
+ "address": "0x40",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_read": {
+ "address": "0x44",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_ping": {
+ "address": "0x100",
+ "setting": {
+ "pairing_key_0": {
+ "ping": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "ping": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "ping": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "ping": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_write": {
+ "address": "0x110",
+ "setting": {
+ "pairing_key_0": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 1
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_read": {
+ "address": "0x114",
+ "setting": {
+ "pairing_key_0": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_erase": {
+ "address": "0x118",
+ "setting": {
+ "pairing_key_0": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_random_value_get": {
+ "address": "0x120",
+ "setting": {
+ "pairing_key_0": {
+ "random_value_get": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "random_value_get": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "random_value_get": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "random_value_get": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_generate": {
+ "address": "0x130",
+ "setting": {
+ "pairing_key_0": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_store": {
+ "address": "0x134",
+ "setting": {
+ "pairing_key_0": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_read": {
+ "address": "0x138",
+ "setting": {
+ "pairing_key_0": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_erase": {
+ "address": "0x13c",
+ "setting": {
+ "pairing_key_0": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecdsa_sign": {
+ "address": "0x140",
+ "setting": {
+ "pairing_key_0": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_eddsa_sign": {
+ "address": "0x144",
+ "setting": {
+ "pairing_key_0": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_init": {
+ "address": "0x150",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_init_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_init_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_init_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 1
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 3
+ },
+ "mcounter_init_4_7": {
+ "value": false,
+ "bit": 11
+ },
+ "mcounter_init_8_11": {
+ "value": false,
+ "bit": 19
+ },
+ "mcounter_init_12_15": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_get": {
+ "address": "0x154",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_get_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_get_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_get_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_get_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_get_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_get_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_get_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_get_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_get_0_3": {
+ "value": false,
+ "bit": 3
+ },
+ "mcounter_get_4_7": {
+ "value": false,
+ "bit": 11
+ },
+ "mcounter_get_8_11": {
+ "value": false,
+ "bit": 19
+ },
+ "mcounter_get_12_15": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_update": {
+ "address": "0x158",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_update_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_update_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_update_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_update_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 1
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_update_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_update_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_update_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_update_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_update_0_3": {
+ "value": false,
+ "bit": 3
+ },
+ "mcounter_update_4_7": {
+ "value": false,
+ "bit": 11
+ },
+ "mcounter_update_8_11": {
+ "value": false,
+ "bit": 19
+ },
+ "mcounter_update_12_15": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mac_and_destroy": {
+ "address": "0x160",
+ "setting": {
+ "pairing_key_0": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 0
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 8
+ },
+ "macandd_64_95": {
+ "value": false,
+ "bit": 16
+ },
+ "macandd_96_127": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 1
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 9
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 17
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "macandd_0_31": {
+ "value": true,
+ "bit": 2
+ },
+ "macandd_32_63": {
+ "value": true,
+ "bit": 10
+ },
+ "macandd_64_95": {
+ "value": true,
+ "bit": 18
+ },
+ "macandd_96_127": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "macandd_0_31": {
+ "value": false,
+ "bit": 3
+ },
+ "macandd_32_63": {
+ "value": false,
+ "bit": 11
+ },
+ "macandd_64_95": {
+ "value": false,
+ "bit": 19
+ },
+ "macandd_96_127": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "version": 1,
+ "config": {
+ "cfg_start_up": {
+ "address": "0x00",
+ "setting": {
+ "rfu_1": {
+ "value": true,
+ "bit": 0
+ },
+ "mbist_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "test_on"
+ },
+ "rngtest_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "test_on"
+ },
+ "maintenance_ena": {
+ "value": false,
+ "bit": 3,
+ "comment": "maintenance_forbidden"
+ }
+ }
+ },
+ "cfg_sensors": {
+ "address": "0x08",
+ "setting": {
+ "ptrng0_test_dis": {
+ "value": false,
+ "bit": 0,
+ "comment": "enter_alarm_mode"
+ },
+ "ptrng1_test_dis": {
+ "value": false,
+ "bit": 1,
+ "comment": "enter_alarm_mode"
+ },
+ "oscillator_mon_dis": {
+ "value": false,
+ "bit": 2,
+ "comment": "enter_alarm_mode"
+ },
+ "shield_dis": {
+ "value": false,
+ "bit": 3,
+ "comment": "enter_alarm_mode"
+ },
+ "voltage_mon_dis": {
+ "value": false,
+ "bit": 4,
+ "comment": "enter_alarm_mode"
+ },
+ "glitch_det_dis": {
+ "value": false,
+ "bit": 5,
+ "comment": "enter_alarm_mode"
+ },
+ "temp_sens_dis": {
+ "value": false,
+ "bit": 6,
+ "comment": "enter_alarm_mode"
+ },
+ "laser_det_dis": {
+ "value": false,
+ "bit": 7,
+ "comment": "enter_alarm_mode"
+ },
+ "em_pulse_det_dis": {
+ "value": false,
+ "bit": 8,
+ "comment": "enter_alarm_mode"
+ },
+ "cpu_alert_dis": {
+ "value": false,
+ "bit": 9,
+ "comment": "enter_alarm_mode"
+ },
+ "pin_verif_bit_flip_dis": {
+ "value": false,
+ "bit": 10,
+ "comment": "enter_alarm_mode"
+ },
+ "scb_bit_flip_dis": {
+ "value": false,
+ "bit": 11,
+ "comment": "enter_alarm_mode"
+ },
+ "cpb_bit_flip_dis": {
+ "value": false,
+ "bit": 12,
+ "comment": "enter_alarm_mode"
+ },
+ "ecc_bit_flip_dis": {
+ "value": false,
+ "bit": 13,
+ "comment": "enter_alarm_mode"
+ },
+ "r_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 14,
+ "comment": "enter_alarm_mode"
+ },
+ "ekdb_bit_flip_dis": {
+ "value": false,
+ "bit": 15,
+ "comment": "enter_alarm_mode"
+ },
+ "i_mem_bit_flip_dis": {
+ "value": false,
+ "bit": 16,
+ "comment": "enter_alarm_mode"
+ },
+ "platform_bit_flip_dis": {
+ "value": false,
+ "bit": 17,
+ "comment": "enter_alarm_mode"
+ }
+ }
+ },
+ "cfg_debug": {
+ "address": "0x10",
+ "setting": {
+ "fw_log_en": {
+ "value": false,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_gpo": {
+ "address": "0x14",
+ "setting": {}
+ },
+ "cfg_sleep_mode": {
+ "address": "0x18",
+ "setting": {
+ "sleep_mode_en": {
+ "value": true,
+ "bit": 0
+ }
+ }
+ },
+ "cfg_uap_pairing_key_write": {
+ "address": "0x20",
+ "setting": {
+ "pairing_key_0": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 1
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 9
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 17
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "write_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "write_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "write_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "write_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "write_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "write_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_read": {
+ "address": "0x24",
+ "setting": {
+ "pairing_key_0": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "read_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "read_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "read_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "read_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "read_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "read_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_pairing_key_invalidate": {
+ "address": "0x28",
+ "setting": {
+ "pairing_key_0": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 0
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 8
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 16
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 1
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 9
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 17
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "invalidate_pkey_slot_0": {
+ "value": true,
+ "bit": 2
+ },
+ "invalidate_pkey_slot_1": {
+ "value": true,
+ "bit": 10
+ },
+ "invalidate_pkey_slot_2": {
+ "value": true,
+ "bit": 18
+ },
+ "invalidate_pkey_slot_3": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "invalidate_pkey_slot_0": {
+ "value": false,
+ "bit": 3
+ },
+ "invalidate_pkey_slot_1": {
+ "value": false,
+ "bit": 11
+ },
+ "invalidate_pkey_slot_2": {
+ "value": false,
+ "bit": 19
+ },
+ "invalidate_pkey_slot_3": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_write_erase": {
+ "address": "0x30",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "r_config_write_erase": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "r_config_write_erase": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_config_read": {
+ "address": "0x34",
+ "setting": {
+ "pairing_key_0": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "r_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "r_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "r_config_read_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "r_config_read_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_write": {
+ "address": "0x40",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_write_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_write_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_write_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "i_config_write_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_i_config_read": {
+ "address": "0x44",
+ "setting": {
+ "pairing_key_0": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 0
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 8
+ }
+ },
+ "pairing_key_1": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 1
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 9
+ }
+ },
+ "pairing_key_2": {
+ "i_config_read_cfg": {
+ "value": true,
+ "bit": 2
+ },
+ "i_config_read_func": {
+ "value": true,
+ "bit": 10
+ }
+ },
+ "pairing_key_3": {
+ "i_config_read_cfg": {
+ "value": false,
+ "bit": 3
+ },
+ "i_config_read_func": {
+ "value": false,
+ "bit": 11
+ }
+ }
+ }
+ },
+ "cfg_uap_ping": {
+ "address": "0x100",
+ "setting": {
+ "pairing_key_0": {
+ "ping": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "ping": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "ping": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "ping": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_write": {
+ "address": "0x110",
+ "setting": {
+ "pairing_key_0": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 1
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "write_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "write_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "write_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "write_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "write_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "write_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "write_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "write_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_read": {
+ "address": "0x114",
+ "setting": {
+ "pairing_key_0": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "read_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "read_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "read_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "read_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "read_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "read_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_r_mem_data_erase": {
+ "address": "0x118",
+ "setting": {
+ "pairing_key_0": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 9
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_udata_slot_0_127": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_udata_slot_128_255": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_udata_slot_256_383": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_udata_slot_384_511": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_udata_slot_0_127": {
+ "value": false,
+ "bit": 3
+ },
+ "erase_udata_slot_128_255": {
+ "value": false,
+ "bit": 11
+ },
+ "erase_udata_slot_256_383": {
+ "value": false,
+ "bit": 19
+ },
+ "erase_udata_slot_384_511": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_random_value_get": {
+ "address": "0x120",
+ "setting": {
+ "pairing_key_0": {
+ "random_value_get": {
+ "value": false,
+ "bit": 0
+ }
+ },
+ "pairing_key_1": {
+ "random_value_get": {
+ "value": true,
+ "bit": 1
+ }
+ },
+ "pairing_key_2": {
+ "random_value_get": {
+ "value": true,
+ "bit": 2
+ }
+ },
+ "pairing_key_3": {
+ "random_value_get": {
+ "value": false,
+ "bit": 3
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_generate": {
+ "address": "0x130",
+ "setting": {
+ "pairing_key_0": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "gen_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "gen_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "gen_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "gen_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "gen_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_store": {
+ "address": "0x134",
+ "setting": {
+ "pairing_key_0": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "store_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "store_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "store_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "store_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "store_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "store_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "store_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "store_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_read": {
+ "address": "0x138",
+ "setting": {
+ "pairing_key_0": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "read_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "read_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "read_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "read_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "read_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "read_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "read_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "read_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecc_key_erase": {
+ "address": "0x13c",
+ "setting": {
+ "pairing_key_0": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 1
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "erase_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "erase_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "erase_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "erase_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "erase_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_ecdsa_sign": {
+ "address": "0x140",
+ "setting": {
+ "pairing_key_0": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "ecdsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "ecdsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "ecdsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "ecdsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_eddsa_sign": {
+ "address": "0x144",
+ "setting": {
+ "pairing_key_0": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 0
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 8
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 16
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 1
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 9
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 17
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": true,
+ "bit": 2
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": true,
+ "bit": 10
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": true,
+ "bit": 18
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "eddsa_ecckey_slot_0_7": {
+ "value": false,
+ "bit": 3
+ },
+ "eddsa_ecckey_slot_8_15": {
+ "value": false,
+ "bit": 11
+ },
+ "eddsa_ecckey_slot_16_23": {
+ "value": false,
+ "bit": 19
+ },
+ "eddsa_ecckey_slot_24_31": {
+ "value": false,
+ "bit": 27
+ }
+ }
+ }
+ },
+ "cfg_uap_mcounter_init": {
+ "address": "0x150",
+ "setting": {
+ "pairing_key_0": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 0
+ },
+ "mcounter_init_4_7": {
+ "value": false,
+ "bit": 8
+ },
+ "mcounter_init_8_11": {
+ "value": false,
+ "bit": 16
+ },
+ "mcounter_init_12_15": {
+ "value": false,
+ "bit": 24
+ }
+ },
+ "pairing_key_1": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 1
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 9
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 17
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 25
+ }
+ },
+ "pairing_key_2": {
+ "mcounter_init_0_3": {
+ "value": true,
+ "bit": 2
+ },
+ "mcounter_init_4_7": {
+ "value": true,
+ "bit": 10
+ },
+ "mcounter_init_8_11": {
+ "value": true,
+ "bit": 18
+ },
+ "mcounter_init_12_15": {
+ "value": true,
+ "bit": 26
+ }
+ },
+ "pairing_key_3": {
+ "mcounter_init_0_3": {
+ "value": false,
+ "bit": 3
+ },
+ "mcounter_init_4_7": {Why this scored 32/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.