Hi Paul,

On Mon, 5 Aug 2024 at 07:35, Paul HENRYS <[email protected]> wrote:
>
> The property 'fit,keys-directory' can be added to the configuration file
> passed to binman to specify a directory where keys are stored and can be
> used by mkimage to sign and cipher data.

Environmental things like directories are best handled by binman
itself, e.g. with the --indir argument.

In this case it seems that you want a specific directory, rather than
finding the keys in one of many possible directories. So I suggest
adding a new entryarg for the FIT which lets you specify this key dir.

>
> Signed-off-by: Paul HENRYS <[email protected]>
> ---
>  tools/binman/btool/mkimage.py | 5 ++++-
>  tools/binman/entries.rst      | 3 +++
>  tools/binman/etype/fit.py     | 6 ++++++
>  3 files changed, 13 insertions(+), 1 deletion(-)

BTW when you change the fit docs you need to use 'binman entry-docs'
to regenerate the entries.rts file, in the same patch.

>
> diff --git a/tools/binman/btool/mkimage.py b/tools/binman/btool/mkimage.py
> index 39a4c8c1432..dbcf8daac30 100644
> --- a/tools/binman/btool/mkimage.py
> +++ b/tools/binman/btool/mkimage.py
> @@ -22,7 +22,7 @@ class Bintoolmkimage(bintool.Bintool):
>
>      # pylint: disable=R0913
>      def run(self, reset_timestamp=False, output_fname=None, external=False,
> -            pad=None, align=None):
> +            pad=None, align=None, keys_dir=None):
>          """Run mkimage
>
>          Args:
> @@ -34,6 +34,7 @@ class Bintoolmkimage(bintool.Bintool):
>                  other things to be easily added later, if required, such as
>                  signatures
>              align: Bytes to use for alignment of the FIT and its external 
> data
> +            keys_dir: directory where keys are stored
>              version: True to get the mkimage version
>          """
>          args = []
> @@ -45,6 +46,8 @@ class Bintoolmkimage(bintool.Bintool):
>              args += ['-B', f'{align:x}']
>          if reset_timestamp:
>              args.append('-t')
> +        if keys_dir:
> +            args += ['-k', keys_dir]
>          if output_fname:
>              args += ['-F', output_fname]
>          return self.run_cmd(*args)
> diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst
> index 12482703782..eb33eb9eedf 100644
> --- a/tools/binman/entries.rst
> +++ b/tools/binman/entries.rst
> @@ -864,6 +864,9 @@ The top-level 'fit' node supports the following special 
> properties:
>
>              fit,fdt-list-dir = "arch/arm/dts
>
> +    fit,keys-directory
> +        Provides a directory where keys can be retrieved.
> +
>  Substitutions
>  ~~~~~~~~~~~~~
>
> diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
> index ee44e5a1cd6..d20906aab3b 100644
> --- a/tools/binman/etype/fit.py
> +++ b/tools/binman/etype/fit.py
> @@ -96,6 +96,9 @@ class Entry_fit(Entry_section):
>
>                  fit,fdt-list-dir = "arch/arm/dts
>
> +        fit,keys-directory
> +            Provides a directory where keys can be retrieved.
> +
>      Substitutions
>      ~~~~~~~~~~~~~
>
> @@ -518,6 +521,9 @@ class Entry_fit(Entry_section):
>          align = self._fit_props.get('fit,align')
>          if align is not None:
>              args.update({'align': fdt_util.fdt32_to_cpu(align.value)})
> +        keys_dir = self._fit_props.get('fit,keys-directory')
> +        if keys_dir is not None:
> +            args.update({'keys_dir': keys_dir.value})
>          if self.mkimage.run(reset_timestamp=True, output_fname=output_fname,
>                              **args) is None:
>              if not self.GetAllowMissing():
> --
> 2.25.1
>
> -- This message and any attachments herein are confidential, intended solely 
> for the addressees and are SoftAtHome’s ownership. Any unauthorized use or 
> dissemination is prohibited. If you are not the intended addressee of this 
> message, please cancel it immediately and inform the sender.

Regards,
Simon

Reply via email to