diff mbox series

[v5,4/6] oe-selftest: fitimage: test SPL FIT configuration signing

Message ID 20261025182436.788918-5-adrian.freihofer@siemens.com
State New
Headers show
Series uboot-sign: sign the SPL FIT configuration | expand

Commit Message

AdrianF Oct. 25, 2026, 6:23 p.m. UTC
From: Adrian Freihofer <adrian.freihofer@siemens.com>

The existing SPL signing tests use the default settings of
uboot-sign.bbclass which sign the individual images.

Add test_sign_standalone_uboot_fit_image_conf which covers the
non-default case: SPL_SIGN_CONF = "1" and SPL_SIGN_INDIVIDUAL = "0".
It verifies that the configuration is signed instead of the individual
images and that the public key in the SPL DTB is required for "conf".

Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
---
 meta/lib/oeqa/selftest/cases/fitimage.py | 43 ++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
diff mbox series

Patch

diff --git a/meta/lib/oeqa/selftest/cases/fitimage.py b/meta/lib/oeqa/selftest/cases/fitimage.py
index c5c446dabf..6fe41b769f 100644
--- a/meta/lib/oeqa/selftest/cases/fitimage.py
+++ b/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -2087,6 +2087,49 @@  UBOOT_FIT_HASH_ALG = "sha256"
         self._test_fitimage(bb_vars)
 
 
+    def test_sign_standalone_uboot_fit_image_conf(self):
+        """
+        Summary:     Check if U-Boot FIT image and Image Tree Source (its) are
+                     created and signed correctly when the FIT configuration
+                     is signed (SPL_SIGN_CONF = "1") instead of the individual
+                     images (SPL_SIGN_INDIVIDUAL = "0").
+        Expected:    1) U-Boot its and FIT image are built successfully
+                     2) The its file has a hash node in each image node, no
+                        image signature nodes, and a signature node in the
+                        configuration which covers the loadables and the fdt
+                     3) Dumping the FIT image shows hashes for the images and
+                        a signature for the configuration only
+                     4) The public key in the SPL DTB is required for "conf"
+                     5) SPL_MKIMAGE_SIGN_ARGS is passed to mkimage
+        Product:     oe-core
+        """
+        machine = self._get_machine_or_skip()
+        config = """
+# There's no U-boot defconfig with CONFIG_FIT_SIGNATURE yet, so we need at
+# least CONFIG_SPL_LOAD_FIT and CONFIG_SPL_OF_CONTROL set
+# Enable creation and signing of the U-Boot fitImage configuration
+UBOOT_FITIMAGE_ENABLE = "1"
+SPL_SIGN_ENABLE = "1"
+SPL_SIGN_CONF = "1"
+SPL_SIGN_INDIVIDUAL = "0"
+SPL_SIGN_KEYNAME = "spl-conf-oe-selftest"
+SPL_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_ENTRYPOINT  = "0x80000000"
+UBOOT_LOADADDRESS = "0x80000000"
+UBOOT_DTB_LOADADDRESS = "0x82000000"
+SPL_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+SPL_MKIMAGE_SIGN_ARGS = "-c 'a smart U-Boot conf comment'"
+UBOOT_EXTLINUX = "0"
+UBOOT_FIT_GENERATE_KEYS = "1"
+UBOOT_FIT_HASH_ALG = "sha256"
+"""
+        config = FitImageTestCase._config_add_machine_settings(config, machine, keys=["UBOOT_MACHINE", "SPL_BINARY", "UBOOT_DTB_BINARY", "UBOOT_ARCH"])
+        config = self._require_machine_capability(config, machine, '_cap_spl_dtb')
+        self.write_config(config)
+        bb_vars = self._fit_get_bb_vars()
+        self._test_fitimage(bb_vars)
+
+
     def test_sign_cascaded_uboot_fit_image(self):
         """
         Summary:     Check if U-Boot FIT image and Image Tree Source (its) are