[PATCH v8 12/12] (RFC) efi_loader, dts: add public keys for capsules to device tree
Heinrich Schuchardt
xypron.glpk at gmx.de
Sat Jan 1 23:53:32 CET 2022
On 12/20/21 06:02, AKASHI Takahiro wrote:
> By specifying CONFIG_EFI_CAPSULE_KEY_PATH, the build process will
> automatically insert the given key into the device tree.
> Otherwise, users are required to do so manually, possibly, with
> the utility script, fdtsig.sh.
Why do we need a script fdtsig.sh? Can't you integrate this into the
Makefile?
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> ---
> doc/develop/uefi/uefi.rst | 4 ++++
> dts/Makefile | 23 +++++++++++++++++++++--
> lib/efi_loader/Kconfig | 7 +++++++
> 3 files changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst
> index 54fefd76f0f5..7f85b9e5a4a6 100644
> --- a/doc/develop/uefi/uefi.rst
> +++ b/doc/develop/uefi/uefi.rst
> @@ -347,6 +347,7 @@ following config, in addition to the configs listed above for capsule
> update::
>
> CONFIG_EFI_CAPSULE_AUTHENTICATE=y
> + CONFIG_EFI_CAPSULE_KEY_PATH=<path to .esl cert>
>
> The public and private keys used for the signing process are generated
> and used by the steps highlighted below.
> @@ -392,6 +393,9 @@ and used by the steps highlighted below.
> };
> };
>
> + If CONFIG_EFI_CAPSULE_KEY_PATH is specified, the build process will
> + take care of it for you.
> +
> Executing the boot manager
> ~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> diff --git a/dts/Makefile b/dts/Makefile
> index cb3111382959..6c5486719ecd 100644
> --- a/dts/Makefile
> +++ b/dts/Makefile
> @@ -20,11 +20,30 @@ $(obj)/dt-$(SPL_NAME).dtb: dts/dt.dtb $(objtree)/tools/fdtgrep FORCE
> mkdir -p $(dir $@)
> $(call if_changed,fdtgrep)
>
> +quiet_cmd_fdtsig = FDTSIG $@
> + cmd_fdtsig = \
> + cat $< > $@; \
> + $(srctree)/tools/fdtsig.sh \
> + $(patsubst "%",%,$(CONFIG_EFI_CAPSULE_KEY_PATH)) $@
> +
> +ifeq ($(CONFIG_EFI_CAPSULE_AUTHENTICATE),y)
> +ifneq ($(patsubst "%",%,$(CONFIG_EFI_CAPSULE_KEY_PATH)),)
Shouldn't I get a build error if the path is not specified?
Best regards
Heinrich
> +DTB_ov := $(obj)/dt.dtb_ov
> +
> +$(obj)/dt.dtb_ov: $(DTB) FORCE
> + $(call if_changed,fdtsig)
> +else
> +DTB_ov := $(DTB)
> +endif
> +else
> +DTB_ov := $(DTB)
> +endif
> +
> ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
> -$(obj)/dt.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
> +$(obj)/dt.dtb: $(DTB_ov) $(objtree)/tools/fdtgrep FORCE
> $(call if_changed,fdt_rm_props)
> else
> -$(obj)/dt.dtb: $(DTB) FORCE
> +$(obj)/dt.dtb: $(DTB_ov) FORCE
> $(call if_changed,shipped)
> endif
>
> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> index 700dc838ddb9..8c8d14d46433 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -209,6 +209,13 @@ config EFI_CAPSULE_AUTHENTICATE
> Select this option if you want to enable capsule
> authentication
>
> +config EFI_CAPSULE_KEY_PATH
> + string "Path to .esl cert for capsule authentication"
> + depends on EFI_CAPSULE_AUTHENTICATE
> + help
> + Provide the EFI signature list (esl) certificate used for capsule
> + authentication
> +
> config EFI_DEVICE_PATH_TO_TEXT
> bool "Device path to text protocol"
> default y
More information about the U-Boot
mailing list