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