[PATCH 5/5] Makefile: Add provision for embedding public key in platform's dtb
AKASHI Takahiro
takahiro.akashi at linaro.org
Fri May 7 10:15:32 CEST 2021
On Wed, Apr 28, 2021 at 03:31:36PM +0900, Masami Hiramatsu wrote:
> 2021年4月28日(水) 14:44 AKASHI Takahiro <takahiro.akashi at linaro.org>:
> >
> > On Thu, Apr 08, 2021 at 09:58:17PM +0200, Heinrich Schuchardt wrote:
> > > On 4/7/21 1:53 PM, Sughosh Ganu wrote:
> > > > Add provision for embedding the public key used for capsule
> > > > authentication in the platform's dtb. This is done by invoking the
> > > > mkeficapsule utility which puts the public key in the efi signature
> > > > list(esl) format into the dtb.
> > > >
> > > > Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> > > > ---
> > > > Makefile | 10 ++++++++++
> > > > 1 file changed, 10 insertions(+)
> > > >
> > > > diff --git a/Makefile b/Makefile
> > > > index 193aa4d1c9..0d50c6a805 100644
> > > > --- a/Makefile
> > > > +++ b/Makefile
> > > > @@ -1010,6 +1010,10 @@ cmd_pad_cat = $(cmd_objcopy) && $(append) || { rm -f $@; false; }
> > > > quiet_cmd_lzma = LZMA $@
> > > > cmd_lzma = lzma -c -z -k -9 $< > $@
> > > >
> > > > +quiet_cmd_mkeficapsule = MKEFICAPSULE $@
> > > > +cmd_mkeficapsule = $(objtree)/tools/mkeficapsule -K $(CONFIG_EFI_PKEY_FILE) \
> > > > + -D $@
> > > > +
> > >
> > > tools/mkeficapsule --help does neither show a parameter -K nor a
> > > parameter -D.
> >
> > This clearly shows that the feature with -K/-D has nothing to do with
> > creating a capsule file.
> > Two totally different things in one place (command).
> > And the dtb overlay operation can be achieved by using standard commands.
>
> If I understand correctly, we need the following steps,
> 1. prepare the key for signing
> 2. make dtb overlay from that key
> 3. sign the capsule with the key
>
> And Sughosh's implementation is using mkeficapsule for 2 and 3.
> Takahiro pointed that mkeficapsule is only for 3 because of its name
> and avoid confusion.
>
> Is that correct?
>
> What would you think about changing the tool name?
> E.g.
>
> For step 2.
> capsuletool dtb --public-key pubkey [--overlay] target.dtb
My point is: as this command line shows, it has nothing to do
with a capsule file. It simply deals with dtb blob for overlaying.
(So 'capsuletool' is not appropriate.)
-Takahiro Akashi
> For step 3.
> capsuletool capsule --raw u-boot.bin --index 1 --public-key pubkey u-boot.cap
>
> Then we can expand it for inspection, verify etc.
>
> Thank you,
>
> >
> > I believe that the feature should be removed from mkeficapsule.
> >
> > -Takahiro Akashi
> >
> >
> > > Please, update tools/mkeficapsule.c before using these. A
> > > man-page for mkeficapsule in doc/usage/ would be helpful.
> > >
> > > $ tools/mkeficapsule --help
> > > Usage: mkeficapsule [options] <output file>
> > > Options:
> > > --fit <fit image> new FIT image file
> > > --raw <raw image> new raw image file
> > > --index <index> update image index
> > > --instance <instance> update hardware instance
> > > --public-key <key file> public key esl file
> > > --dtb <dtb file> dtb file
> > > --overlay the dtb file is an overlay
> > > --help print a help message
> > >
> > > Best regards
> > >
> > > Heinrich
> > >
> > > > cfg: u-boot.cfg
> > > >
> > > > quiet_cmd_cfgcheck = CFGCHK $2
> > > > @@ -1104,8 +1108,14 @@ endif
> > > > PHONY += dtbs
> > > > dtbs: dts/dt.dtb
> > > > @:
> > > > +ifeq ($(CONFIG_EFI_CAPSULE_AUTHENTICATE)$(CONFIG_EFI_PKEY_DTB_EMBED),yy)
> > > > +dts/dt.dtb: u-boot tools
> > > > + $(Q)$(MAKE) $(build)=dts dtbs
> > > > + $(call cmd,mkeficapsule)
> > > > +else
> > > > dts/dt.dtb: u-boot
> > > > $(Q)$(MAKE) $(build)=dts dtbs
> > > > +endif
> > > >
> > > > quiet_cmd_copy = COPY $@
> > > > cmd_copy = cp $< $@
> > > >
> > >
>
>
>
> --
> Masami Hiramatsu
More information about the U-Boot
mailing list