OLD | NEW |
1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
4 * | 4 * |
5 * Verified boot kernel utility | 5 * Verified boot kernel utility |
6 */ | 6 */ |
7 | 7 |
8 #include <errno.h> | 8 #include <errno.h> |
9 #include <getopt.h> | 9 #include <getopt.h> |
10 #include <inttypes.h> /* For PRIu64 */ | 10 #include <inttypes.h> /* For PRIu64 */ |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 " --config <file> Command line file\n" | 84 " --config <file> Command line file\n" |
85 "\n" | 85 "\n" |
86 " Optional:\n" | 86 " Optional:\n" |
87 " --pad <number> Verification padding size in bytes\n" | 87 " --pad <number> Verification padding size in bytes\n" |
88 " --vblockonly Emit just the verification blob\n", | 88 " --vblockonly Emit just the verification blob\n", |
89 progname); | 89 progname); |
90 fprintf(stderr, | 90 fprintf(stderr, |
91 "\nOR\n\n" | 91 "\nOR\n\n" |
92 "Usage: %s --repack <file> [PARAMETERS]\n" | 92 "Usage: %s --repack <file> [PARAMETERS]\n" |
93 "\n" | 93 "\n" |
94 " Required parameters (of --keyblock and --config at least " | 94 " Required parameters (of --keyblock, --config, and --version \n" |
95 "one is required):\n" | 95 " at least one is required):\n" |
96 " --keyblock <file> Key block in .keyblock format\n" | 96 " --keyblock <file> Key block in .keyblock format\n" |
97 " --signprivate <file>" | 97 " --signprivate <file>" |
98 " Private key to sign kernel data, in .vbprivk format\n" | 98 " Private key to sign kernel data, in .vbprivk format\n" |
99 " --oldblob <file> Previously packed kernel blob\n" | 99 " --oldblob <file> Previously packed kernel blob\n" |
100 " --config <file> New command line file\n" | 100 " --config <file> New command line file\n" |
| 101 " --version <number> Kernel version\n" |
101 "\n" | 102 "\n" |
102 " Optional:\n" | 103 " Optional:\n" |
103 " --pad <number> Verification padding size in bytes\n" | 104 " --pad <number> Verification padding size in bytes\n" |
104 " --vblockonly Emit just the verification blob\n", | 105 " --vblockonly Emit just the verification blob\n", |
105 progname); | 106 progname); |
106 fprintf(stderr, | 107 fprintf(stderr, |
107 "\nOR\n\n" | 108 "\nOR\n\n" |
108 "Usage: %s --verify <file> [PARAMETERS]\n" | 109 "Usage: %s --verify <file> [PARAMETERS]\n" |
109 "\n" | 110 "\n" |
110 " Optional:\n" | 111 " Optional:\n" |
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 switch(mode) { | 840 switch(mode) { |
840 case OPT_MODE_PACK: | 841 case OPT_MODE_PACK: |
841 bp = NewBlob(version, vmlinuz, bootloader, config_file); | 842 bp = NewBlob(version, vmlinuz, bootloader, config_file); |
842 if (!bp) | 843 if (!bp) |
843 return 1; | 844 return 1; |
844 r = Pack(filename, key_block_file, signprivate, bp, pad, vblockonly); | 845 r = Pack(filename, key_block_file, signprivate, bp, pad, vblockonly); |
845 FreeBlob(bp); | 846 FreeBlob(bp); |
846 return r; | 847 return r; |
847 | 848 |
848 case OPT_MODE_REPACK: | 849 case OPT_MODE_REPACK: |
849 if (!config_file && !key_block_file) { | 850 if (!config_file && !key_block_file && !version) { |
850 fprintf(stderr, | 851 fprintf(stderr, |
851 "You must supply at least one of --config and --keyblock\n"); | 852 "You must supply at least one of " |
| 853 "--config, --keyblock or --version\n"); |
852 return 1; | 854 return 1; |
853 } | 855 } |
854 | 856 |
855 bp = OldBlob(oldfile); | 857 bp = OldBlob(oldfile); |
856 if (!bp) | 858 if (!bp) |
857 return 1; | 859 return 1; |
858 r = ReplaceConfig(bp, config_file); | 860 r = ReplaceConfig(bp, config_file); |
859 if (!r) { | 861 if (!r) { |
| 862 if (version) { |
| 863 bp->kernel_version = version; |
| 864 } |
860 r = Pack(filename, key_block_file, signprivate, bp, pad, vblockonly); | 865 r = Pack(filename, key_block_file, signprivate, bp, pad, vblockonly); |
861 } | 866 } |
862 FreeBlob(bp); | 867 FreeBlob(bp); |
863 return r; | 868 return r; |
864 | 869 |
865 case OPT_MODE_VERIFY: | 870 case OPT_MODE_VERIFY: |
866 return Verify(filename, signpubkey, verbose); | 871 return Verify(filename, signpubkey, verbose); |
867 | 872 |
868 default: | 873 default: |
869 fprintf(stderr, | 874 fprintf(stderr, |
870 "You must specify a mode: --pack, --repack or --verify\n"); | 875 "You must specify a mode: --pack, --repack or --verify\n"); |
871 return PrintHelp(progname); | 876 return PrintHelp(progname); |
872 } | 877 } |
873 } | 878 } |
OLD | NEW |