fit: add sha256 support
authorHeiko Schocher <hs@denx.de>
Mon, 3 Mar 2014 11:19:25 +0000 (12:19 +0100)
committerTom Rini <trini@ti.com>
Fri, 21 Mar 2014 20:39:33 +0000 (16:39 -0400)
add sha256 support to fit images

Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Simon Glass <sjg@chromium.org>
common/image-fit.c
include/image.h
lib/sha256.c
tools/Makefile
tools/sha256.c [new file with mode: 0644]

index b94a3fe86dc3469bf651f09980b3d366b573cb04..77f32bce316fe41e74e630e5ae6488262988ec06 100644 (file)
@@ -22,6 +22,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #include <bootstage.h>
 #include <sha1.h>
+#include <sha256.h>
 #include <u-boot/crc.h>
 #include <u-boot/md5.h>
 
@@ -882,6 +883,10 @@ int calculate_hash(const void *data, int data_len, const char *algo,
                sha1_csum_wd((unsigned char *)data, data_len,
                             (unsigned char *)value, CHUNKSZ_SHA1);
                *value_len = 20;
+       } else if (IMAGE_ENABLE_SHA256 && strcmp(algo, "sha256") == 0) {
+               sha256_csum_wd((unsigned char *)data, data_len,
+                              (unsigned char *)value, CHUNKSZ_SHA256);
+               *value_len = SHA256_SUM_LEN;
        } else if (IMAGE_ENABLE_MD5 && strcmp(algo, "md5") == 0) {
                md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
                *value_len = 16;
index 6afd57bafddec7ac067a948897018d3bc334915c..52969aa653caf9b7c65686b575cfef45c7bfffd4 100644 (file)
@@ -57,13 +57,18 @@ struct lmb;
 #  ifdef CONFIG_SPL_SHA1_SUPPORT
 #   define IMAGE_ENABLE_SHA1   1
 #  endif
+#  ifdef CONFIG_SPL_SHA256_SUPPORT
+#   define IMAGE_ENABLE_SHA256 1
+#  endif
 # else
 #  define CONFIG_CRC32         /* FIT images need CRC32 support */
 #  define CONFIG_MD5           /* and MD5 */
 #  define CONFIG_SHA1          /* and SHA1 */
+#  define CONFIG_SHA256                /* and SHA256 */
 #  define IMAGE_ENABLE_CRC32   1
 #  define IMAGE_ENABLE_MD5     1
 #  define IMAGE_ENABLE_SHA1    1
+#  define IMAGE_ENABLE_SHA256  1
 # endif
 
 #ifndef IMAGE_ENABLE_CRC32
@@ -78,6 +83,10 @@ struct lmb;
 #define IMAGE_ENABLE_SHA1      0
 #endif
 
+#ifndef IMAGE_ENABLE_SHA256
+#define IMAGE_ENABLE_SHA256    0
+#endif
+
 #endif /* CONFIG_FIT */
 
 #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
index 7348162575ceaccda1fa0100298e47e2f0e25af9..3212baba5f6c253f635220bd55b0c31707ae9341 100644 (file)
@@ -258,14 +258,15 @@ void sha256_csum_wd(const unsigned char *input, unsigned int ilen,
 {
        sha256_context ctx;
 #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
-       unsigned char *end, *curr;
+       const unsigned char *end;
+       unsigned char *curr;
        int chunk;
 #endif
 
        sha256_starts(&ctx);
 
 #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
-       curr = input;
+       curr = (unsigned char *)input;
        end = input + ilen;
        while (curr < end) {
                chunk = end - curr;
index 097cc1df17838af2f0904f1f6a361efb94d328d2..528d1adc2d97d55f217b13ea883a02c40f099da5 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
 
 # TODO: CONFIG_CMD_LICENSE does not work
 hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX)
-
 hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
 hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
 HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic
@@ -85,6 +84,7 @@ dumpimage-mkimage-objs := aisimage.o \
                        os_support.o \
                        pblimage.o \
                        sha1.o \
+                       sha256.o \
                        ublimage.o \
                        $(LIBFDT_OBJS) \
                        $(RSA_OBJS-y)
@@ -137,6 +137,7 @@ hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela$(SFX)
 HOSTCFLAGS_crc32.o := -pedantic
 HOSTCFLAGS_md5.o := -pedantic
 HOSTCFLAGS_sha1.o := -pedantic
+HOSTCFLAGS_sha256.o := -pedantic
 
 # Don't build by default
 #hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX)
diff --git a/tools/sha256.c b/tools/sha256.c
new file mode 100644 (file)
index 0000000..8ca931f
--- /dev/null
@@ -0,0 +1 @@
+#include "../lib/sha256.c"