summaryrefslogtreecommitdiff
path: root/tools/Makefile
AgeCommit message (Collapse)Author
6 daysMerge branch 'next'Tom Rini
2026-03-26tools: Reorganize mkfwumdata tool into fwumdata_src directoryKory Maincent
Update FWU metadata-related tools by moving mkfwumdata.c into a new tools/fwumdata_src/ directory structure. This refactoring prepares for the addition of the fwumdata runtime tool, which will allow editing FWU metadata directly from the target. The Kconfig and Makefile entries are also moved into separate files within the new directory (Kconfig and fwumdata.mk respectively) to keep all FWU metadata tool configurations together and improve maintainability. Signed-off-by: Kory Maincent <[email protected]> Tested-by: Dario Binacchi <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]>
2026-03-10kbuild: fix cross_tools compilationIlias Apalodimas
Frieder reports that after the kbuild sync running make tools-only_defconfig make cross_tools fails with UPD include/generated/timestamp_autogenerated.h PYMOD rebuild tools/Makefile:359: *** insufficient number of arguments (1) to function 'filter'. Stop. make: *** [Makefile:2191: tools] Error 2 After the sync 'hostprogs-always-y' contains the complete list of the tools we need to strip, so the $(filter) command is not needed. Fixes: bd3f9ee679b4d ("kbuild: Bump the build system to 6.1") Reported-by: Frieder Schrempf <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]> Tested-by: Frieder Schrempf <[email protected]>
2026-01-02kbuild: Bump the build system to 6.1Sughosh Ganu
Our last sync with the kernel was 5.1. We are so out of sync now, that tracking the patches and backporting them one by one makes little sense and it's going to take ages. This is an attempt to sync up Makefiles to 6.1. Unfortunately due to sheer amount of patches this is not easy to review, but that's what we decided during a community call for the bump to 5.1, so we are following the same guidelines here. Signed-off-by: Sughosh Ganu <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]>a #rebased on -next
2025-12-11tools: mkimage: Add Amlogic Boot Image typeJonas Karlman
Add support for creating an Amlogic Boot Image that pass CHK in BL1 on Amlogic AArch64 SoCs. Images can optionally be signed for secure boot scenario, however creation of signed images has not been implemented. Example of how to use it: # Create an amlogic boot image tools/mkimage -T amlimage -n gxbb -d u-boot-spl.bin u-boot-amlogic.bin # List boot image header information tools/mkimage -l u-boot-amlogic.bin # Extract amlogic boot image payload tools/dumpimage -T amlimage -o bl2-payload.bin u-boot-amlogic.bin Or with binman using something like: binman { u-boot-amlogic { filename = "u-boot-amlogic.bin"; pad-byte = <0xff>; mkimage { filename = "bl2.bin"; args = "-n", "gxbb", "-T", "amlimage"; u-boot-spl { }; }; }; }; Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Jonas Karlman <[email protected]> [Ferass: check digest type in _print_header, version in _verify_image] Signed-off-by: Ferass El Hafidi <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
2025-09-10tools: Do not generate logo when cross-buildingJan Kiszka
This cannot work (unless qemu-user is registered in binfmt_misc) as the tools will be for a different architecture. Fixes "make cross_tools" in case CONFIG_VIDEO_LOGO is enabled. Signed-off-by: Jan Kiszka <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2025-09-09tools: Drop meaningless comment from MakefileJan Kiszka
Introduced by 245b1029e1af, probably a debug left-over. Signed-off-by: Jan Kiszka <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2025-06-22tools/fit_check_sign: make the module dependent on CONFIG_FIT_SIGNATUREShiji Yang
The function definition of fit_check_sign() is guarded by "#ifdef CONFIG_FIT_SIGNATURE" in "tools/image-host.c". If we try to build it without CONFIG_FIT_SIGNATURE, we will get an error: /usr/bin/ld: tools/fit_check_sign.o: in function `main': fit_check_sign.c:(.text.startup+0x165): undefined reference to `fit_check_sign' collect2: error: ld returned 1 exit status Fixes: 9c79c8fe70da ("tools/fit_check_sign: make key optional") Signed-off-by: Shiji Yang <[email protected]>
2025-04-10tools/fit_check_sign: make key optionalDaniel Golle
Allow invoking fit_check_sig without the key parameter, allowing to validate only checksums and hashes for unsigned images. Signed-off-by: Daniel Golle <[email protected]>
2025-04-10tools: add pkg-config for preload_check_signRaymond Mao
The cflags and ldflags of preload_check_sign depend on the openssl package thus pkg-config is needed to get the location where openssl is installed. This fix a potential build failure when openssl is not from the distro and installed in a varied place. Signed-off-by: Raymond Mao <[email protected]>
2025-03-13tools: add HOSTCFLAGS from openssl pkg-configRaymond Mao
HOSTCFLAGS of some tools components (image-host, rsa-sign and ecdsa-libcrypto) depend on the directory where openssl is installed. Add them via pkg-config. This fixes a potential build failure in tools when openssl in installed in varied directories. Signed-off-by: Raymond Mao <[email protected]> Reviewed-by: Peter Robinson <[email protected]>
2025-02-28tools: Add preload_check_sign to authenticate images with a pre-loadPaul HENRYS
preload_check_sign is added so that it can be used to authenticate images signed with the pre-load signature supported by binman and U-Boot. It could also be used to test the signature in binman tests signing images with the pre-load. Signed-off-by: Paul HENRYS <[email protected]>
2025-01-18lib: sha256: move common function to sha256_common.cPhilippe Reynes
The function sha256_csum_wd is defined in lib/sha256.c and in lib/mbedtls/sha256.c. To avoid duplicating this function (and future function), we move this function to the file lib/sha256_common.c Reviewed-by: Raymond Mao <[email protected]> Signed-off-by: Philippe Reynes <[email protected]>
2024-09-12tools: mkeficapsule: use u-boot UUID libraryCaleb Connolly
Replace the use of libuuid with U-Boot's own UUID library. This prepares us to add support for generating v5 GUIDs. Signed-off-by: Caleb Connolly <[email protected]>
2024-01-11tools: kwbimage: Allow disabling build on non-mvebu platformsAlexander Dahl
Some users want to build with CONFIG_TOOLS_LIBCRYPTO disabled, which in general is possible for at least some boards. 32-bit mvebu however requires kwbimage for building SPL, and kwbimage has a hard dependency to host OpenSSL. The new symbol CONFIG_TOOLS_KWBIMAGE allows disabling kwbimage build on non-mvebu platforms, and thus building without host libcrypto from OpenSSL. Based on previous work and discussions, see links below. Link: https://lore.kernel.org/u-boot/[email protected]/ Link: https://lore.kernel.org/u-boot/[email protected]/ Link: https://lore.kernel.org/u-boot/[email protected]/ Cc: Marek Vasut <[email protected]> Cc: Paul-Erwan Rio <[email protected]> Signed-off-by: Alexander Dahl <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-09-20tools: mkimage: Add StarFive SPL image supportHeinrich Schuchardt
The StarFive JH7110 base boards require a header to be prefixed to the SPL binary image. This has previously done with a vendor tool 'spl_tool' published under a GPL-2-or-later license. Integrate this capability into mkimage. Signed-off-by: Heinrich Schuchardt <[email protected]> Tested-by: Chanho Park <[email protected]> Tested-by: Milan P. Stanić <[email protected]>
2023-07-07Kbuild: Fix cleanup of generated sources in toolsTobias Deiminger
On 'make clean', generated C files in tools/env/ and tools/boot/ are currently not removed, but they should. Auto-generation for shared sources was first introduced with ad80c4a3220b ("kbuild, tools: generate wrapper C sources automatically by Makefile"). Cleanup later regressed (see Fixes:), because shared files were moved out of lib/ and common/, but 'clean-dirs := lib common' was not adjusted accordingly. Further, the generated tools/env/embedded.c became a sibling to project files, which prevents directory-wise cleanup at all. To solve it, we establishe tools/generated/ as the sole place for generated sources. Wrappers are now generated as tools/generated/<orig_dirname>/<orig_filename>, and 'make clean' can remove tools/generated/ as a whole (Linux Makefile.asm-generic headers are cleaned similarly). This way we don't have to maintain separate clean-files or clean-dirs entries for each single added or moved wrapper file. Fixes: 0649cd0d4908 ("Move environment files from common/ to env/") Fixes: 19a91f2464a8 ("Create a new boot/ directory") Signed-off-by: Tobias Deiminger <[email protected]> [trini: Correct mkfwupdate case] Signed-off-by: Tom Rini <[email protected]>
2023-06-12Merge tag v2023.07-rc4 into nextTom Rini
Signed-off-by: Tom Rini <[email protected]>
2023-06-09tools: Add mkfwumdata tool for FWU metadata imageMasami Hiramatsu
Add 'mkfwumdata' tool to generate FWU metadata image for the meta-data partition to be used in A/B Update imeplementation. Signed-off-by: Sughosh Ganu <[email protected]> Signed-off-by: Jassi Brar <[email protected]> Signed-off-by: Masami Hiramatsu <[email protected]>
2023-05-13tools: spkgimage: add Renesas SPKG formatRalph Siemsen
Renesas RZ/N1 devices contain BootROM code that loads a custom SPKG image from QSPI, NAND or USB DFU. Support this format in mkimage tool. SPKGs can optionally be signed, however creation of signed SPKG is not currently supported. Example of how to use it: tools/mkimage -n board/schneider/rzn1-snarc/spkgimage.cfg \ -T spkgimage -a 0x20040000 -e 0x20040000 \ -d u-boot.bin u-boot.bin.spkg The config file (spkgimage.cfg in this example) contains additional parameters such as NAND ECC settings. Signed-off-by: Ralph Siemsen <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2023-03-14tools: add fdt_add_pubkeyRoman Kopytin
Having to use the -K option to mkimage to populate U-Boot's .dtb with the public key while signing the kernel FIT image is often a little awkward. In particular, when using a meta-build system such as bitbake/Yocto, having the tasks of the kernel and U-Boot recipes intertwined, modifying deployed artifacts and rebuilding U-Boot with an updated .dtb is quite cumbersome. Also, in some scenarios one may wish to build U-Boot complete with the public key(s) embedded in the .dtb without the corresponding private keys being present on the same build host. So this adds a simple tool that allows one to disentangle the kernel and U-Boot builds, by simply copy-pasting just enough of the mkimage code to allow one to add a public key to a .dtb. When using mkimage, some of the information is taken from the .its used to build the kernel (algorithm and key name), so that of course needs to be supplied on the command line. Signed-off-by: Roman Kopytin <[email protected]> Signed-off-by: Ivan Mikhaylov <[email protected]> Signed-off-by: Jan Kiszka <[email protected]> Cc: Rasmus Villemoes <[email protected]>
2023-02-11trace: Update proftool to use new binary formatSimon Glass
The old text format is not much used anymore. Instead a new trace-cmd tool has introduced a binary format for trace records. Add support for generating this format. This involves removing the old text format, adding various helpers for the new format and adjusting the code to use an output file instead of stdout. Signed-off-by: Simon Glass <[email protected]>
2023-02-07tools: Drop xway-swap-bytes toolSimon Glass
This is very old and does not appear to be used. The CONFIG option enabling it is no-longer present. Drop it. Signed-off-by: Simon Glass <[email protected]>
2023-02-07Drop ubsha1 toolSimon Glass
This seems to have been used by ppc4xx which was removed a while back. The Kconfig does not exist so it is never built. Drop it. Signed-off-by: Simon Glass <[email protected]>
2023-02-07imx: Rename CONFIG_MXS to CFG_MXSSimon Glass
This is not a Kconfig option so we should not be setting it in the Makefile. Rename it to use a CFS_ prefix, since this is still used in mxsimage.c In general tools should support all the features without reference to CONFIG options, but this is left to the maintainer to look at. Signed-off-by: Simon Glass <[email protected]>
2022-12-22env: Rework ENV_IS_EMBEDDED and related logic slightlyTom Rini
- Drop CONFIG_BUILD_ENVCRC as this is never set directly but instead means ENV_IS_EMBEDDED, so reference that in code and rename the Makefile usage to BUILD_ENVCRC. - Remove extra-$(CONFIG_ENV_IS_EMBEDDED) line as it could never be true, and likely why there is an extra- line for CONFIG_ENV_IS_IN_FLASH (the only use case today of embedded environments). - With these slight changes we can then see that using the calculated symbol of ENV_IS_EMBEDDED is the right thing to use in any code which needs to know this situation and can remove CONFIG_ENV_IS_EMBEDDED entirely. Signed-off-by: Tom Rini <[email protected]>
2022-12-08u-boot-initial-env: rework make targetMax Krummenacher
With LTO enabled the U-Boot initial environment is no longer stored in an easy accessible section in env/common.o. I.e. the section name changes from build to build, its content maybe compressed and it is annotated with additional data. Drop trying to read the initial env with elf tools from the compiler specific object file in favour of adding and using a host tool with the only functionality of printing the initial env to stdout. See also: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Max Krummenacher <[email protected]> Acked-by: Pali Rohár <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-10-31test: dm: Add test cases for FWU Metadata uclassSughosh Ganu
Add test cases for accessing the FWU Metadata on the sandbox platform. The sandbox platform also uses the metadata access driver for GPT partitioned block devices. The FWU feature will be tested on the sandbox64 variant with a raw capsule. Remove the FIT capsule testing from sandbox64 defconfig -- the FIT capsule test will be run on the sandbox_flattree variant. Signed-off-by: Sughosh Ganu <[email protected]> Suggested-by: Heinrich Schuchardt <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2022-10-30video: Rename CONFIG_DM_VIDEO to CONFIG_VIDEOSimon Glass
Now that all the old code is gone, rename this option. Driver model migration is now complete. Signed-off-by: Simon Glass <[email protected]>
2022-10-30Drop CONFIG_LCD_LOGOSimon Glass
This relies on the old LCD implementation which is to be removed. Drop it. Signed-off-by: Simon Glass <[email protected]>
2022-09-23tools: mtk_image: split the code of generating NAND header into a new fileWeijie Gao
The predefined NAND headers take too much spaces in the mtk_image.c. Moving them into a new file can significantly improve the readability of both mtk_image.c and the new mtk_nand_headers.c. This is a preparation for adding more NAND headers. Reviewed-by: Simon Glass <[email protected]> Tested-by: Daniel Golle <[email protected]> Signed-off-by: Weijie Gao <[email protected]>
2022-08-20tools: mkeficapsule: use pkg-config for each lib separatHeiko Thiery
Call pkg-config for each library individually. This improves fallback handling. Suggested-by: AKASHI Takahiro <[email protected]> Fixes: 31a7688cbe0e ("tools: mkeficapsule: use pkg-config to get -luuid and -lgnutls") Signed-off-by: Heiko Thiery <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2022-08-04tools: kwboot: use pkg-config to get -ltinfoHeiko Thiery
Instead of hardcoding -ltinfo as the flags needed to build kwboot, use pkg-config when available. We gracefully fallback on the previous behavior of hardcoding -ltinfo if pkg-config is not available or fails with an error. Reviewed-by: Pali Rohár <[email protected]> Signed-off-by: Heiko Thiery <[email protected]>
2022-08-04tools: mkeficapsule: use pkg-config to get -luuid and -lgnutlsHeiko Thiery
Instead of hardcoding -luuid -lgnutls as the flags needed to build mkeficapsule, use pkg-config when available. We gracefully fallback on the previous behavior of hardcoding -luuid -lgnutls if pkg-config is not available or fails with an error. Reviewed-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Heiko Thiery <[email protected]>
2022-04-21crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.cPali Rohár
U-Boot CRC-16 implementation uses polynomial x^16 + x^12 + x^5 + 1 which is not standard CRC-16 algorithm, but it is known as CRC-16-CCITT. Rename file crc16.c to crc16-ccitt.c to reduce confusion. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2022-04-04tools: mkimage: Add Allwinner TOC0 supportSamuel Holland
Most Allwinner sunxi SoCs have separate boot ROMs in non-secure and secure mode. The "non-secure" or "normal" boot ROM (NBROM) uses the existing sunxi_egon image type. The secure boot ROM (SBROM) uses a completely different image type, known as TOC0. A TOC0 image is composed of a header and two or more items. One item is the firmware binary. The others form a chain linking the firmware signature to the root-of-trust public key (ROTPK), which has its hash burned in the SoC's eFuses. Signatures are made using RSA-2048 + SHA256. The pseudo-ASN.1 structure is manually assembled; this is done to work around bugs/quirks in the boot ROM, which vary between SoCs. This TOC0 implementation has been verified to work with the A50, A64, H5, H6, and H616 SBROMs, and it may work with other SoCs. Signed-off-by: Samuel Holland <[email protected]> Acked-by: Andre Przywara <[email protected]> Signed-off-by: Andre Przywara <[email protected]>
2022-03-04tools: kwboot: Add support for backspace key in mini terminalPali Rohár
Marvell BootROM recognize only '\b' byte as backspace. Use terminfo for retrieving current backspace sequence and replace any occurrence of backspace sequence by the '\b' byte. Reading terminfo database is possible via tigetstr() function from system library libtinfo.so.*. So link kwboot with -ltinfo. Normally terminfo functions are in <term.h> system header file. But this header file conflicts with U-Boot "termios_linux.h" header file. So declare terminfo functions manually. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Tested-by: Stefan Roese <[email protected]>
2022-03-04tools: kwboot: Use separate thread for sending boot message patternPali Rohár
After BootROM successfully detects boot message pattern on UART it waits until host stop sending data on UART. For example Armada 385 BootROM requires that host does not send anything on UART at least 24 ms. If host is still sending something then BootROM waits (possibly infinitely). BootROM successfully detects boot message pattern if it receives it in small period of time after power on. So to ensure that host put BootROM into UART boot mode, host must send continuous stream of boot message pattern with a small gap (for A385 at least 24 ms) after series of pattern. But this gap cannot be too often or too long to ensure that it does not cover whole BootROM time window when it is detecting for boot message pattern. Therefore it is needed to do following steps in cycle without any delay: 1. send series of boot message pattern over UART 2. wait until kernel transmit all data 3. sleep small period of time At the same time, host needs to monitor input queue, data received on the UART and checking if it contains NAK byte by which BootROM informs that xmodem transfer is ready. But it is not possible to wait until kernel transmit all data on UART and at the same time in the one process to also wait for input data. This is limitation of POSIX tty API and also by linux kernel that it does not provide asynchronous function for waiting until all data are transmitted. There is only synchronous variant tcdrain(). So to correctly implement this handshake on systems with linux kernel, it is needed to use tcdrain() in separate thread. Implement sending of boot message pattern in one thread and reading of reply in the main thread. Use pthread library for threads. This change makes UART booting on Armada 385 more reliable. It is possible to start kwboot and power on board after minute and kwboot correctly put board into UART boot mode. Old implementation without separate thread has an issue that it read just one byte from UART input queue and then it send 128 message pattern to the output queue. If some noise was on UART then kwboot was not able to read BootROM response as its input queue was just overflowed and kwboot was sending more data than receiving. This change basically fixed above issue too. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Tested-by: Stefan Roese <[email protected]>
2022-02-11tools: mkeficapsule: allow for specifying GUID explicitlyAKASHI Takahiro
The existing options, "--fit" and "--raw," are only used to put a proper GUID in a capsule header, where GUID identifies a particular FMP (Firmware Management Protocol) driver which then would handle the firmware binary in a capsule. In fact, mkeficapsule does the exact same job in creating a capsule file whatever the firmware binary type is. To prepare for the future extension, the command syntax will be a bit modified to allow users to specify arbitrary GUID for their own FMP driver. OLD: [--fit <image> | --raw <image>] <capsule file> NEW: [--fit | --raw | --guid <guid-string>] <image> <capsule file> Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-02-11tools: mkeficapsule: add firmware image signingAKASHI Takahiro
With this enhancement, mkeficapsule will be able to sign a capsule file when it is created. A signature added will be used later in the verification at FMP's SetImage() call. To do that, we need specify additional command parameters: -monotonic-cout <count> : monotonic count -private-key <private key file> : private key file -certificate <certificate file> : certificate file Only when all of those parameters are given, a signature will be added to a capsule file. Users are expected to maintain and increment the monotonic count at every time of the update for each firmware image. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2022-02-11tools: build mkeficapsule with tools-only_defconfigAKASHI Takahiro
Add CONFIG_TOOLS_MKEFICAPSULE. Then we want to always build mkeficapsule if tools-only_defconfig is used. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-11Create a new boot/ directorySimon Glass
Quite a lot of the code in common/relates to booting and images. Before adding more it seems like a good time to move the code into its own directory. Most files with 'boot' or 'image' in them are moved, except: - autoboot.c which relates to U-Boot automatically running a script - bootstage.c which relates to U-Boot timing Drop the removal of boot* files from the output directory, since this interfers with the symlinks created by tools and there does not appear to be any such file from my brief testing. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Artem Lapkin <[email protected]> Tested-by: Artem Lapkin <[email protected]>
2021-10-19tools: Stop re-defining -std= when building toolsTom Rini
While we intentionally set -std=gnu11 for building host tools, and have for quite some time, we never dropped -std=gnu99 from tools/Makefile. This resulted in passing -std=gnu11 ... -std=gnu99 when building, and gnu99 would win. This in turn would result now in warnings such as: tools/mkeficapsule.c:25:15: warning: redefinition of typedef 'u32' is a C11 feature [-Wtypedef-redefinition] typedef __u32 u32; ^ Signed-off-by: Tom Rini <[email protected]>
2021-10-08image: Split host code out into its own fileSimon Glass
To avoid having #ifdefs in a few functions which are completely different in the board and host code, create a new image-host.c file. Signed-off-by: Simon Glass <[email protected]>
2021-07-31tools: kwbimage: Remove v1 kwbimage SPL padding to CONFIG_SYS_U_BOOT_OFFS bytesPali Rohár
This padding depends on board config file and therefore it makes the mkimage binary tool board specific, which is not correct. One cannot use mkimage tool built as a result for board A to generate images for board B, even if both A and B are on the same platform. This CONFIG_SYS_U_BOOT_OFFS padding was needed when kwbimage v1 contained SPL code which loaded U-Boot proper based on CONFIG_SYS_U_BOOT_OFFS, instead of reading correct offset from kwbimage header. Now that SPL code parses kwbimage header and deterinate correct offset, there is no need for this CONFIG_SYS_U_BOOT_OFFS padding anymore. By removing it we also reduce the size of SPL code and therefore also decrease the final size of v1 kwbimage. This means there is more space for U-Boot proper binary. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Marek Behún <[email protected]> Reviewed-by: Chris Packham <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2021-07-31tools: kwbimage: Do not hide usage of secure header under CONFIG_ARMADA_38XPali Rohár
The mkimage host tool can be used to generate kwbimage v1 image with secure header on host system for A38x plaform also when U-Boot is being compiled for different platform. So there is no reason to not allow compiling of mkimage/kwbimage with secure header support for e.g. x86-64 host. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Marek Behún <[email protected]> Reviewed-by: Chris Packham <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Tested-by: Chris Packham <[email protected]>
2021-07-31tools: kwbimage: Fix compilation without CONFIG_SYS_U_BOOT_OFFSPali Rohár
The CONFIG_SYS_U_BOOT_OFFS option may be defined as empty string. In this case it causes compilation error: tools/kwbimage.c: In function ‘image_headersz_v1’: tools/kwbimage.c:1002:39: error: expected expression before ‘)’ token if (headersz > CONFIG_SYS_U_BOOT_OFFS) { ^ tools/kwbimage.c:1006:41: error: expected expression before ‘)’ token (int)headersz, CONFIG_SYS_U_BOOT_OFFS); ^ tools/kwbimage.c:1011:35: error: expected expression before ‘;’ token headersz = CONFIG_SYS_U_BOOT_OFFS; ^ make[1]: *** [scripts/Makefile.host:112: tools/kwbimage.o] Error 1 make: *** [Makefile:1822: tools] Error 2 Check whether the value of CONFIG_SYS_U_BOOT_OFFS is really set. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Marek Behún <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Chris Packham <[email protected]> Tested-by: Chris Packham <[email protected]>
2021-07-16tools: Use a single target-independent config to enable OpenSSLAlexandru Gagniuc
Host tool features, such as mkimage's ability to sign FIT images were enabled or disabled based on the target configuration. However, this misses the point of a target-agnostic host tool. A target's ability to verify FIT signatures is independent of mkimage's ability to create those signatures. In fact, u-boot's build system doesn't sign images. The target code can be successfully built without relying on any ability to sign such code. Conversely, mkimage's ability to sign images does not require that those images will only work on targets which support FIT verification. Linking mkimage cryptographic features to target support for FIT verification is misguided. Without loss of generality, we can say that host features are and should be independent of target features. While we prefer that a host tool always supports the same feature set, we recognize the following - some users prefer to build u-boot without a dependency on OpenSSL. - some distros prefer to ship mkimage without linking to OpenSSL To allow these use cases, introduce a host-only Kconfig which is used to select or deselect libcrypto support. Some mkimage features or some host tools might not be available, but this shouldn't affect the u-boot build. I also considered setting the default of this config based on FIT_SIGNATURE. While it would preserve the old behaviour it's also contrary to the goals of this change. I decided to enable it by default, so that the default build yields the most feature-complete mkimage. Signed-off-by: Alexandru Gagniuc <[email protected]>
2021-07-16common: Move host-only logic in image-sig.c to separate fileAlexandru Gagniuc
image-sig.c is used to map a hash or crypto algorithm name to a handler of that algorithm. There is some similarity between the host and target variants, with the differences worked out by #ifdefs. The purpose of this change is to remove those ifdefs. First, copy the file to a host-only version, and remove target specific code. Although it looks like we are duplicating code, subsequent patches will change the way target algorithms are searched. Besides we are only duplicating three string to struct mapping functions. This isn't something to fuss about. Signed-off-by: Alexandru Gagniuc <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-04-14lib: Add support for ECDSA image signingAlexandru Gagniuc
mkimage supports rsa2048, and rsa4096 signatures. With newer silicon now supporting hardware-accelerated ECDSA, it makes sense to expand signing support to elliptic curves. Implement host-side ECDSA signing and verification with libcrypto. Device-side implementation of signature verification is beyond the scope of this patch. Signed-off-by: Alexandru Gagniuc <[email protected]> Reviewed-by: Simon Glass <[email protected]>