5 #ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_KEYMGR_H_
6 #define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_KEYMGR_H_
11 #include "sw/device/silicon_creator/lib/error.h"
12 #include "sw/device/silicon_creator/lib/keymgr_binding_value.h"
21 typedef enum sc_keymgr_state {
35 kScKeymgrStateCreatorRootKey,
39 kScKeymgrStateOwnerIntermediateKey,
43 kScKeymgrStateOwnerKey,
48 kScKeymgrStateDisabled,
53 kScKeymgrStateInvalid,
57 kScKeymgrStateNumStates,
64 kScKeymgrSaltNumWords = 8,
74 uint32_t
salt[kScKeymgrSaltNumWords];
84 typedef enum sc_keymgr_dest {
85 kScKeymgrDestNone = 0,
87 kScKeymgrDestKmac = 2,
88 kScKeymgrDestOtbn = 3,
103 kScKeymgrSecMmioEntropyReseedIntervalSet = 1,
104 kScKeymgrSecMmioSwBindingSet = 17,
105 kScKeymgrSecMmioCreatorMaxVerSet = 2,
106 kScKeymgrSecMmioOwnerIntMaxVerSet = 2,
107 kScKeymgrSecMmioOwnerMaxVerSet = 2,
122 void sc_keymgr_sw_binding_set(
134 void sc_keymgr_sw_binding_unlock_wait(
void);
142 void sc_keymgr_creator_max_ver_set(uint32_t max_key_ver);
150 void sc_keymgr_owner_int_max_ver_set(uint32_t max_key_ver);
158 void sc_keymgr_owner_max_ver_set(uint32_t max_key_ver);
167 void sc_keymgr_entropy_reseed_interval_set(uint16_t entropy_reseed_interval);
184 void sc_keymgr_advance_state(
void);
194 rom_error_t sc_keymgr_state_check(sc_keymgr_state_t expected_state);
199 typedef enum sc_keymgr_key_type {
200 kScKeymgrKeyTypeAttestation = 0,
201 kScKeymgrKeyTypeSealing = 1,
202 } sc_keymgr_key_type_t;
247 rom_error_t sc_keymgr_generate_key(sc_keymgr_dest_t destination,
248 sc_keymgr_key_type_t key_type,
261 rom_error_t sc_keymgr_sideload_clear(sc_keymgr_dest_t destination);
275 inline rom_error_t sc_keymgr_generate_key_otbn(
276 sc_keymgr_key_type_t key_type,
278 return sc_keymgr_generate_key(kScKeymgrDestOtbn, key_type, diversification);
290 inline rom_error_t sc_keymgr_sideload_clear_otbn(
void) {
291 return sc_keymgr_sideload_clear(kScKeymgrDestOtbn);
310 uint32_t max_key_version);
328 uint32_t max_key_version);