From 93c1358bcd6b249260f239042fba025764b4a89e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pali=20Roh=C3=A1r?= Date: Tue, 26 Jul 2022 16:11:58 +0200 Subject: [PATCH] cmd: mvebu/bubt: Add support for sha512 checksum validation for Armada 3700 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Armada 3700 BootROM supports also images with sha512 checksums and mox-imager tool [1] generates such bootable images. Without sha512 support U-Boot bubt command just prints error message: Error: Unsupported hash_algorithm_id = 64 Error: Image header verification failed This patch adds support for sha512 checksum validation for Armada 3700 images. With it bubt prints: Image checksum...OK! [1] - https://gitlab.nic.cz/turris/mox-boot-builder.git Signed-off-by: Pali Rohár Reviewed-by: Stefan Roese --- cmd/mvebu/Kconfig | 1 + cmd/mvebu/bubt.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/cmd/mvebu/Kconfig b/cmd/mvebu/Kconfig index 39963db..120397d 100644 --- a/cmd/mvebu/Kconfig +++ b/cmd/mvebu/Kconfig @@ -4,6 +4,7 @@ depends on ARCH_MVEBU config CMD_MVEBU_BUBT bool "bubt" select SHA256 if ARMADA_3700 + select SHA512 if ARMADA_3700 help bubt - Burn a u-boot image to flash For details about bubt command please see the documentation diff --git a/cmd/mvebu/bubt.c b/cmd/mvebu/bubt.c index 2924b15..276069a 100644 --- a/cmd/mvebu/bubt.c +++ b/cmd/mvebu/bubt.c @@ -26,6 +26,7 @@ #endif #include #include +#include #if defined(CONFIG_ARMADA_8K) #define MAIN_HDR_MAGIC 0xB105B002 @@ -566,8 +567,10 @@ static int check_image_header(void) int image_num; u8 hash_160_output[SHA1_SUM_LEN]; u8 hash_256_output[SHA256_SUM_LEN]; + u8 hash_512_output[SHA512_SUM_LEN]; sha1_context hash1_text; sha256_context hash256_text; + sha512_context hash512_text; u8 *hash_output; u32 hash_algorithm_id; u32 image_size_to_hash; @@ -637,6 +640,12 @@ static int check_image_header(void) sha256_finish(&hash256_text, hash_256_output); hash_output = hash_256_output; break; + case SHA512_SUM_LEN: + sha512_starts(&hash512_text); + sha512_update(&hash512_text, buff, image_size_to_hash); + sha512_finish(&hash512_text, hash_512_output); + hash_output = hash_512_output; + break; default: printf("Error: Unsupported hash_algorithm_id = %d\n", hash_algorithm_id); -- 2.7.4