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/owner_block.h"
12 #include "sw/device/silicon_creator/lib/ownership/ownership.h"
13 #include "sw/device/silicon_creator/lib/ownership/ownership_key.h"
14 #include "sw/device/silicon_creator/rom_ext/sival/keys/appkey_dev_0.h"
15 #include "sw/device/silicon_creator/rom_ext/sival/keys/appkey_prod_0.h"
16 #include "sw/device/silicon_creator/rom_ext/sival/keys/appkey_test_0.h"
17 #include "sw/device/silicon_creator/rom_ext/sival/keys/ownership_activate_key.h"
18 #include "sw/device/silicon_creator/rom_ext/sival/keys/ownership_owner_key.h"
19 #include "sw/device/silicon_creator/rom_ext/sival/keys/ownership_unlock_key.h"
28 #define SIVAL_OWNER_CONFIG_VERSION 1
30 rom_error_t sku_creator_owner_init(
boot_data_t *bootdata,
36 .
raw = OWNERSHIP_OWNER_KEY};
39 if (state == kOwnershipStateUnlockedSelf ||
40 state == kOwnershipStateUnlockedAny ||
41 state == kOwnershipStateUnlockedEndorsed) {
44 }
else if (state == kOwnershipStateLockedOwner) {
57 memset(&owner_page[0], 0,
sizeof(owner_page[0]));
58 owner_page[0].
header.tag = kTlvTagOwner;
59 owner_page[0].
header.length = 2048;
64 owner_page[0].
update_mode = kOwnershipUpdateModeOpen;
67 memset(owner_page[0].device_id, kLockConstraintNone,
68 sizeof(owner_page[0].device_id));
73 .
raw = OWNERSHIP_ACTIVATE_KEY};
77 .
raw = OWNERSHIP_UNLOCK_KEY};
83 .tag = kTlvTagApplicationKey,
84 .length = kTlvLenApplicationKeyEcdsa,
86 .key_alg = kOwnershipKeyAlgEcdsaP256,
87 .key_domain = kOwnerAppDomainTest,
88 .key_diversifier = {0},
89 .usage_constraint = 0,
92 .ecdsa = APPKEY_TEST_0,
100 .tag = kTlvTagApplicationKey,
101 .length = kTlvLenApplicationKeyEcdsa,
103 .key_alg = kOwnershipKeyAlgEcdsaP256,
104 .key_domain = kOwnerAppDomainProd,
105 .key_diversifier = {0},
106 .usage_constraint = 0,
109 .ecdsa = APPKEY_PROD_0,
117 .tag = kTlvTagApplicationKey,
118 .length = kTlvLenApplicationKeyEcdsa,
120 .key_alg = kOwnershipKeyAlgEcdsaP256,
121 .key_domain = kOwnerAppDomainDev,
122 .key_diversifier = {0},
123 .usage_constraint = 0,
126 .ecdsa = APPKEY_DEV_0,
132 size_t len = (uintptr_t)(owner_page[0].data +
sizeof(owner_page[0].data)) -
136 ownership_seal_page(0);
137 memcpy(&owner_page[1], &owner_page[0],
sizeof(owner_page[0]));
144 OT_DISCARD(flash_ctrl_info_erase(&kFlashCtrlInfoPageOwnerSlot0,
145 kFlashCtrlEraseTypePage));
146 OT_DISCARD(flash_ctrl_info_write(&kFlashCtrlInfoPageOwnerSlot0, 0,
147 sizeof(owner_page[0]) /
sizeof(uint32_t),
149 owner_page_valid[0] = kOwnerPageStatusSealed;
152 dbg_printf(
"sku_creator_owner_init: saved to flash\r\n");