With UBOOT_SIGN_ENABLE enabled commit 3fb215a3af24 (u-boot:
kernel-fitimage: Fix dependency loop if UBOOT_SIGN_ENABLE and UBOOT_ENV
enabled) always adds the signature of UBOOT_SIGN_IMG_KEYNAME to the
u-boot dtb, independent of FIT_SIGN_INDIVIDUAL. The kernel fitimage
configuration node is signed with UBOOT_SIGN_KEYNAME but the u-boot dtb
contains the signature of UBOOT_SIGN_IMG_KEYNAME. U-boot is therefore
unable to verify the signed kernel fitimage.
Before that commit the signature of all keys used in the kernel fitimage
would be added to the u-boot dtb.

To fix this, always add the signature of UBOOT_SIGN_KEYNAME for
configuration nodes to the u-boot dtb. If FIT_SIGN_INDIVIDUAL is 1 also
add the signature of UBOOT_SIGN_IMG_KEYNAME for individual images.

This has one drawback at the moment: The signing of individual images is
not tested with fit_check_sign during concat_dtb.

Fixes: 3fb215a3af24 (u-boot: kernel-fitimage: Fix dependency loop if
UBOOT_SIGN_ENABLE and UBOOT_ENV enabled)
Reported-by: Rogerio Guerra Borin <rogerio.bo...@toradex.com>
Signed-off-by: Leonard Anderweit <l.anderw...@phytec.de>
---
Link to bug report:
https://lists.openembedded.org/g/openembedded-core/topic/111218371#msg211507
---
 meta/classes-recipe/uboot-sign.bbclass | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/meta/classes-recipe/uboot-sign.bbclass 
b/meta/classes-recipe/uboot-sign.bbclass
index 96c47ab01651..b2fcb5a31546 100644
--- a/meta/classes-recipe/uboot-sign.bbclass
+++ b/meta/classes-recipe/uboot-sign.bbclass
@@ -102,26 +102,36 @@ concat_dtb() {
 
        if [ -e "${UBOOT_DTB_BINARY}" ]; then
                # Re-sign the kernel in order to add the keys to our dtb
-               UBOOT_MKIMAGE_MODE="auto-conf"
-               # Signing individual images is not recommended as that
-               # makes fitImage susceptible to mix-and-match attack.
-               if [ "${FIT_SIGN_INDIVIDUAL}" = "1" ] ; then
-                       UBOOT_MKIMAGE_MODE="auto"
-               fi
                ${UBOOT_MKIMAGE_SIGN} \
                        ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if 
len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-                       -f $UBOOT_MKIMAGE_MODE \
+                       -f auto-conf \
                        -k "${UBOOT_SIGN_KEYDIR}" \
                        -o "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
-                       -g "${UBOOT_SIGN_IMG_KEYNAME}" \
+                       -g "${UBOOT_SIGN_KEYNAME}" \
                        -K "${UBOOT_DTB_BINARY}" \
                        -d /dev/null \
                        -r ${B}/unused.itb \
                        ${UBOOT_MKIMAGE_SIGN_ARGS}
+
                # Verify the kernel image and u-boot dtb
                ${UBOOT_FIT_CHECK_SIGN} \
                        -k "${UBOOT_DTB_BINARY}" \
                        -f ${B}/unused.itb
+
+               # Signing individual images is not recommended as that
+               # makes fitImage susceptible to mix-and-match attack.
+               if [ "${FIT_SIGN_INDIVIDUAL}" = "1" ] ; then
+                       ${UBOOT_MKIMAGE_SIGN} \
+                               ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if 
len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+                               -f auto \
+                               -k "${UBOOT_SIGN_KEYDIR}" \
+                               -o "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
+                               -g "${UBOOT_SIGN_IMG_KEYNAME}" \
+                               -K "${UBOOT_DTB_BINARY}" \
+                               -d /dev/null \
+                               -r ${B}/unused.itb \
+                               ${UBOOT_MKIMAGE_SIGN_ARGS}
+               fi
                cp ${UBOOT_DTB_BINARY} ${UBOOT_DTB_SIGNED}
        fi
 
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211761): 
https://lists.openembedded.org/g/openembedded-core/message/211761
Mute This Topic: https://lists.openembedded.org/mt/111289801/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to