Hello!
Have a trouble with signing Linux kernel images for iMX8QXP.
Image generation and sign passes without errors. I`m using guide - https://source.codeaurora.org/external/imx/uboot-imx/tree/doc/imx/ahab/guides/mx8_mx8x_secure_boot.t... to sign Linux kernel image.
Tools:
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.139-0-g1a8f760
UBOOT builded with AHAB support - U-Boot 2019.04mmv_14-07-2021 (Jul 14 2021 - 18:39:06 +0300) Kontron SMARC-sAMX8X Release develop aarch64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 GNU ld (GNU Binutils for Ubuntu) 2.34 (uboot_samx8x-R13 - BSP)
https://source.codeaurora.org/external/imx/imx-mkimage (imx_5.4.3_2.0.0)
imx-scfw-porting-kit-1.4.0
imx-seco-3.7.5
https://source.codeaurora.org/external/imx/imx-atf.git (imx_5.4.3_2.0.0 )
Code Signing Tool release version 3.2.0 (Ubuntu 20.04.2 repository package)
Linux kernel image - SMARC-sAMX8X_Yocto-BSP_R13/images.tar/images/Image (5.4.3-2.0.0+g1675c67c9170)
CSF:
Spoiler (Highlight to read) [Header] Target = AHAB Version = 1.0
[Install SRK] # SRK table generated by srktool File = "../SRK_1_2_3_4_table.bin" # Public key certificate in PEM format Source = "../crts/SRK1_sha384_secp384r1_v3_ca_crt.der" # Index of the public key certificate within the SRK table (0 .. 3) Source index = 0 # Type of SRK set (NXP or OEM) Source set = OEM # bitmask of the revoked SRKs Revocations = 0x0
[Install Certificate] # Public key certificate in PEM or DER format File = "../crts/SGK1_1_sha384_secp384r1_v3_usr_crt.der" Permissions = 0x1
[Authenticate Data] # Binary to be signed generated by mkimage File = "flash.bin" # Offsets = Container header Signature block (printed out by mkimage) Offsets = 0x0 0x110
[Header]Target = AHABVersion = 1.0[Install SRK]# SRK table generated by srktoolFile = "../SRK_1_2_3_4_table.bin"# Public key certificate in PEM formatSource = "../crts/SRK1_sha384_secp384r1_v3_ca_crt.der"# Index of the public key certificate within the SRK table (0 .. 3)Source index = 0# Type of SRK set (NXP or OEM)Source set = OEM# bitmask of the revoked SRKsRevocations = 0x0[Install Certificate]# Public key certificate in PEM or DER formatFile = "../crts/SGK1_1_sha384_secp384r1_v3_usr_crt.der"Permissions = 0x1[Authenticate Data]# Binary to be signed generated by mkimageFile = "flash.bin"# Offsets = Container header Signature block (printed out by mkimage)Offsets = 0x0 0x110
If to parse resulting signed Image (mkimage_imx8 --soc=QX --parse=Image.signed ) everything looks OK:
Spoiler (Highlight to read) SOC: QX Input container binary to be parsed: Image.signed CONTAINER FUSE VERSION: 0x00 CONTAINER SW VERSION: 0x0000 ********************************* * * * CONTAINER 1 * * * ********************************* Length: 0X420 (1056) Tag: 0X87 Version: 0 Flags: 0X2 Num images: 2 Fuse version: 0 SW version: 0 Sig blk offset: 0X110IMAGE 1 (Bootloader) Offset: 0X2000 Size: 0X1AE7400 (28210176) Load Addr: 0X80280000 Entry Addr: 0X80280000 Flags: 0X143 (IMG TYPE: Executable | CORE ID: CORE_CA53 | HASH TYPE: SHA384 | ENCRYPTED: NO) Metadata: 0X1355FC Hash: 96fbf2e504d3a2ca3b1b887c2695029ba630c137ade7446bf94dcfdede27a1b87974751773c6635006a1cbcf1b67959c (SHA384) IMAGE 2 (Data) Offset: 0X1AE9400 Size: 0X17000 (94208) Load Addr: 0X83000000 Entry Addr: 0 Flags: 0X144 (IMG TYPE: Data | CORE ID: CORE_CA53 | HASH TYPE: SHA384 | ENCRYPTED: NO) Metadata: 0 Hash: 80701691b3a4457fd729b0d2d7db88600fff3d0eb1739c88660230fa2521d803240091ad2e299962678e0e8ddabd6764 (SHA384)
SOC: QX Input container binary to be parsed: Image.signedCONTAINER FUSE VERSION: 0x00CONTAINER SW VERSION: 0x0000********************************** ** CONTAINER 1 ** ********************************** Length: 0X420 (1056) Tag: 0X87 Version: 0 Flags: 0X2 Num images: 2 Fuse version: 0 SW version: 0Sig blk offset: 0X110IMAGE 1 (Bootloader)Offset: 0X2000 Size: 0X1AE7400 (28210176) Load Addr: 0X80280000 Entry Addr: 0X80280000 Flags: 0X143 (IMG TYPE: Executable | CORE ID: CORE_CA53 | HASH TYPE: SHA384 | ENCRYPTED: NO) Metadata: 0X1355FC Hash: 96fbf2e504d3a2ca3b1b887c2695029ba630c137ade7446bf94dcfdede27a1b87974751773c6635006a1cbcf1b67959c (SHA384) IMAGE 2 (Data) Offset: 0X1AE9400 Size: 0X17000 (94208) Load Addr: 0X83000000 Entry Addr: 0 Flags: 0X144 (IMG TYPE: Data | CORE ID: CORE_CA53 | HASH TYPE: SHA384 | ENCRYPTED: NO) Metadata: 0 Hash: 80701691b3a4457fd729b0d2d7db88600fff3d0eb1739c88660230fa2521d803240091ad2e299962678e0e8ddabd6764 (SHA384)
But when I try to check secure boot on SD card with written signed kernel using
Spoiler (Highlight to read) sudo ~/bin/uuu sd_flash.signed.bin IN UBOOT:
=> run loadimage => auth_cntr ${loadaddr}
sudo ~/bin/uuu sd_flash.signed.binIN UBOOT:=> run loadimage=> auth_cntr ${loadaddr}
I`m getting error:
Authenticate OS container at 0x80280000 Error: Wrong container header
Spoiler (Highlight to read) => iminfo ## Checking Image at 80280000 ... Unknown image format!
=> iminfo ## Checking Image at 80280000 ...Unknown image format!
AHAB:
Spoiler (Highlight to read) => ahab_status Lifecycle: 0x0020, NXP closed sc_seco_get_event: idx: 0, res:3 No SECO Events Found!
=> ahab_status Lifecycle: 0x0020, NXP closedsc_seco_get_event: idx: 0, res:3No SECO Events Found!
What am I doing wrong?