[PATCH] binman: Correct the error message for a bad hash algorithm

Simon Glass sjg at chromium.org
Tue Feb 8 19:57:38 CET 2022


Hi Alper,

On Tue, 8 Feb 2022 at 11:54, Alper Nebi Yasak <alpernebiyasak at gmail.com> wrote:
>
> On 08/02/2022 20:59, Simon Glass wrote:
> > This shows an internal type at present, rather than the algorithm name.
> > Fix it and update the test to catch this.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> >  tools/binman/ftest.py | 2 +-
> >  tools/binman/state.py | 2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
>
> Reviewed-by: Alper Nebi Yasak <alpernebiyasak at gmail.com>
>
> I saw the failing build for my series [1]. Looks to me like binman
> doesn't support crc32 in hash nodes, and turning FIT into a Section
> simply exposed that. I tried a sloppy fix, see below.
>
> [1] https://source.denx.de/u-boot/custodians/u-boot-dm/-/jobs/388771
>
> > diff --git a/tools/binman/state.py b/tools/binman/state.py
> > index af0a65e841..843aefd28d 100644
> > --- a/tools/binman/state.py
> > +++ b/tools/binman/state.py
> > @@ -397,7 +397,7 @@ def CheckAddHashProp(node):
> >          if algo.value == 'sha256':
> >              size = 32
>
> If I add here:
>
>   +        elif algo.value == 'crc32':
>   +            size = 8
>
> and a crc32 implementation attempt to the next function:
>
> >          else:
> > -            return "Unknown hash algorithm '%s'" % algo
> > +            return "Unknown hash algorithm '%s'" % algo.value
> >          for n in GetUpdateNodes(hash_node):
> >              n.AddEmptyProp('value', size)
>
>    def CheckSetHashValue(node, get_data_func):
>        hash_node = node.FindNode('hash')
>        if hash_node:
>            algo = hash_node.props.get('algo').value
>            if algo == 'sha256':
>                m = hashlib.sha256()
>                m.update(get_data_func())
>                data = m.digest()
>   +        elif algo == 'crc32':
>   +            data = zlib.crc32(get_data_func()).to_bytes(8, 'little')
>            for n in GetUpdateNodes(hash_node):
>                n.SetData('value', data)
>
> the failing boards start building again. Not sure how correct this is
> though (especially the endianness). Do we need this and maybe a test
> with crc32 hash now?

I can get your series in without the final patch (testing at
u-boot-dm/testing now).

The thing is that mkimage creates the hashes so we don't want binman
doing that too.

My current feeling is that we need a way to tell sections not to add
calculated properties for hashes...but just for the FIT section
itself, so its children should still add these.

Regards,
Simon


More information about the U-Boot mailing list