xref: /aosp_15_r20/external/vboot_reference/futility/futility_options.h (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1*8617a60dSAndroid Build Coastguard Worker /* Copyright 2015 The ChromiumOS Authors
2*8617a60dSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
3*8617a60dSAndroid Build Coastguard Worker  * found in the LICENSE file.
4*8617a60dSAndroid Build Coastguard Worker  *
5*8617a60dSAndroid Build Coastguard Worker  * We centralize option parsing but may split operations into multiple files,
6*8617a60dSAndroid Build Coastguard Worker  * so let's declare the option structures in a single place (here).
7*8617a60dSAndroid Build Coastguard Worker  */
8*8617a60dSAndroid Build Coastguard Worker 
9*8617a60dSAndroid Build Coastguard Worker #ifndef VBOOT_REFERENCE_FUTILITY_OPTIONS_H_
10*8617a60dSAndroid Build Coastguard Worker #define VBOOT_REFERENCE_FUTILITY_OPTIONS_H_
11*8617a60dSAndroid Build Coastguard Worker 
12*8617a60dSAndroid Build Coastguard Worker #include <stdint.h>
13*8617a60dSAndroid Build Coastguard Worker 
14*8617a60dSAndroid Build Coastguard Worker #include "2rsa.h"
15*8617a60dSAndroid Build Coastguard Worker #include "file_type.h"
16*8617a60dSAndroid Build Coastguard Worker 
17*8617a60dSAndroid Build Coastguard Worker struct vb2_private_key;
18*8617a60dSAndroid Build Coastguard Worker struct vb21_packed_key;
19*8617a60dSAndroid Build Coastguard Worker 
20*8617a60dSAndroid Build Coastguard Worker struct show_option_s {
21*8617a60dSAndroid Build Coastguard Worker 	struct vb2_public_key *k;
22*8617a60dSAndroid Build Coastguard Worker 	uint8_t *fv;
23*8617a60dSAndroid Build Coastguard Worker 	uint64_t fv_size;
24*8617a60dSAndroid Build Coastguard Worker 	int strict;
25*8617a60dSAndroid Build Coastguard Worker 	int t_flag;
26*8617a60dSAndroid Build Coastguard Worker 	enum futil_file_type type;
27*8617a60dSAndroid Build Coastguard Worker 	struct vb21_packed_key *pkey;
28*8617a60dSAndroid Build Coastguard Worker 	uint32_t sig_size;
29*8617a60dSAndroid Build Coastguard Worker 	bool parseable;
30*8617a60dSAndroid Build Coastguard Worker };
31*8617a60dSAndroid Build Coastguard Worker extern struct show_option_s show_option;
32*8617a60dSAndroid Build Coastguard Worker 
33*8617a60dSAndroid Build Coastguard Worker struct sign_option_s {
34*8617a60dSAndroid Build Coastguard Worker 	struct vb2_private_key *signprivate;
35*8617a60dSAndroid Build Coastguard Worker 	struct vb2_keyblock *keyblock;
36*8617a60dSAndroid Build Coastguard Worker 	struct vb2_packed_key *kernel_subkey;
37*8617a60dSAndroid Build Coastguard Worker 	const char *keysetdir;
38*8617a60dSAndroid Build Coastguard Worker 	uint32_t version;
39*8617a60dSAndroid Build Coastguard Worker 	int version_specified;
40*8617a60dSAndroid Build Coastguard Worker 	uint32_t flags;
41*8617a60dSAndroid Build Coastguard Worker 	int flags_specified;
42*8617a60dSAndroid Build Coastguard Worker 	char *loemdir;
43*8617a60dSAndroid Build Coastguard Worker 	char *loemid;
44*8617a60dSAndroid Build Coastguard Worker 	uint8_t *bootloader_data;
45*8617a60dSAndroid Build Coastguard Worker 	uint64_t bootloader_size;
46*8617a60dSAndroid Build Coastguard Worker 	uint8_t *config_data;
47*8617a60dSAndroid Build Coastguard Worker 	uint32_t config_size;
48*8617a60dSAndroid Build Coastguard Worker 	enum arch_t arch;
49*8617a60dSAndroid Build Coastguard Worker 	int fv_specified;
50*8617a60dSAndroid Build Coastguard Worker 	uint32_t kloadaddr;
51*8617a60dSAndroid Build Coastguard Worker 	uint32_t padding;
52*8617a60dSAndroid Build Coastguard Worker 	int vblockonly;
53*8617a60dSAndroid Build Coastguard Worker 	char *outfile;
54*8617a60dSAndroid Build Coastguard Worker 	int create_new_outfile;
55*8617a60dSAndroid Build Coastguard Worker 	int inout_file_count;
56*8617a60dSAndroid Build Coastguard Worker 	char *pem_signpriv;
57*8617a60dSAndroid Build Coastguard Worker 	int pem_algo_specified;
58*8617a60dSAndroid Build Coastguard Worker 	uint32_t pem_algo;
59*8617a60dSAndroid Build Coastguard Worker 	char *pem_external;
60*8617a60dSAndroid Build Coastguard Worker 	enum futil_file_type type;
61*8617a60dSAndroid Build Coastguard Worker 	enum vb2_hash_algorithm hash_alg;
62*8617a60dSAndroid Build Coastguard Worker 	uint32_t ro_size, rw_size;
63*8617a60dSAndroid Build Coastguard Worker 	uint32_t ro_offset, rw_offset;
64*8617a60dSAndroid Build Coastguard Worker 	uint32_t data_size, sig_size;
65*8617a60dSAndroid Build Coastguard Worker 	struct vb2_private_key *prikey;
66*8617a60dSAndroid Build Coastguard Worker 	const char *ecrw_out;
67*8617a60dSAndroid Build Coastguard Worker };
68*8617a60dSAndroid Build Coastguard Worker extern struct sign_option_s sign_option;
69*8617a60dSAndroid Build Coastguard Worker 
70*8617a60dSAndroid Build Coastguard Worker #define FILE_MODE_SIGN(sign_options)                                           \
71*8617a60dSAndroid Build Coastguard Worker 	(sign_options.create_new_outfile ? FILE_RO : FILE_RW)
72*8617a60dSAndroid Build Coastguard Worker 
73*8617a60dSAndroid Build Coastguard Worker #endif  /* VBOOT_REFERENCE_FUTILITY_OPTIONS_H_ */
74