fit: add sha256 support

add sha256 support to fit images

Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heiko Schocher 2014-03-03 12:19:25 +01:00 committed by Tom Rini
parent 097dd3e0a9
commit 2842c1c242
5 changed files with 20 additions and 3 deletions

View file

@ -22,6 +22,7 @@ DECLARE_GLOBAL_DATA_PTR;
#include <bootstage.h> #include <bootstage.h>
#include <sha1.h> #include <sha1.h>
#include <sha256.h>
#include <u-boot/crc.h> #include <u-boot/crc.h>
#include <u-boot/md5.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, sha1_csum_wd((unsigned char *)data, data_len,
(unsigned char *)value, CHUNKSZ_SHA1); (unsigned char *)value, CHUNKSZ_SHA1);
*value_len = 20; *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) { } else if (IMAGE_ENABLE_MD5 && strcmp(algo, "md5") == 0) {
md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5); md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
*value_len = 16; *value_len = 16;

View file

@ -57,13 +57,18 @@ struct lmb;
# ifdef CONFIG_SPL_SHA1_SUPPORT # ifdef CONFIG_SPL_SHA1_SUPPORT
# define IMAGE_ENABLE_SHA1 1 # define IMAGE_ENABLE_SHA1 1
# endif # endif
# ifdef CONFIG_SPL_SHA256_SUPPORT
# define IMAGE_ENABLE_SHA256 1
# endif
# else # else
# define CONFIG_CRC32 /* FIT images need CRC32 support */ # define CONFIG_CRC32 /* FIT images need CRC32 support */
# define CONFIG_MD5 /* and MD5 */ # define CONFIG_MD5 /* and MD5 */
# define CONFIG_SHA1 /* and SHA1 */ # define CONFIG_SHA1 /* and SHA1 */
# define CONFIG_SHA256 /* and SHA256 */
# define IMAGE_ENABLE_CRC32 1 # define IMAGE_ENABLE_CRC32 1
# define IMAGE_ENABLE_MD5 1 # define IMAGE_ENABLE_MD5 1
# define IMAGE_ENABLE_SHA1 1 # define IMAGE_ENABLE_SHA1 1
# define IMAGE_ENABLE_SHA256 1
# endif # endif
#ifndef IMAGE_ENABLE_CRC32 #ifndef IMAGE_ENABLE_CRC32
@ -78,6 +83,10 @@ struct lmb;
#define IMAGE_ENABLE_SHA1 0 #define IMAGE_ENABLE_SHA1 0
#endif #endif
#ifndef IMAGE_ENABLE_SHA256
#define IMAGE_ENABLE_SHA256 0
#endif
#endif /* CONFIG_FIT */ #endif /* CONFIG_FIT */
#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH

View file

@ -258,14 +258,15 @@ void sha256_csum_wd(const unsigned char *input, unsigned int ilen,
{ {
sha256_context ctx; sha256_context ctx;
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG) #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
unsigned char *end, *curr; const unsigned char *end;
unsigned char *curr;
int chunk; int chunk;
#endif #endif
sha256_starts(&ctx); sha256_starts(&ctx);
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG) #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
curr = input; curr = (unsigned char *)input;
end = input + ilen; end = input + ilen;
while (curr < end) { while (curr < end) {
chunk = end - curr; chunk = end - curr;

View file

@ -40,7 +40,6 @@ CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
# TODO: CONFIG_CMD_LICENSE does not work # TODO: CONFIG_CMD_LICENSE does not work
hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX) hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX)
hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX) hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX) hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic
@ -85,6 +84,7 @@ dumpimage-mkimage-objs := aisimage.o \
os_support.o \ os_support.o \
pblimage.o \ pblimage.o \
sha1.o \ sha1.o \
sha256.o \
ublimage.o \ ublimage.o \
$(LIBFDT_OBJS) \ $(LIBFDT_OBJS) \
$(RSA_OBJS-y) $(RSA_OBJS-y)
@ -137,6 +137,7 @@ hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela$(SFX)
HOSTCFLAGS_crc32.o := -pedantic HOSTCFLAGS_crc32.o := -pedantic
HOSTCFLAGS_md5.o := -pedantic HOSTCFLAGS_md5.o := -pedantic
HOSTCFLAGS_sha1.o := -pedantic HOSTCFLAGS_sha1.o := -pedantic
HOSTCFLAGS_sha256.o := -pedantic
# Don't build by default # Don't build by default
#hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX) #hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX)

1
tools/sha256.c Normal file
View file

@ -0,0 +1 @@
#include "../lib/sha256.c"