xref: /aosp_15_r20/external/gsc-utils/extra/usb_updater/signed_manifest.h (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
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