bootloader: mcuboot: Changes needed to support AES256

This commit adds changes which are necessary to support
the AES256 encryption algorithm in mcuboot.

Signed-off-by: Artur Hadasz <artur.hadasz@nordicsemi.no>
This commit is contained in:
Artur Hadasz
2025-07-28 11:55:53 +02:00
committed by Carles Cufí
parent 445e993491
commit 9a1fe30199
6 changed files with 56 additions and 4 deletions

View File

@@ -161,6 +161,13 @@ function(zephyr_mcuboot_tasks)
set(imgtool_args --sha 512 ${imgtool_args})
endif()
if(NOT "${keyfile_enc}" STREQUAL "")
if(CONFIG_MCUBOOT_ENCRYPTION_ALG_AES_256)
# Note: this overrides the default behavior of using AES-128
set(imgtool_args ${imgtool_args} --encrypt-keylen 256)
endif()
endif()
# Extensionless prefix of any output file.
set(output ${ZEPHYR_BINARY_DIR}/${KERNEL_NAME})

View File

@@ -89,6 +89,22 @@ config MCUBOOT_ENCRYPTION_KEY_FILE
If left empty, you must encrypt the Zephyr binaries manually.
if MCUBOOT_ENCRYPTION_KEY_FILE != ""
choice MCUBOOT_ENCRYPTION_ALG
prompt "Algorithm used for image encryption"
default MCUBOOT_ENCRYPTION_ALG_AES_128
config MCUBOOT_ENCRYPTION_ALG_AES_128
bool "Use AES-128 for image encryption"
config MCUBOOT_ENCRYPTION_ALG_AES_256
bool "Use AES-256 for image encryption"
endchoice # MCUBOOT_ENCRYPTION_ALG
endif # MCUBOOT_ENCRYPTION_KEY_FILE != ""
config MCUBOOT_IMGTOOL_SIGN_VERSION
string "Version to pass to imgtool when signing"
default "$(APP_VERSION_TWEAK_STRING)" if "$(VERSION_MAJOR)" != ""

View File

@@ -84,3 +84,12 @@ foreach(loopkeytype ${keytypes})
set_config_bool(${ZCMAKE_APPLICATION} ${loopkeytype} n)
endif()
endforeach()
if(SB_CONFIG_BOOT_ENCRYPTION)
set_config_string(${ZCMAKE_APPLICATION} CONFIG_BOOT_ENCRYPTION_KEY_FILE "${SB_CONFIG_BOOT_ENCRYPTION_KEY_FILE}")
if(SB_CONFIG_BOOT_ENCRYPTION_ALG_AES_128)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_BOOT_ENCRYPT_ALG_AES_128 y)
elseif(SB_CONFIG_BOOT_ENCRYPTION_ALG_AES_256)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_BOOT_ENCRYPT_ALG_AES_256 y)
endif()
endif()

View File

@@ -56,4 +56,12 @@ if(SB_CONFIG_BOOTLOADER_MCUBOOT)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_RETENTION_BOOT_MODE y)
endif()
endif()
if(SB_CONFIG_BOOT_ENCRYPTION)
if(SB_CONFIG_BOOT_ENCRYPTION_ALG_AES_128)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_MCUBOOT_ENCRYPTION_ALG_AES_128 y)
elseif(SB_CONFIG_BOOT_ENCRYPTION_ALG_AES_256)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_MCUBOOT_ENCRYPTION_ALG_AES_256 y)
endif()
endif()
endif()

View File

@@ -15,8 +15,4 @@ if(SB_CONFIG_BOOTLOADER_MCUBOOT)
sysbuild_add_dependencies(FLASH ${DEFAULT_IMAGE} ${image})
set_config_string(${image} CONFIG_BOOT_SIGNATURE_KEY_FILE "${SB_CONFIG_BOOT_SIGNATURE_KEY_FILE}")
set_config_bool(${image} CONFIG_BOOT_ENCRYPT_IMAGE "${SB_CONFIG_BOOT_ENCRYPTION}")
if(SB_CONFIG_BOOT_ENCRYPTION)
set_config_string(${image} CONFIG_BOOT_ENCRYPTION_KEY_FILE "${SB_CONFIG_BOOT_ENCRYPTION_KEY_FILE}")
endif()
endif()

View File

@@ -219,4 +219,20 @@ config BOOT_ENCRYPTION_KEY_FILE
help
Absolute path to encryption key file to use with MCUBoot.
if BOOT_ENCRYPTION
choice BOOT_ENCRYPTION_ALG
prompt "Algorithm used for image encryption"
default BOOT_ENCRYPTION_ALG_AES_128
config BOOT_ENCRYPTION_ALG_AES_128
bool "Use AES-128 for image encryption"
config BOOT_ENCRYPTION_ALG_AES_256
bool "Use AES-256 for image encryption"
endchoice # BOOT_ENCRYPTION_ALG
endif # BOOT_ENCRYPTION
endif