diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-01-15 14:37:45 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-01-26 22:45:42 +0100 |
commit | ebb1160cddbd58831cc8347dba94f208a0cb8500 (patch) | |
tree | 9926fe69c45a5396d2e30479dfdd5de32ae59cdd /commands/bootm.c | |
parent | 6e686491a5478c13554536a65db6381181472133 (diff) | |
download | barebox-ebb1160cddbd58831cc8347dba94f208a0cb8500.tar.gz barebox-ebb1160cddbd58831cc8347dba94f208a0cb8500.tar.xz |
bootm: make verifying/hashing configurable
So long struct bootm_data.verify is a bool which enables CRC checking
(hashing). Extend this to a enum and add support for signature checking
in the same option. This also adds the corresponding globalvar and a
-s option to bootm.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/bootm.c')
-rw-r--r-- | commands/bootm.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/commands/bootm.c b/commands/bootm.c index 6db0e6596e..7a19fa2948 100644 --- a/commands/bootm.c +++ b/commands/bootm.c @@ -46,7 +46,7 @@ #include <magicvar.h> #include <asm-generic/memory_layout.h> -#define BOOTM_OPTS_COMMON "ca:e:vo:fd" +#define BOOTM_OPTS_COMMON "sca:e:vo:fd" #ifdef CONFIG_CMD_BOOTM_INITRD #define BOOTM_OPTS BOOTM_OPTS_COMMON "L:r:" @@ -65,7 +65,11 @@ static int do_bootm(int argc, char *argv[]) while ((opt = getopt(argc, argv, BOOTM_OPTS)) > 0) { switch(opt) { case 'c': - data.verify = 1; + if (data.verify < BOOTM_VERIFY_HASH) + data.verify = BOOTM_VERIFY_HASH; + break; + case 's': + data.verify = BOOTM_VERIFY_SIGNATURE; break; #ifdef CONFIG_CMD_BOOTM_INITRD case 'L': @@ -118,7 +122,8 @@ err_out: BAREBOX_CMD_HELP_START(bootm) BAREBOX_CMD_HELP_TEXT("Options:") -BAREBOX_CMD_HELP_OPT ("-c\t", "crc check uImage data") +BAREBOX_CMD_HELP_OPT ("-c\t", "hash check image integrity") +BAREBOX_CMD_HELP_OPT ("-s\t", "check signature of image") BAREBOX_CMD_HELP_OPT ("-d\t", "dry run: check data, but do not run") BAREBOX_CMD_HELP_OPT ("-f\t", "load images even if type is undetectable") #ifdef CONFIG_CMD_BOOTM_INITRD @@ -160,6 +165,7 @@ BAREBOX_MAGICVAR_NAMED(global_bootm_image_loadaddr, global.bootm.image.loadaddr, BAREBOX_MAGICVAR_NAMED(global_bootm_initrd, global.bootm.initrd, "bootm default initrd"); BAREBOX_MAGICVAR_NAMED(global_bootm_initrd_loadaddr, global.bootm.initrd.loadaddr, "bootm default initrd loadaddr"); BAREBOX_MAGICVAR_NAMED(global_bootm_oftree, global.bootm.oftree, "bootm default oftree"); +BAREBOX_MAGICVAR_NAMED(global_bootm_verify, global.bootm.verify, "bootm default verify level"); static struct binfmt_hook binfmt_uimage_hook = { .type = filetype_uimage, |