456ee3421297196ffb194f4744adc458ea801994
[vboot.git] / futility / futility_options.h
1 /*
2  * Copyright 2015 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 /*
8  * We centralize option parsing but may split operations into multiple files,
9  * so let's declare the option structures in a single place (here).
10  */
11
12 #ifndef VBOOT_REFERENCE_FUTILITY_OPTIONS_H_
13 #define VBOOT_REFERENCE_FUTILITY_OPTIONS_H_
14 #include <stdint.h>
15 #include "vboot_common.h"
16 #include "file_type.h"
17 #include "2rsa.h"
18
19 struct vb2_private_key;
20 struct vb21_packed_key;
21
22 struct show_option_s {
23         struct vb2_public_key *k;
24         uint8_t *fv;
25         uint64_t fv_size;
26         uint32_t padding;
27         int strict;
28         int t_flag;
29         enum futil_file_type type;
30         struct vb21_packed_key *pkey;
31         uint32_t sig_size;
32 };
33 extern struct show_option_s show_option;
34
35 struct sign_option_s {
36         VbPrivateKey *signprivate;
37         struct vb2_private_key *signprivate2;
38         VbKeyBlockHeader *keyblock;
39         VbPublicKey *kernel_subkey;
40         struct vb2_private_key *devsignprivate;
41         VbKeyBlockHeader *devkeyblock;
42         uint32_t version;
43         int version_specified;
44         uint32_t flags;
45         int flags_specified;
46         char *loemdir;
47         char *loemid;
48         uint8_t *bootloader_data;
49         uint64_t bootloader_size;
50         uint8_t *config_data;
51         uint64_t config_size;
52         enum arch_t arch;
53         int fv_specified;
54         uint32_t kloadaddr;
55         uint32_t padding;
56         int vblockonly;
57         char *outfile;
58         int create_new_outfile;
59         int inout_file_count;
60         char *pem_signpriv;
61         int pem_algo_specified;
62         uint32_t pem_algo;
63         char *pem_external;
64         enum futil_file_type type;
65         enum vb2_hash_algorithm hash_alg;
66         uint32_t ro_size, rw_size;
67         uint32_t ro_offset, rw_offset;
68         uint32_t data_size, sig_size;
69         struct vb2_private_key *prikey;
70 };
71 extern struct sign_option_s sign_option;
72
73 /* Return true if hash_alg was identified, either by name or number */
74 int vb2_lookup_hash_alg(const char *str, enum vb2_hash_algorithm *alg);
75
76 #endif  /* VBOOT_REFERENCE_FUTILITY_OPTIONS_H_ */