We rename CONFIG_FIT_DISABLE_SHA256 to CONFIG_FIT_ENABLE_SHA256_SUPPORT which
is enabled by default and now a positive option.  Convert the handful of boards
that were disabling it before to save space.

Cc: Dirk Eibach <eib...@gdsys.de>
Cc: Lukasz Dalek <luk0...@gmail.com>
Signed-off-by: Tom Rini <tr...@konsulko.com>
Reviewed-by: Simon Glass <s...@chromium.org>
---
Changes in v3:
include/image.h was missing #include additions so that we would be able
to tell if CONFIG_FIT_ENABLE_SHA256_SUPPORT is enabled or not, breaking
verified boot.

 Kconfig                        | 13 +++++++++++++
 README                         |  9 ---------
 configs/dlvision-10g_defconfig |  1 +
 configs/dlvision_defconfig     |  1 +
 configs/h2200_defconfig        |  1 +
 configs/io_defconfig           |  1 +
 configs/iocon_defconfig        |  1 +
 configs/neo_defconfig          |  1 +
 include/configs/dlvision-10g.h |  3 ---
 include/configs/dlvision.h     |  3 ---
 include/configs/h2200.h        |  1 -
 include/configs/io.h           |  3 ---
 include/configs/iocon.h        |  3 ---
 include/configs/neo.h          |  3 ---
 include/image.h                | 17 +++++++----------
 scripts/config_whitelist.txt   |  1 -
 16 files changed, 26 insertions(+), 36 deletions(-)

diff --git a/Kconfig b/Kconfig
index 81b4226463ae..d565e7adb76d 100644
--- a/Kconfig
+++ b/Kconfig
@@ -156,6 +156,19 @@ config FIT
 
 if FIT
 
+config FIT_ENABLE_SHA256_SUPPORT
+       bool "Support SHA256 checksum of FIT image contents"
+       default y
+       help
+         Enable this to support SHA256 checksum of FIT image contents. A
+         SHA256 checksum is a 256-bit (32-byte) hash value used to check that
+         the image contents have not been corrupted. SHA256 is recommended
+         for use in secure applications since (as at 2016) there is no known
+         feasible attack that could produce a 'collision' with differing
+         input data. Use this for the highest security. Note that only the
+         SHA256 variant is supported: SHA512 and others are not currently
+         supported in U-Boot.
+
 config FIT_SIGNATURE
        bool "Enable signature verification of FIT uImages"
        depends on DM
diff --git a/README b/README
index 4f0dbd4fca6d..daa39a5a92f8 100644
--- a/README
+++ b/README
@@ -3091,15 +3091,6 @@ FIT uImage format:
                This define is introduced, as the legacy image format is
                enabled per default for backward compatibility.
 
-- FIT image support:
-               CONFIG_FIT_DISABLE_SHA256
-               Supporting SHA256 hashes has quite an impact on binary size.
-               For constrained systems sha256 hash support can be disabled
-               with this option.
-
-               TODO(s...@chromium.org): Adjust this option to be positive,
-               and move it to Kconfig
-
 - Standalone program support:
                CONFIG_STANDALONE_LOAD_ADDR
 
diff --git a/configs/dlvision-10g_defconfig b/configs/dlvision-10g_defconfig
index edafe73e7ca8..b976e6099968 100644
--- a/configs/dlvision-10g_defconfig
+++ b/configs/dlvision-10g_defconfig
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING=" dlvision-10g 0.06"
 CONFIG_4xx=y
 CONFIG_TARGET_DLVISION_10G=y
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=5
diff --git a/configs/dlvision_defconfig b/configs/dlvision_defconfig
index 2ceb057ab5f3..16a199a99e2d 100644
--- a/configs/dlvision_defconfig
+++ b/configs/dlvision_defconfig
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING=" dlvision 0.02"
 CONFIG_4xx=y
 CONFIG_TARGET_DLVISION=y
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=5
diff --git a/configs/h2200_defconfig b/configs/h2200_defconfig
index e7afd81007c1..74f157db56e4 100644
--- a/configs/h2200_defconfig
+++ b/configs/h2200_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_H2200=y
 # CONFIG_MMC is not set
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/io_defconfig b/configs/io_defconfig
index 422d09002405..442f4dfaab0e 100644
--- a/configs/io_defconfig
+++ b/configs/io_defconfig
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING=" io 0.06"
 CONFIG_4xx=y
 CONFIG_TARGET_IO=y
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=5
diff --git a/configs/iocon_defconfig b/configs/iocon_defconfig
index 23704e4421c2..d2d0116e0355 100644
--- a/configs/iocon_defconfig
+++ b/configs/iocon_defconfig
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING=" iocon 0.06"
 CONFIG_4xx=y
 CONFIG_TARGET_IOCON=y
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/neo_defconfig b/configs/neo_defconfig
index 666a22679022..cc6dffe3a1ef 100644
--- a/configs/neo_defconfig
+++ b/configs/neo_defconfig
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING=" neo 0.02"
 CONFIG_4xx=y
 CONFIG_TARGET_NEO=y
 CONFIG_FIT=y
+# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=5
diff --git a/include/configs/dlvision-10g.h b/include/configs/dlvision-10g.h
index 6b3cd15cb65d..575a75e66b96 100644
--- a/include/configs/dlvision-10g.h
+++ b/include/configs/dlvision-10g.h
@@ -31,9 +31,6 @@
 #define PLLMR0_DEFAULT PLLMR0_266_133_66
 #define PLLMR1_DEFAULT PLLMR1_266_133_66
 
-/* new uImage format support */
-#define CONFIG_FIT_DISABLE_SHA256
-
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
diff --git a/include/configs/dlvision.h b/include/configs/dlvision.h
index 6269768df1af..b0df7e183324 100644
--- a/include/configs/dlvision.h
+++ b/include/configs/dlvision.h
@@ -29,9 +29,6 @@
 #define PLLMR0_DEFAULT PLLMR0_266_133_66_33
 #define PLLMR1_DEFAULT PLLMR1_266_133_66_33
 
-/* new uImage format support */
-#define CONFIG_FIT_DISABLE_SHA256
-
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
diff --git a/include/configs/h2200.h b/include/configs/h2200.h
index 0891b02d3522..220679fa7f11 100644
--- a/include/configs/h2200.h
+++ b/include/configs/h2200.h
@@ -110,7 +110,6 @@
 #define CONFIG_BAUDRATE                        115200
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 38400, 115200 }
 
-#define CONFIG_FIT_DISABLE_SHA256
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_INITRD_TAG
diff --git a/include/configs/io.h b/include/configs/io.h
index 8a21b3f60f75..c105921978c3 100644
--- a/include/configs/io.h
+++ b/include/configs/io.h
@@ -31,9 +31,6 @@
 #define PLLMR0_DEFAULT PLLMR0_266_133_66
 #define PLLMR1_DEFAULT PLLMR1_266_133_66
 
-/* new uImage format support */
-#define CONFIG_FIT_DISABLE_SHA256
-
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
diff --git a/include/configs/iocon.h b/include/configs/iocon.h
index 9c3be78bc73b..afa69942e84a 100644
--- a/include/configs/iocon.h
+++ b/include/configs/iocon.h
@@ -33,9 +33,6 @@
 #define PLLMR0_DEFAULT PLLMR0_266_133_66
 #define PLLMR1_DEFAULT PLLMR1_266_133_66
 
-/* new uImage format support */
-#define CONFIG_FIT_DISABLE_SHA256
-
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
diff --git a/include/configs/neo.h b/include/configs/neo.h
index f6b4cc01c288..094b4fbc010e 100644
--- a/include/configs/neo.h
+++ b/include/configs/neo.h
@@ -31,9 +31,6 @@
 #define PLLMR0_DEFAULT PLLMR0_266_133_66_33
 #define PLLMR1_DEFAULT PLLMR1_266_133_66_33
 
-/* new uImage format support */
-#define CONFIG_FIT_DISABLE_SHA256
-
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
diff --git a/include/image.h b/include/image.h
index 1e686b76d3eb..3e18e78eb740 100644
--- a/include/image.h
+++ b/include/image.h
@@ -29,12 +29,14 @@ struct lmb;
 #define IMAGE_ENABLE_FIT       1
 #define IMAGE_ENABLE_OF_LIBFDT 1
 #define CONFIG_FIT_VERBOSE     1 /* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_ENABLE_SHA256_SUPPORT       1
 
 #define IMAGE_ENABLE_IGNORE    0
 #define IMAGE_INDENT_STRING    ""
 
 #else
 
+#include <config.h>
 #include <lmb.h>
 #include <asm/u-boot.h>
 #include <command.h>
@@ -62,9 +64,6 @@ 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 */
@@ -73,14 +72,8 @@ struct lmb;
 #  define IMAGE_ENABLE_CRC32   1
 #  define IMAGE_ENABLE_MD5     1
 #  define IMAGE_ENABLE_SHA1    1
-#  define IMAGE_ENABLE_SHA256  1
 # endif
 
-#ifdef CONFIG_FIT_DISABLE_SHA256
-#undef CONFIG_SHA256
-#undef IMAGE_ENABLE_SHA256
-#endif
-
 #ifndef IMAGE_ENABLE_CRC32
 #define IMAGE_ENABLE_CRC32     0
 #endif
@@ -93,7 +86,11 @@ struct lmb;
 #define IMAGE_ENABLE_SHA1      0
 #endif
 
-#ifndef IMAGE_ENABLE_SHA256
+#if defined(CONFIG_FIT_ENABLE_SHA256_SUPPORT) || \
+       defined(CONFIG_SPL_SHA256_SUPPORT)
+#define CONFIG_SHA256
+#define IMAGE_ENABLE_SHA256    1
+#else
 #define IMAGE_ENABLE_SHA256    0
 #endif
 
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index f6c9101e9573..dc7782e58e23 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -1129,7 +1129,6 @@ CONFIG_FFUART
 CONFIG_FILE
 CONFIG_FIRMWARE_OFFSET
 CONFIG_FIRMWARE_SIZE
-CONFIG_FIT_DISABLE_SHA256
 CONFIG_FIXED_PHY
 CONFIG_FIXED_PHY_ADDR
 CONFIG_FIXED_SDHCI_ALIGNED_BUFFER
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to