5#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_OWNERSHIP_DATATYPES_H_
6#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_OWNERSHIP_DATATYPES_H_
12#include "sw/device/silicon_creator/lib/sigverify/ecdsa_p256_key.h"
13#include "sw/device/silicon_creator/lib/sigverify/rsa_key.h"
14#include "sw/device/silicon_creator/lib/sigverify/spx_key.h"
21 ecdsa_p256_public_key_t ecdsa;
22 sigverify_spx_key_t spx;
33 sigverify_spx_key_t
spx;
49typedef enum ownership_state {
51 kOwnershipStateLockedOwner = 0x444e574f,
53 kOwnershipStateUnlockedSelf = 0x464c5355,
55 kOwnershipStateUnlockedAny = 0x594e4155,
57 kOwnershipStateUnlockedEndorsed = 0x444e4555,
59 kOwnershipStateRecovery = 0,
62typedef enum ownership_key_alg {
64 kOwnershipKeyAlgRsa = 0x33415352,
66 kOwnershipKeyAlgEcdsaP256 = 0x36353250,
68 kOwnershipKeyAlgSpxPure = 0x75502b53,
70 kOwnershipKeyAlgSpxPrehash = 0x32532b53,
72 kOwnershipKeyAlgHybridSpxPure = 0x75502b48,
74 kOwnershipKeyAlgHybridSpxPrehash = 0x32532b48,
78 kOwnershipKeyAlgSq20Pure = 0x75507153,
80 kOwnershipKeyAlgSq20Prehash = 0x32537153,
82 kOwnershipKeyAlgHybridSq20Pure = 0x75507148,
84 kOwnershipKeyAlgHybridSq20Prehash = 0x32537148,
87 kOwnershipKeyAlgCategoryMask = 0xFF,
89 kOwnershipKeyAlgCategorySpx = 0x53,
91 kOwnershipKeyAlgCategoryHybrid = 0x48,
94typedef enum ownership_update_mode {
96 kOwnershipUpdateModeOpen = 0x4e45504f,
98 kOwnershipUpdateModeSelf = 0x464c4553,
104 kOwnershipUpdateModeNewVersion = 0x5657454e,
110 kOwnershipUpdateModeSelfVersion = 0x564c4553,
111} ownership_update_mode_t;
113typedef enum lock_constraint {
115 kLockConstraintNone = 0x7e7e7e7e,
118typedef enum tlv_tag {
120 kTlvTagOwner = 0x524e574f,
122 kTlvTagApplicationKey = 0x4b505041,
124 kTlvTagFlashConfig = 0x48534c46,
126 kTlvTagInfoConfig = 0x4f464e49,
128 kTlvTagRescueConfig = 0x51534552,
130 kTlvTagNotPresent = 0x5a5a5a5a,
141 struct_version_t version;
144typedef enum owner_sram_exec_mode {
146 kOwnerSramExecModeDisabledLocked = 0x58454e4c,
148 kOwnerSramExecModeDisabled = 0x58454f4e,
150 kOwnerSramExecModeEnabled = 0x43455845,
151} owner_sram_exec_mode_t;
215typedef enum owner_app_domain {
217 kOwnerAppDomainTest = 0x74736574,
219 kOwnerAppDomainDev = 0x5f766564,
221 kOwnerAppDomainProd = 0x646f7270,
247 uint32_t raw_diversifier[8];
254 sigverify_rsa_key_t rsa;
255 sigverify_spx_key_t spx;
256 ecdsa_p256_public_key_t ecdsa;
259} owner_application_key_t;
270 kTlvLenApplicationKeyRsa =
271 offsetof(owner_application_key_t, data) +
sizeof(sigverify_rsa_key_t),
272 kTlvLenApplicationKeySpx =
273 offsetof(owner_application_key_t, data) +
sizeof(sigverify_spx_key_t),
274 kTlvLenApplicationKeyEcdsa =
275 offsetof(owner_application_key_t, data) +
sizeof(ecdsa_p256_public_key_t),
276 kTlvLenApplicationKeyHybrid =
277 offsetof(owner_application_key_t, data) +
sizeof(hybrid_key_t),
284#define FLASH_CONFIG_READ ((bitfield_field32_t) { .mask = 0xF, .index = 0 })
285#define FLASH_CONFIG_PROGRAM ((bitfield_field32_t) { .mask = 0xF, .index = 4 })
286#define FLASH_CONFIG_ERASE ((bitfield_field32_t) { .mask = 0xF, .index = 8 })
287#define FLASH_CONFIG_PROTECT_WHEN_PRIMARY ((bitfield_field32_t) { .mask = 0xF, .index = 24 })
288#define FLASH_CONFIG_LOCK ((bitfield_field32_t) { .mask = 0xF, .index = 28 })
293#define FLASH_CONFIG_SCRAMBLE ((bitfield_field32_t) { .mask = 0xF, .index = 0 })
294#define FLASH_CONFIG_ECC ((bitfield_field32_t) { .mask = 0xF, .index = 4 })
295#define FLASH_CONFIG_HIGH_ENDURANCE ((bitfield_field32_t) { .mask = 0xF, .index = 8 })
311} owner_flash_region_t;
330} owner_flash_config_t;
365} owner_flash_info_config_t;
392} owner_rescue_config_t;