summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/bootm.c25
-rw-r--r--cmd/bootz.c8
2 files changed, 33 insertions, 0 deletions
diff --git a/cmd/bootm.c b/cmd/bootm.c
index df0bbe19ca..679ae5d5df 100644
--- a/cmd/bootm.c
+++ b/cmd/bootm.c
@@ -123,6 +123,31 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return do_bootm_subcommand(cmdtp, flag, argc, argv);
}
+#ifdef CONFIG_SECURE_BOOT
+ extern int authenticate_image(
+ uint32_t ddr_start, uint32_t raw_image_size);
+
+ switch (genimg_get_format((const void *)load_addr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
+ case IMAGE_FORMAT_LEGACY:
+ if (authenticate_image(load_addr,
+ image_get_image_size((image_header_t *)load_addr)) != 0) {
+ printf("Authenticate uImage Fail, Please check\n");
+ return 1;
+ }
+ break;
+#endif
+#ifdef CONFIG_ANDROID_BOOT_IMAGE
+ case IMAGE_FORMAT_ANDROID:
+ /* Do this authentication in boota command */
+ break;
+#endif
+ default:
+ printf("Not valid image format for Authentication, Please check\n");
+ return 1;
+ }
+#endif
+
return do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START |
BOOTM_STATE_FINDOS | BOOTM_STATE_FINDOTHER |
BOOTM_STATE_LOADOS |
diff --git a/cmd/bootz.c b/cmd/bootz.c
index ceff01bc04..7d8a77d8d9 100644
--- a/cmd/bootz.c
+++ b/cmd/bootz.c
@@ -55,6 +55,14 @@ static int bootz_start(cmd_tbl_t *cmdtp, int flag, int argc,
if (bootm_find_images(flag, argc, argv))
return 1;
+#ifdef CONFIG_SECURE_BOOT
+ extern int authenticate_image(
+ uint32_t ddr_start, uint32_t raw_image_size);
+ if (authenticate_image(images->ep, zi_end - zi_start) != 0) {
+ printf("Authenticate zImage Fail, Please check\n");
+ return 1;
+ }
+#endif
return 0;
}