]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: imx: fix signature_block_hdr struct fields order
authorJavier Viguera <javier.viguera@digi.com>
Thu, 4 Apr 2024 15:11:09 +0000 (17:11 +0200)
committerFabio Estevam <festevam@gmail.com>
Fri, 5 Apr 2024 12:39:18 +0000 (09:39 -0300)
According to the documentation (for example NXP's AN13994 on encrypted
boot on AHAB-enabled devices), the format of the signature block is:

  +--------------+--------------+--------------+-------------+
  | Tag          | Length - msb | Length - lsb | Version     |
  +--------------+--------------+--------------+-------------+
  | SRK Table offset            | Certificate offset         |
  +-----------------------------+----------------------------+
  | Blob offset                 | Signature offset           |
  +-----------------------------+----------------------------+

There is no runtime error in the current u-boot code. The only user of
struct signature_block_hdr is the "get_container_size" function in the
"arch/arm/mach-imx/image-container.c" file, and it's only using the very
first fields of the struct (which are in the correct position) and thus
there is no runtime failure.

On the other hand, extending the code to get the data encryption key
blob offset on the signature header gives a wrong value as the field is
in the wrong order.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
include/imx_container.h

index 54cd684e35d52b231fbd1312b8b96a7220193834..691c764b3e5bd9f9fc4c44bca8ede845c648d7d3 100644 (file)
@@ -50,10 +50,10 @@ struct signature_block_hdr {
        u8 length_lsb;
        u8 length_msb;
        u8 tag;
-       u16 srk_table_offset;
        u16 cert_offset;
-       u16 blob_offset;
+       u16 srk_table_offset;
        u16 signature_offset;
+       u16 blob_offset;
        u32 reserved;
 } __packed;