summaryrefslogtreecommitdiffstats
path: root/commands/bootm.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-01-15 14:37:45 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-01-26 22:45:42 +0100
commitebb1160cddbd58831cc8347dba94f208a0cb8500 (patch)
tree9926fe69c45a5396d2e30479dfdd5de32ae59cdd /commands/bootm.c
parent6e686491a5478c13554536a65db6381181472133 (diff)
downloadbarebox-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.c12
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,