From 0aa9ea61cfbd9b4ddb9339ac1e0f4692bdc831da Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 20 Jun 2021 13:50:35 -0500 Subject: [PATCH 15/29] tools: Refactor mkimage linking with OpenSSL Some mkimage features require linking with OpenSSL. Instead of linking OpenSSL based on the individual platform symbols, create a single Kconfig symbol which can be selected by platforms as necessary. Then, all OpenSSL-dependent image types can be enabled at once. Signed-off-by: Samuel Holland --- arch/arm/mach-imx/mxs/Kconfig | 2 ++ arch/arm/mach-mvebu/Kconfig | 1 + common/Kconfig.boot | 2 ++ scripts/config_whitelist.txt | 1 - tools/Kconfig | 3 +++ tools/Makefile | 22 +++++++--------------- tools/mxsimage.c | 3 --- 7 files changed, 15 insertions(+), 19 deletions(-) diff --git a/arch/arm/mach-imx/mxs/Kconfig b/arch/arm/mach-imx/mxs/Kconfig index 9f48ffda41..f067a9c38e 100644 --- a/arch/arm/mach-imx/mxs/Kconfig +++ b/arch/arm/mach-imx/mxs/Kconfig @@ -3,6 +3,7 @@ if ARCH_MX23 config MX23 bool default y + select MKIMAGE_LINK_OPENSSL choice prompt "MX23 board select" @@ -34,6 +35,7 @@ if ARCH_MX28 config MX28 bool default y + select MKIMAGE_LINK_OPENSSL choice prompt "MX28 board select" diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index cda65f7478..2a4f861015 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -29,6 +29,7 @@ config ARMADA_38X bool select ARMADA_32BIT select HAVE_MVEBU_EFUSE + select MKIMAGE_LINK_OPENSSL config ARMADA_38X_HS_IMPEDANCE_THRESH hex "Armada 38x USB 2.0 High-Speed Impedance Threshold (0x0 - 0x7)" diff --git a/common/Kconfig.boot b/common/Kconfig.boot index 89a3161f1f..7d022d1ccf 100644 --- a/common/Kconfig.boot +++ b/common/Kconfig.boot @@ -80,6 +80,7 @@ config FIT_SIGNATURE select RSA_VERIFY select IMAGE_SIGN_INFO select FIT_FULL_CHECK + select MKIMAGE_LINK_OPENSSL help This option enables signature verification of FIT uImages, using a hash signed and verified using RSA. If @@ -115,6 +116,7 @@ config FIT_CIPHER bool "Enable ciphering data in a FIT uImages" depends on DM select AES + select MKIMAGE_LINK_OPENSSL help Enable the feature of data ciphering/unciphering in the tool mkimage and in the u-boot support of the FIT image. diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 3dbcc042a8..e013e1f26a 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -1066,7 +1066,6 @@ CONFIG_MXC_UART_BASE CONFIG_MXC_USB_FLAGS CONFIG_MXC_USB_PORT CONFIG_MXC_USB_PORTSC -CONFIG_MXS CONFIG_MXS_AUART CONFIG_MXS_AUART_BASE CONFIG_MXS_OCOTP diff --git a/tools/Kconfig b/tools/Kconfig index b2f5012240..df3dffa9e1 100644 --- a/tools/Kconfig +++ b/tools/Kconfig @@ -9,4 +9,7 @@ config MKIMAGE_DTC_PATH some cases the system dtc may not support all required features and the path to a different version should be given here. +config MKIMAGE_LINK_OPENSSL + bool + endmenu diff --git a/tools/Makefile b/tools/Makefile index d020c55d66..8843185703 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -75,9 +75,10 @@ ECDSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/ecdsa/, ecdsa-libcrypto.o) AES_OBJS-$(CONFIG_FIT_CIPHER) := $(addprefix lib/aes/, \ aes-encrypt.o aes-decrypt.o) -# Cryptographic helpers that depend on openssl/libcrypto -LIBCRYPTO_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/, \ - fdt-libcrypto.o) +# Cryptographic helpers and image types that depend on openssl/libcrypto +OPENSSL_OBJS-$(CONFIG_MKIMAGE_LINK_OPENSSL) := \ + lib/fdt-libcrypto.o \ + mxsimage.o \ ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o @@ -101,7 +102,6 @@ dumpimage-mkimage-objs := aisimage.o \ kwbimage.o \ lib/md5.o \ lpc32xximage.o \ - mxsimage.o \ omapimage.o \ os_support.o \ pblimage.o \ @@ -121,7 +121,7 @@ dumpimage-mkimage-objs := aisimage.o \ zynqimage.o \ zynqmpimage.o \ zynqmpbif.o \ - $(LIBCRYPTO_OBJS-y) \ + $(OPENSSL_OBJS-y) \ $(LIBFDT_OBJS) \ gpimage.o \ gpimage-common.o \ @@ -136,12 +136,7 @@ fit_info-objs := $(dumpimage-mkimage-objs) fit_info.o fit_check_sign-objs := $(dumpimage-mkimage-objs) fit_check_sign.o file2include-objs := file2include.o -ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) -# Add CONFIG_MXS into host CFLAGS, so we can check whether or not register -# the mxsimage support within tools/mxsimage.c . -HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS -endif - +ifneq ($(CONFIG_MKIMAGE_LINK_OPENSSL),) ifdef CONFIG_FIT_SIGNATURE # This affects include/image.h, but including the board config file # is tricky, so manually define this options here. @@ -159,12 +154,9 @@ ifdef CONFIG_SYS_U_BOOT_OFFS HOSTCFLAGS_kwbimage.o += -DCONFIG_SYS_U_BOOT_OFFS=$(CONFIG_SYS_U_BOOT_OFFS) endif -ifneq ($(CONFIG_ARMADA_38X),) +# Enable image features which depend on OpenSSL. HOSTCFLAGS_kwbimage.o += -DCONFIG_KWB_SECURE -endif -# MXSImage needs LibSSL -ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_FIT_SIGNATURE)$(CONFIG_FIT_CIPHER),) HOSTCFLAGS_kwbimage.o += \ $(shell pkg-config --cflags libssl libcrypto 2> /dev/null || echo "") HOSTLDLIBS_mkimage += \ diff --git a/tools/mxsimage.c b/tools/mxsimage.c index 002f4b525a..2bfbb421eb 100644 --- a/tools/mxsimage.c +++ b/tools/mxsimage.c @@ -5,8 +5,6 @@ * Copyright (C) 2012-2013 Marek Vasut */ -#ifdef CONFIG_MXS - #include #include #include @@ -2363,4 +2361,3 @@ U_BOOT_IMAGE_TYPE( NULL, mxsimage_generate ); -#endif -- 2.31.1