u-boot/lib/efi_loader
Ilias Apalodimas 54cebe8a3a efi_loader: fix dual signed image certification
The EFI spec allows for images to carry multiple signatures. Currently
we don't adhere to the verification process for such images.

The spec says:
"Multiple signatures are allowed to exist in the binary's certificate
table (as per PE/COFF Section "Attribute Certificate Table"). Only one
hash or signature is required to be present in db in order to pass
validation, so long as neither the SHA-256 hash of the binary nor any
present signature is reflected in dbx."

With our current implementation signing the image with two certificates
and inserting both of them in db and one of them dbx doesn't always reject
the image.  The rejection depends on the order that the image was signed
and the order the certificates are read (and checked) in db.

While at it move the sha256 hash verification outside the signature
checking loop, since it only needs to run once per image and get simplify
the logic for authenticating an unsigned imahe using sha256 hashes.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2022-02-11 20:07:55 +01:00
..
.gitignore efi_loader: git ignore helloworld_efi.S 2020-01-07 18:08:20 +01:00
efi_acpi.c efi: Correct address handling with ACPI tables 2022-01-25 11:44:36 -07:00
efi_bootmgr.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_boottime.c efi_loader: use %zu not %zd to print efi_uintn_t 2022-02-05 20:20:01 +01:00
efi_capsule.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_console.c efi_loader: add handle for UART 2022-02-05 20:20:01 +01:00
efi_device_path.c efi: Drop unnecessary calls to blk_find_device() 2022-02-05 20:20:01 +01:00
efi_device_path_to_text.c efi_loader: fix text output for Uart() DP nodes 2022-02-05 20:20:01 +01:00
efi_device_path_utilities.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_disk.c efi_loader: efi_disk_register() should not fail 2021-11-26 21:30:59 +01:00
efi_dt_fixup.c efi_loader: Get rid of kaslr-seed if EFI_RNG_PROTOCOL is installed 2022-01-15 10:57:22 +01:00
efi_esrt.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_file.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_firmware.c efi_loader: use %zu to print efi_uintn_t in FMP driver 2022-02-05 20:20:01 +01:00
efi_freestanding.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_gop.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_helper.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_hii.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_hii_config.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_image_loader.c efi_loader: fix dual signed image certification 2022-02-11 20:07:55 +01:00
efi_load_initrd.c efi_loader: avoid multiple local copies of lf2_initrd_guid 2021-10-21 03:46:04 +02:00
efi_load_options.c efi_loader: move load options to new module 2021-01-19 18:56:08 +01:00
efi_memory.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_net.c efi_loader: fix use after free in receive path 2020-10-19 22:59:53 +02:00
efi_riscv.c efi_loader: Enable RISCV_EFI_BOOT_PROTOCOL support 2022-01-29 10:23:40 +01:00
efi_rng.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_root_node.c efi_loader: remove EFI_UNICODE_COLLATION_PROTOCOL 2021-01-20 08:17:17 +01:00
efi_runtime.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
efi_setup.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_signature.c efi_loader: hash the image once before checking against db/dbx 2022-01-29 10:23:40 +01:00
efi_smbios.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_string.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_tcg2.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_unicode_collation.c efi_loader: carve out utf_to_cp() 2021-03-07 17:37:13 +01:00
efi_var_common.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_var_file.c efi_loader: don't load Shim's MOK database from file 2021-10-21 03:46:04 +02:00
efi_var_mem.c efi_loader: treat UEFI variable name as const 2021-10-25 21:13:06 +02:00
efi_var_seed.S efi_loader: pre-seed UEFI variables 2020-07-16 12:37:02 +02:00
efi_variable.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_variable_tee.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_watchdog.c efi_loader: simplify efi_watchdog_timer_notify() 2021-09-11 11:02:02 +02:00
helloworld.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
Kconfig efi_loader: Enable RISCV_EFI_BOOT_PROTOCOL support 2022-01-29 10:23:40 +01:00
Makefile efi_loader: Enable RISCV_EFI_BOOT_PROTOCOL support 2022-01-29 10:23:40 +01:00