8 #include "sw/device/silicon_creator/lib/dbg_print.h"
9 #include "sw/device/silicon_creator/lib/drivers/flash_ctrl.h"
10 #include "sw/device/silicon_creator/lib/error.h"
11 #include "sw/device/silicon_creator/lib/ownership/keys/fake/activate_ecdsa_p256.h"
12 #include "sw/device/silicon_creator/lib/ownership/keys/fake/app_dev_ecdsa_p256.h"
13 #include "sw/device/silicon_creator/lib/ownership/keys/fake/app_prod_ecdsa_p256.h"
14 #include "sw/device/silicon_creator/lib/ownership/keys/fake/app_test_ecdsa_p256.h"
15 #include "sw/device/silicon_creator/lib/ownership/keys/fake/owner_ecdsa_p256.h"
16 #include "sw/device/silicon_creator/lib/ownership/keys/fake/unlock_ecdsa_p256.h"
17 #include "sw/device/silicon_creator/lib/ownership/owner_block.h"
18 #include "sw/device/silicon_creator/lib/ownership/ownership.h"
19 #include "sw/device/silicon_creator/lib/ownership/ownership_key.h"
29 #define TEST_OWNER_CONFIG_VERSION 1
31 #ifndef TEST_OWNER_UPDATE_MODE
32 #define TEST_OWNER_UPDATE_MODE kOwnershipUpdateModeOpen
35 rom_error_t sku_creator_owner_init(
boot_data_t *bootdata,
41 .
raw = OWNER_ECDSA_P256};
44 if (state == kOwnershipStateUnlockedSelf ||
45 state == kOwnershipStateUnlockedAny ||
46 state == kOwnershipStateUnlockedEndorsed) {
49 }
else if (state == kOwnershipStateLockedOwner) {
62 owner_page[0].
header.tag = kTlvTagOwner;
63 owner_page[0].
header.length = 2048;
71 memset(owner_page[0].device_id, kLockConstraintNone,
72 sizeof(owner_page[0].device_id));
77 .
raw = ACTIVATE_ECDSA_P256};
81 .
raw = UNLOCK_ECDSA_P256};
87 .tag = kTlvTagApplicationKey,
88 .length = kTlvLenApplicationKeyEcdsa,
90 .key_alg = kOwnershipKeyAlgEcdsaP256,
91 .key_domain = kOwnerAppDomainTest,
92 .key_diversifier = {0},
93 .usage_constraint = 0,
96 .ecdsa = APP_TEST_ECDSA_P256,
104 .tag = kTlvTagApplicationKey,
105 .length = kTlvLenApplicationKeyEcdsa,
107 .key_alg = kOwnershipKeyAlgEcdsaP256,
108 .key_domain = kOwnerAppDomainDev,
109 .key_diversifier = {0},
110 .usage_constraint = 0,
113 .ecdsa = APP_DEV_ECDSA_P256,
121 .tag = kTlvTagApplicationKey,
122 .length = kTlvLenApplicationKeyEcdsa,
124 .key_alg = kOwnershipKeyAlgEcdsaP256,
125 .key_domain = kOwnerAppDomainProd,
126 .key_diversifier = {0},
127 .usage_constraint = 0,
130 .ecdsa = APP_PROD_ECDSA_P256,
136 size_t len = (uintptr_t)(owner_page[0].data +
sizeof(owner_page[0].data)) -
140 ownership_seal_page(0);
141 memcpy(&owner_page[1], &owner_page[0],
sizeof(owner_page[0]));
148 OT_DISCARD(flash_ctrl_info_erase(&kFlashCtrlInfoPageOwnerSlot0,
149 kFlashCtrlEraseTypePage));
150 OT_DISCARD(flash_ctrl_info_write(&kFlashCtrlInfoPageOwnerSlot0, 0,
151 sizeof(owner_page[0]) /
sizeof(uint32_t),
153 owner_page_valid[0] = kOwnerPageStatusSealed;
156 dbg_printf(
"sku_creator_owner_init: saved to flash\r\n");