[U-Boot] [PATCH v2 3/8] fit: add sha256 support
Simon Glass
sjg at chromium.org
Sat Feb 15 23:47:13 CET 2014
Hi Heiko,
On 8 February 2014 22:34, Heiko Schocher <hs at denx.de> wrote:
> add sha256 support to fit images
>
> Signed-off-by: Heiko Schocher <hs at denx.de>
> Acked-by: Simon Glass <sjg at chromium.org>
Sorry I spotted a few things since.
>
> ---
> changes for v2:
> - add Acked-by from Simon Glass
>
> common/image-fit.c | 5 +++++
> include/image.h | 9 +++++++++
> lib/sha256.c | 2 +-
> tools/Makefile | 3 +++
> 4 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/common/image-fit.c b/common/image-fit.c
> index cf4b67e..f32feb6 100644
> --- a/common/image-fit.c
> +++ b/common/image-fit.c
> @@ -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;
> diff --git a/include/image.h b/include/image.h
> index 7de2bb2..f001a5f 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -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 */
Thinking about this again, I wonder if we want to force SHA256 to be
enabled when FIT is used? Should we just hold the existing
CONFIG_SHA256 setting in the board file and change:
> # define IMAGE_ENABLE_CRC32 1
> # define IMAGE_ENABLE_MD5 1
> # define IMAGE_ENABLE_SHA1 1
> +# define IMAGE_ENABLE_SHA256 1
this to:
#ifdef CONFIG_SHA256
+# define IMAGE_ENABLE_SHA256 0
#endif
?
> # 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
> diff --git a/lib/sha256.c b/lib/sha256.c
> index 7348162..5766de2 100644
> --- a/lib/sha256.c
> +++ b/lib/sha256.c
> @@ -258,7 +258,7 @@ 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, *curr;
Why remove the const here?
> int chunk;
> #endif
>
> diff --git a/tools/Makefile b/tools/Makefile
> index 328cea3..5e36e5e 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -71,6 +71,7 @@ EXT_OBJ_FILES-y += common/image-sig.o
> EXT_OBJ_FILES-y += lib/crc32.o
> EXT_OBJ_FILES-y += lib/md5.o
> EXT_OBJ_FILES-y += lib/sha1.o
> +EXT_OBJ_FILES-y += lib/sha256.o
>
> # Source files located in the tools directory
> NOPED_OBJ_FILES-y += aisimage.o
> @@ -223,6 +224,7 @@ $(obj)dumpimage$(SFX): $(obj)aisimage.o \
> $(obj)os_support.o \
> $(obj)pblimage.o \
> $(obj)sha1.o \
> + $(obj)sha256.o \
> $(obj)ublimage.o \
> $(LIBFDT_OBJS) \
> $(RSA_OBJS)
> @@ -252,6 +254,7 @@ $(obj)mkimage$(SFX): $(obj)aisimage.o \
> $(obj)os_support.o \
> $(obj)pblimage.o \
> $(obj)sha1.o \
> + $(obj)sha256.o \
> $(obj)ublimage.o \
> $(LIBFDT_OBJS) \
> $(RSA_OBJS)
> --
> 1.8.3.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Regards,
Simon
More information about the U-Boot
mailing list