5 #include "sw/device/silicon_creator/rom_ext/imm_section/imm_section.h"
10 #include "sw/device/silicon_creator/lib/base/boot_measurements.h"
12 #include "sw/device/silicon_creator/lib/cert/dice_chain.h"
13 #include "sw/device/silicon_creator/lib/dbg_print.h"
14 #include "sw/device/silicon_creator/lib/drivers/flash_ctrl.h"
15 #include "sw/device/silicon_creator/lib/drivers/otp.h"
16 #include "sw/device/silicon_creator/lib/drivers/rnd.h"
17 #include "sw/device/silicon_creator/lib/epmp_state.h"
18 #include "sw/device/silicon_creator/lib/error.h"
19 #include "sw/device/silicon_creator/lib/manifest.h"
20 #include "sw/device/silicon_creator/lib/ownership/ownership_key.h"
21 #include "sw/device/silicon_creator/rom_ext/imm_section/imm_section_epmp.h"
22 #include "sw/device/silicon_creator/rom_ext/rom_ext_manifest.h"
24 #include "otp_ctrl_regs.h"
27 static rom_error_t imm_section_start(
void) {
29 HARDENED_RETURN_IF_ERROR(epmp_state_check());
37 HARDENED_RETURN_IF_ERROR(imm_section_epmp_reconfigure());
40 dbg_puts(
"IMM_SECTION:0.1\r\n");
41 uint32_t hash_enforcement =
42 otp_read32(OTP_CTRL_PARAM_CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN_OFFSET);
46 dbg_puts(
"info: hash unenforced\r\n");
51 flash_ctrl_cert_info_page_creator_cfg(&kFlashCtrlInfoPageAttestationKeySeeds);
52 flash_ctrl_cert_info_page_owner_restrict(
53 &kFlashCtrlInfoPageAttestationKeySeeds);
54 flash_ctrl_info_cfg_lock(&kFlashCtrlInfoPageAttestationKeySeeds);
57 const manifest_t *rom_ext = rom_ext_manifest();
58 HARDENED_RETURN_IF_ERROR(dice_chain_init());
59 HARDENED_RETURN_IF_ERROR(dice_chain_attestation_silicon());
62 HARDENED_RETURN_IF_ERROR(ownership_seal_init());
64 HARDENED_RETURN_IF_ERROR(
68 HARDENED_RETURN_IF_ERROR(imm_section_epmp_mutable_rx(rom_ext));
73 void imm_section_main(
void) {
74 rom_error_t error = imm_section_start();