Do not include bootloader in flash target when secure boot is enabled. Emit signing warning on all cases where signed apps are enabled (secure boot and signed images) Follow convention of capital letters for SECURE_BOOT_SIGNING_KEY variable, since it is relevant to other components, not just bootloader. Pass signing key and verification key via config, not requiring bootloader to know parent app dir. Misc. variables name corrections
65 lines
2.6 KiB
CMake
65 lines
2.6 KiB
CMake
set(srcs
|
|
"src/bootloader_clock.c"
|
|
"src/bootloader_common.c"
|
|
"src/bootloader_flash.c"
|
|
"src/bootloader_random.c"
|
|
"src/bootloader_utility.c"
|
|
"src/esp_image_format.c"
|
|
"src/flash_encrypt.c"
|
|
"src/flash_partitions.c"
|
|
"src/flash_qio_mode.c")
|
|
|
|
if(BOOTLOADER_BUILD)
|
|
set(include_dirs "include" "include_bootloader")
|
|
set(requires soc) #unfortunately the header directly uses SOC registers
|
|
set(priv_requires micro-ecc spi_flash efuse)
|
|
list(APPEND srcs
|
|
"src/bootloader_init.c"
|
|
"src/${IDF_TARGET}/bootloader_sha.c"
|
|
"src/${IDF_TARGET}/flash_encrypt.c"
|
|
"src/${IDF_TARGET}/secure_boot_signatures.c"
|
|
"src/${IDF_TARGET}/secure_boot.c")
|
|
else()
|
|
list(APPEND srcs
|
|
"src/idf/bootloader_sha.c"
|
|
"src/idf/secure_boot_signatures.c")
|
|
set(include_dirs "include")
|
|
set(priv_include_dirs "include_bootloader")
|
|
set(requires soc) #unfortunately the header directly uses SOC registers
|
|
set(priv_requires spi_flash mbedtls efuse)
|
|
endif()
|
|
|
|
idf_component_register(SRCS "${srcs}"
|
|
INCLUDE_DIRS "${include_dirs}"
|
|
PRIV_INCLUDE_DIRS "${priv_include_dirs}"
|
|
REQUIRES "${requires}"
|
|
PRIV_REQUIRES "${priv_requires}")
|
|
|
|
if(BOOTLOADER_BUILD AND CONFIG_SECURE_SIGNED_APPS)
|
|
# Whether CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES or not, we need verification key to embed
|
|
# in the library.
|
|
if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
|
|
# We generate the key from the signing key. The signing key is passed from the main project.
|
|
get_filename_component(secure_boot_signing_key
|
|
"${SECURE_BOOT_SIGNING_KEY}"
|
|
ABSOLUTE BASE_DIR "${project_dir}")
|
|
get_filename_component(secure_boot_verification_key
|
|
"signature_verification_key.bin"
|
|
ABSOLUTE BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_custom_command(OUTPUT "${secure_boot_verification_key}"
|
|
COMMAND ${ESPSECUREPY}
|
|
extract_public_key --keyfile "${secure_boot_signing_key}"
|
|
"${secure_boot_verification_key}"
|
|
VERBATIM)
|
|
else()
|
|
# We expect to 'inherit' the verification key passed from main project.
|
|
get_filename_component(secure_boot_verification_key
|
|
${SECURE_BOOT_VERIFICATION_KEY}
|
|
ABSOLUTE BASE_DIR "${project_dir}")
|
|
endif()
|
|
|
|
target_add_binary_data(${COMPONENT_LIB} "${secure_boot_verification_key}" "BINARY")
|
|
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
|
|
"${secure_boot_verification_key}")
|
|
endif()
|