Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6519e1a
[keymgr_dpe, otp_ctrl, rtl] Change otp keymgr_dpe interface
rroth-lowrisc Jul 2, 2026
478f6bf
[otp_ctrl, dv] Update otp_ctrl dv
rroth-lowrisc Jul 3, 2026
ea4d1ec
[keymgr_dpe, dv] Remove otp_ctrl dependency
rroth-lowrisc Apr 29, 2026
c8fa723
[keymgr_dpe, dv] Improve keymgr_dpe block level dv
rroth-lowrisc May 4, 2026
2547524
[keymgr_dpe, dv] Introduce backdoor load for UDS
rroth-lowrisc May 4, 2026
d06e0d2
[keymgr_dpe, rtl, dv] Introduce bootstage OwnerIntKey
rroth-lowrisc May 4, 2026
4d3ee59
[keymgr_dpe, rtl, dv] Support multiple top configurations
rroth-lowrisc May 4, 2026
b9410b8
[keymgr_dpe, dif] Add missing API calls
rroth-lowrisc May 7, 2026
3cb89ab
[keymgr_dpe, sw] Add first version of the silicon driver
rroth-lowrisc May 7, 2026
b53f710
[keymgr_dpe, testutils] Updates the testutils for earlgrey
rroth-lowrisc May 7, 2026
1cdd810
[keymgr_dpe, sw] Add first version of the crypto driver
rroth-lowrisc May 12, 2026
a8dc659
[keymgr_dpe, sw] Add keymgr_dpe crypto lib test
rroth-lowrisc Jul 7, 2026
b1834f9
[top] Replace `keymgr` with `keymgr_dpe` in Earl Grey
rroth-lowrisc Jul 9, 2026
509d1f5
[SQUASH_ME] Autogenerated code
rroth-lowrisc Jul 7, 2026
f07e47c
[top] Select source for the creator / owner seed
rroth-lowrisc May 6, 2026
87992c8
[keymgr_dpe, cm] Remove all cm related to the original keymgr
rroth-lowrisc May 8, 2026
e7b5a6e
[keymgr_dpe, BUILD] Change dependencies in earlgrey
rroth-lowrisc Jul 9, 2026
e1a30e8
[keymgr_dpe, temp] Add serverals necessary firmware changes (Split th…
rroth-lowrisc Jul 9, 2026
60b2b06
[TEMP, testplan] Disable tests due to the `keymgr_dpe` migration
rroth-lowrisc May 8, 2026
86fedbc
[keymgr_dpe, functest] Inital keymgr_dpe functest
rroth-lowrisc May 15, 2026
29bee30
[keymgr_dpe, sw] Adapt sw test `entropy_src_edn_reqs_test`
rroth-lowrisc Jul 9, 2026
d0ba1b0
[keymgr_dpe, sw] Adapt sw test `alert_handler_escalation_test`
rroth-lowrisc Jul 9, 2026
e8239bf
[keymgr_dpe, sw] Adapt sw test `all_escalation_resets_test`
rroth-lowrisc Jul 9, 2026
810964e
[keymgr_dpe, sw] Adapt sw test `rstmgr_alert_info_test`
rroth-lowrisc Jul 8, 2026
1a401a7
[keymgr_dpe, sw] Adapt sw test `rv_dm_ndm_reset_req`
rroth-lowrisc Jul 8, 2026
c7f1112
[keymgr_dpe, sw] Adapt sw test `otp_ctrl_lc_signals_test`
rroth-lowrisc Jul 8, 2026
e6e73f9
[keymgr_dpe, sw] Adapt sw test `alert_handler_reverse_ping_in_deep_sl…
rroth-lowrisc Jul 8, 2026
fae3566
[keymgr_dpe, sw] Adapt sw test `flash_ctrl_lc_rw_en`
rroth-lowrisc Jul 9, 2026
ac1e27c
[keymgr_dpe, sw, dv] Introduce the `keymgr_dpe_key_derivation` test
rroth-lowrisc Jul 8, 2026
4fe5865
[keymgr_dpe, sw, dv] Introduce the `keymgr_dpe_sideload_aes` test
rroth-lowrisc Jul 8, 2026
4b44950
[keymgr_dpe, sw, dv] Introduce the `keymgr_dpe_sideload_kmac` test
rroth-lowrisc Jul 8, 2026
925c002
[keymgr_dpe, sw, dv] Introduce the `keymgr_dpe_sideload_otbn` test
rroth-lowrisc Jul 8, 2026
8d3a2f1
[earlgrey, keymgr_dpe_testplan] Initial version for the `keymgr_dpe_t…
rroth-lowrisc Jul 8, 2026
a4efea8
[keymgr_dpe, crypto] Update the `config.c` file
rroth-lowrisc Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 101 additions & 58 deletions hw/ip/keymgr_dpe/data/keymgr_dpe.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,29 @@
act: "req",
package: "kmac_pkg", // Origin package (only needs for the requester)
},
{ struct: "otp_keymgr_key",
{ struct: "keymgr_dpe_creator_root_key",
type: "uni",
name: "otp_key",
name: "creator_root_key",
act: "rcv",
package: "otp_ctrl_pkg",
package: "keymgr_dpe_pkg",
},
{ struct: "otp_device_id",
{ struct: "keymgr_dpe_creator_seed",
type: "uni",
name: "otp_device_id",
name: "creator_seed",
act: "rcv",
package: "otp_ctrl_pkg",
package: "keymgr_dpe_pkg",
},
{ struct: "keymgr_dpe_owner_seed",
type: "uni",
name: "owner_seed",
act: "rcv",
package: "keymgr_dpe_pkg",
},
{ struct: "keymgr_dpe_device_id",
type: "uni",
name: "device_id",
act: "rcv",
package: "keymgr_dpe_pkg",
},
{ struct: "lc_tx",
type: "uni",
Expand Down Expand Up @@ -216,11 +228,33 @@
default: "1",
local: "true"
},
{ name: "NumMaxHwSlot",
desc: '''
Number of maximum supported HW slots. If this value is changed then the
bit width in SLOT_SRC_SEL / SLOT_DST_SEL in the
"CONTROL_SHADOWED" register needs to be updated too.
''',
type: "int",
default: "8",
local: "true"
},
{ name: "NumInstHwSlot",
desc: "Number of instantiated HW slots",
type: "int",
default: "4",
expose: "true"
},
{ name: "NumBootStages",
desc: "Number of available boot stage",
type: "int",
default: "3",
expose: "true"
},
{ name: "NumRomDigestInputs",
desc: "Number of digest inputs from ROM_CTRL",
type: "int",
default: "2",
local: "true"
default: "1",
expose: "true"
},
],

Expand Down Expand Up @@ -297,23 +331,27 @@ countermeasures: [
Main control fsm is sparsely encoded.
'''
}
{ name: "DATA.FSM.SPARSE",
desc: '''
Control data fsm (for redundant data control) is sparsely encoded.
'''
}
// TODO(#30721): reenable countermeasures after integrating all keymgr
// modules into the keymgr_dpe
//{ name: "DATA.FSM.SPARSE",
// desc: '''
// Control data fsm (for redundant data control) is sparsely encoded.
// '''
//}
{ name: "CTRL.FSM.LOCAL_ESC",
desc: '''
Main control fsm locally escalates based on any detected fault in keymgr.
When a fault is detected (sync or async) the fsm transitions to invalid state to prevent
further legal operations from executing.
'''
}
{ name: "CTRL.FSM.CONSISTENCY",
desc: '''
Main and operational fsm transitions are consistent with software commands.
'''
}
// TODO(#30721): reenable countermeasures after integrating all keymgr
// modules into the keymgr_dpe
//{ name: "CTRL.FSM.CONSISTENCY",
// desc: '''
// Main and operational fsm transitions are consistent with software commands.
// '''
//}
{ name: "CTRL.FSM.GLOBAL_ESC",
desc: '''
When the system globally escalates, the main control fsm also transitions to invalid state
Expand All @@ -325,46 +363,48 @@ countermeasures: [
Primary count is duplicated.
'''
}
{ name: "KMAC_IF.FSM.SPARSE",
desc: '''
kmac interface fsm is sparsely encoded.
'''
}
{ name: "KMAC_IF.CTR.REDUN",
desc: '''
Primary count uses cross count.
'''
}
{ name: "KMAC_IF_CMD.CTRL.CONSISTENCY",
desc: '''
One hot check for kmac interface commands.
Also, command enable (adv_en, id_en, gen_en) is checked for consistency
throughout the operation.
'''
}
{ name: "KMAC_IF_DONE.CTRL.CONSISTENCY",
desc: '''
Spurious kmac done check.
'''
}
{ name: "RESEED.CTR.REDUN",
desc: '''
Primary count is duplicated.
'''
}
{ name: "SIDE_LOAD_SEL.CTRL.CONSISTENCY",
desc: '''
Sideload key slot select is checked for consistency.
When a key slot is valid when it should not be, an error is triggered.
The reverse case is not checked, since an invalid key cannot be used
anyways.
'''
}
{ name: "SIDELOAD_CTRL.FSM.SPARSE",
desc: '''
Sideload control fsm is sparsely encoded.
'''
}
// TODO(#30721): reenable countermeasures after integrating all keymgr
// modules into the keymgr_dpe
//{ name: "KMAC_IF.FSM.SPARSE",
// desc: '''
// kmac interface fsm is sparsely encoded.
// '''
//}
//{ name: "KMAC_IF.CTR.REDUN",
// desc: '''
// Primary count uses cross count.
// '''
//}
//{ name: "KMAC_IF_CMD.CTRL.CONSISTENCY",
// desc: '''
// One hot check for kmac interface commands.
// Also, command enable (adv_en, id_en, gen_en) is checked for consistency
// throughout the operation.
// '''
//}
//{ name: "KMAC_IF_DONE.CTRL.CONSISTENCY",
// desc: '''
// Spurious kmac done check.
// '''
//}
//{ name: "RESEED.CTR.REDUN",
// desc: '''
// Primary count is duplicated.
// '''
//}
//{ name: "SIDE_LOAD_SEL.CTRL.CONSISTENCY",
// desc: '''
// Sideload key slot select is checked for consistency.
// When a key slot is valid when it should not be, an error is triggered.
// The reverse case is not checked, since an invalid key cannot be used
// anyways.
// '''
//}
//{ name: "SIDELOAD_CTRL.FSM.SPARSE",
// desc: '''
// Sideload control fsm is sparsely encoded.
// '''
//}
{ name: "CTRL.KEY.INTEGRITY",
desc: '''
Internal secret key is protected with ECC.
Expand Down Expand Up @@ -539,6 +579,9 @@ countermeasures: [
'''
}
],
// TODO(#30682): Remove this label as soon as the RTL raises an
// error instead of a assertion.
tags: ["excl:CsrAllTests:CsrExclWrite"]
},

{ name: "SIDELOAD_CLEAR",
Expand Down
108 changes: 54 additions & 54 deletions hw/ip/keymgr_dpe/data/keymgr_dpe_sec_cm_testplan.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -95,24 +95,24 @@
stage: V2S
tests: []
}
{
name: sec_cm_data_fsm_sparse
desc: "Verify the countermeasure(s) DATA.FSM.SPARSE."
stage: V2S
tests: []
}
//{
// name: sec_cm_data_fsm_sparse
// desc: "Verify the countermeasure(s) DATA.FSM.SPARSE."
// stage: V2S
// tests: []
//}
{
name: sec_cm_ctrl_fsm_local_esc
desc: "Verify the countermeasure(s) CTRL.FSM.LOCAL_ESC."
stage: V2S
tests: []
}
{
name: sec_cm_ctrl_fsm_consistency
desc: "Verify the countermeasure(s) CTRL.FSM.CONSISTENCY."
stage: V2S
tests: []
}
//{
// name: sec_cm_ctrl_fsm_consistency
// desc: "Verify the countermeasure(s) CTRL.FSM.CONSISTENCY."
// stage: V2S
// tests: []
//}
{
name: sec_cm_ctrl_fsm_global_esc
desc: "Verify the countermeasure(s) CTRL.FSM.GLOBAL_ESC."
Expand All @@ -125,48 +125,48 @@
stage: V2S
tests: []
}
{
name: sec_cm_kmac_if_fsm_sparse
desc: "Verify the countermeasure(s) KMAC_IF.FSM.SPARSE."
stage: V2S
tests: []
}
{
name: sec_cm_kmac_if_ctr_redun
desc: "Verify the countermeasure(s) KMAC_IF.CTR.REDUN."
stage: V2S
tests: []
}
{
name: sec_cm_kmac_if_cmd_ctrl_consistency
desc: "Verify the countermeasure(s) KMAC_IF_CMD.CTRL.CONSISTENCY."
stage: V2S
tests: []
}
{
name: sec_cm_kmac_if_done_ctrl_consistency
desc: "Verify the countermeasure(s) KMAC_IF_DONE.CTRL.CONSISTENCY."
stage: V2S
tests: []
}
{
name: sec_cm_reseed_ctr_redun
desc: "Verify the countermeasure(s) RESEED.CTR.REDUN."
stage: V2S
tests: []
}
{
name: sec_cm_side_load_sel_ctrl_consistency
desc: "Verify the countermeasure(s) SIDE_LOAD_SEL.CTRL.CONSISTENCY."
stage: V2S
tests: []
}
{
name: sec_cm_sideload_ctrl_fsm_sparse
desc: "Verify the countermeasure(s) SIDELOAD_CTRL.FSM.SPARSE."
stage: V2S
tests: []
}
//{
// name: sec_cm_kmac_if_fsm_sparse
// desc: "Verify the countermeasure(s) KMAC_IF.FSM.SPARSE."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_kmac_if_ctr_redun
// desc: "Verify the countermeasure(s) KMAC_IF.CTR.REDUN."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_kmac_if_cmd_ctrl_consistency
// desc: "Verify the countermeasure(s) KMAC_IF_CMD.CTRL.CONSISTENCY."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_kmac_if_done_ctrl_consistency
// desc: "Verify the countermeasure(s) KMAC_IF_DONE.CTRL.CONSISTENCY."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_reseed_ctr_redun
// desc: "Verify the countermeasure(s) RESEED.CTR.REDUN."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_side_load_sel_ctrl_consistency
// desc: "Verify the countermeasure(s) SIDE_LOAD_SEL.CTRL.CONSISTENCY."
// stage: V2S
// tests: []
//}
//{
// name: sec_cm_sideload_ctrl_fsm_sparse
// desc: "Verify the countermeasure(s) SIDELOAD_CTRL.FSM.SPARSE."
// stage: V2S
// tests: []
//}
{
name: sec_cm_ctrl_key_integrity
desc: "Verify the countermeasure(s) CTRL.KEY.INTEGRITY."
Expand Down
Loading
Loading