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/nonce.h"
13#include "sw/device/silicon_creator/lib/sigverify/ecdsa_p256_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;
51typedef enum ownership_state {
53 kOwnershipStateLockedOwner = 0x444e574f,
55 kOwnershipStateUnlockedSelf = 0x464c5355,
57 kOwnershipStateUnlockedAny = 0x594e4155,
59 kOwnershipStateUnlockedEndorsed = 0x444e4555,
61 kOwnershipStateRecovery = 0,
64typedef enum ownership_key_alg {
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 kOwnershipKeyAlgCategoryEcdsa = 0x50,
91 kOwnershipKeyAlgCategorySpx = 0x53,
93 kOwnershipKeyAlgCategoryHybrid = 0x48,
96typedef enum ownership_update_mode {
98 kOwnershipUpdateModeOpen = 0x4e45504f,
100 kOwnershipUpdateModeSelf = 0x464c4553,
106 kOwnershipUpdateModeNewVersion = 0x5657454e,
112 kOwnershipUpdateModeSelfVersion = 0x564c4553,
113} ownership_update_mode_t;
115typedef enum lock_constraint {
117 kLockConstraintNone = 0x7e7e7e7e,
120typedef enum tlv_tag {
122 kTlvTagOwner = 0x524e574f,
124 kTlvTagApplicationKey = 0x4b505041,
126 kTlvTagFlashConfig = 0x48534c46,
128 kTlvTagInfoConfig = 0x4f464e49,
130 kTlvTagRescueConfig = 0x51534552,
132 kTlvTagIntegrationSpecificFirmwareBinding = 0x42465349,
134 kTlvTagDetachedSignature = 0x4e474953,
136 kTlvTagNotPresent = 0x5a5a5a5a,
147 struct_version_t version;
150typedef enum owner_sram_exec_mode {
152 kOwnerSramExecModeDisabledLocked = 0x58454e4c,
154 kOwnerSramExecModeDisabled = 0x58454f4e,
156 kOwnerSramExecModeEnabled = 0x43455845,
157} owner_sram_exec_mode_t;
221typedef enum owner_app_domain {
223 kOwnerAppDomainTest = 0x74736574,
225 kOwnerAppDomainDev = 0x5f766564,
227 kOwnerAppDomainProd = 0x646f7270,
253 uint32_t raw_diversifier[8];
259} owner_application_key_t;
270 kTlvLenApplicationKeySpx =
271 offsetof(owner_application_key_t, data) +
sizeof(sigverify_spx_key_t),
272 kTlvLenApplicationKeyEcdsa =
273 offsetof(owner_application_key_t, data) +
sizeof(ecdsa_p256_public_key_t),
274 kTlvLenApplicationKeyHybrid =
275 offsetof(owner_application_key_t, data) +
sizeof(hybrid_key_t),
282#define FLASH_CONFIG_READ ((bitfield_field32_t) { .mask = 0xF, .index = 0 })
283#define FLASH_CONFIG_PROGRAM ((bitfield_field32_t) { .mask = 0xF, .index = 4 })
284#define FLASH_CONFIG_ERASE ((bitfield_field32_t) { .mask = 0xF, .index = 8 })
285#define FLASH_CONFIG_PROTECT_WHEN_PRIMARY ((bitfield_field32_t) { .mask = 0xF, .index = 24 })
286#define FLASH_CONFIG_LOCK ((bitfield_field32_t) { .mask = 0xF, .index = 28 })
291#define FLASH_CONFIG_SCRAMBLE ((bitfield_field32_t) { .mask = 0xF, .index = 0 })
292#define FLASH_CONFIG_ECC ((bitfield_field32_t) { .mask = 0xF, .index = 4 })
293#define FLASH_CONFIG_HIGH_ENDURANCE ((bitfield_field32_t) { .mask = 0xF, .index = 8 })
299#define FLASH_CONFIG_REGIONS_PER_SLOT 3
314} owner_flash_region_t;
333} owner_flash_config_t;
368} owner_flash_info_config_t;
433} owner_rescue_config_t;
444#define RESCUE_ENTER_ON_FAIL_BIT 7
445#define RESCUE_TIMEOUT_SECONDS ((bitfield_field32_t){.mask = 0x7F, .index = 0})
446#define RESCUE_GPIO_PULL_EN_BIT 1
447#define RESCUE_GPIO_VALUE_BIT 0
448#define RESCUE_DETECT ((bitfield_field32_t){.mask = 0x03, .index = 6})
449#define RESCUE_DETECT_INDEX ((bitfield_field32_t){.mask = 0x3F, .index = 0})
451typedef enum rescue_protocol {
452 kRescueProtocolXmodem =
'X',
453 kRescueProtocolUsbDfu =
'U',
454 kRescueProtocolSpiDfu =
'S',
457typedef enum rescue_detect {
458 kRescueDetectNone = 0,
459 kRescueDetectBreak = 1,
460 kRescueDetectStrap = 2,
461 kRescueDetectGpio = 3,
515} owner_isfb_config_t;
555 ecdsa_p256_signature_t ecdsa;
556 sigverify_spx_signature_t spx;
558 ecdsa_p256_signature_t ecdsa;
559 sigverify_spx_signature_t spx;
562} owner_detached_signature_t;