]> git.dujemihanovic.xyz Git - u-boot.git/commit
efi_loader: fix dual signed image certification
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Fri, 11 Feb 2022 07:37:49 +0000 (09:37 +0200)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 11 Feb 2022 19:07:55 +0000 (20:07 +0100)
commit54cebe8a3ae8b56d784dbd0672cbd06102423eeb
tree7c2de354a5cbc49a4d9b7dc0a26cdd4c28496a9a
parente012550cd7d6cde866b848cf3a0543ce50204a07
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>
lib/efi_loader/efi_image_loader.c