1*4f2df630SAndroid Build Coastguard Worker /* Copyright 2024 The ChromiumOS Authors 2*4f2df630SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 3*4f2df630SAndroid Build Coastguard Worker * found in the LICENSE file. 4*4f2df630SAndroid Build Coastguard Worker */ 5*4f2df630SAndroid Build Coastguard Worker #ifndef __CROS_EC_SIGNED_MANIFEST_H 6*4f2df630SAndroid Build Coastguard Worker #define __CROS_EC_SIGNED_MANIFEST_H 7*4f2df630SAndroid Build Coastguard Worker 8*4f2df630SAndroid Build Coastguard Worker 9*4f2df630SAndroid Build Coastguard Worker #include "compile_time_macros.h" 10*4f2df630SAndroid Build Coastguard Worker #include "stdint.h" 11*4f2df630SAndroid Build Coastguard Worker 12*4f2df630SAndroid Build Coastguard Worker /* 13*4f2df630SAndroid Build Coastguard Worker * This is the signed manifest header for Opentitan images. See also 14*4f2df630SAndroid Build Coastguard Worker * third_party/lowriscv/opentitan/sw/device/silicon_creator/lib/manifest.h 15*4f2df630SAndroid Build Coastguard Worker */ 16*4f2df630SAndroid Build Coastguard Worker struct SignedManifest { 17*4f2df630SAndroid Build Coastguard Worker uint32_t signature[96]; 18*4f2df630SAndroid Build Coastguard Worker uint32_t constraint_selector_bits; 19*4f2df630SAndroid Build Coastguard Worker uint32_t constraint_device_id[8]; 20*4f2df630SAndroid Build Coastguard Worker uint32_t constraint_manuf_state_creator; 21*4f2df630SAndroid Build Coastguard Worker uint32_t constraint_manuf_state_owner; 22*4f2df630SAndroid Build Coastguard Worker uint32_t constraint_life_cycle_state; 23*4f2df630SAndroid Build Coastguard Worker uint32_t modulus[96]; 24*4f2df630SAndroid Build Coastguard Worker uint32_t address_translation; 25*4f2df630SAndroid Build Coastguard Worker uint32_t identifier; 26*4f2df630SAndroid Build Coastguard Worker uint16_t manifest_version_major; 27*4f2df630SAndroid Build Coastguard Worker uint16_t manifest_version_minor; 28*4f2df630SAndroid Build Coastguard Worker uint32_t signed_region_end; 29*4f2df630SAndroid Build Coastguard Worker uint32_t length; 30*4f2df630SAndroid Build Coastguard Worker uint32_t version_major; 31*4f2df630SAndroid Build Coastguard Worker uint32_t version_minor; 32*4f2df630SAndroid Build Coastguard Worker uint32_t security_version; 33*4f2df630SAndroid Build Coastguard Worker uint32_t timestamp_low; 34*4f2df630SAndroid Build Coastguard Worker uint32_t timestamp_high; 35*4f2df630SAndroid Build Coastguard Worker uint32_t binding_value[8]; 36*4f2df630SAndroid Build Coastguard Worker uint32_t max_key_version; 37*4f2df630SAndroid Build Coastguard Worker uint32_t code_start; 38*4f2df630SAndroid Build Coastguard Worker uint32_t code_end; 39*4f2df630SAndroid Build Coastguard Worker uint32_t entry_point; 40*4f2df630SAndroid Build Coastguard Worker uint32_t extensions[30]; 41*4f2df630SAndroid Build Coastguard Worker }; 42*4f2df630SAndroid Build Coastguard Worker 43*4f2df630SAndroid Build Coastguard Worker BUILD_ASSERT(sizeof(struct SignedManifest) == 1024); 44*4f2df630SAndroid Build Coastguard Worker /* Verify a few of the field offsets we use most often */ 45*4f2df630SAndroid Build Coastguard Worker BUILD_ASSERT(offsetof(struct SignedManifest, identifier) == 820); 46*4f2df630SAndroid Build Coastguard Worker BUILD_ASSERT(offsetof(struct SignedManifest, length) == 832); 47*4f2df630SAndroid Build Coastguard Worker BUILD_ASSERT(offsetof(struct SignedManifest, version_major) == 836); 48*4f2df630SAndroid Build Coastguard Worker BUILD_ASSERT(offsetof(struct SignedManifest, version_minor) == 840); 49*4f2df630SAndroid Build Coastguard Worker 50*4f2df630SAndroid Build Coastguard Worker /* Identifier that marks the header as ROM_EXT "OTRE" */ 51*4f2df630SAndroid Build Coastguard Worker #define ID_ROM_EXT 0x4552544F 52*4f2df630SAndroid Build Coastguard Worker /* Identifier that marks the header as owner firmware "OTB0" */ 53*4f2df630SAndroid Build Coastguard Worker #define ID_OWNER_FW 0x3042544F 54*4f2df630SAndroid Build Coastguard Worker 55*4f2df630SAndroid Build Coastguard Worker #endif /* __CROS_EC_SIGNED_MANIFEST_H */ 56