]> git.baikalelectronics.ru Git - uboot.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)
commit300fcb4bfee4d6279e06c6ad87ec16d47df84d6b
tree7c2de354a5cbc49a4d9b7dc0a26cdd4c28496a9a
parent287e3599ba8c66887cfc93d0e275923ef9b26327
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