@@ -502,45 +502,67 @@ if (CONFIG_BUILD_WITH_TFM)
502502 endif ()
503503 endif ()
504504
505- function (tfm_sign OUT_ARG SUFFIX HEADER TRAILER CONFIRM MAX_SECTORS INPUT_FILE OUTPUT_FILE)
506- if (HEADER AND TRAILER)
505+ function (tfm_sign OUT_ARG)
506+ set (options HEADER TRAILER CONFIRM)
507+ set (oneValueArgs SUFFIX MAX_SECTORS INPUT_FILE OUTPUT_FILE)
508+ set (multiValueArgs "" )
509+
510+ cmake_parse_arguments (
511+ TFM_SIGN_ARG
512+ "${options} "
513+ "${oneValueArgs} "
514+ "${multiValueArgs} "
515+ ${ARGN}
516+ )
517+
518+ if (NOT DEFINED TFM_SIGN_ARG_SUFFIX OR
519+ NOT DEFINED TFM_SIGN_ARG_INPUT_FILE OR
520+ NOT DEFINED TFM_SIGN_ARG_OUTPUT_FILE)
521+ message (FATAL_ERROR "SUFFIX, INPUT_FILE and OUTPUT_FILE are required arguments" )
522+ endif ()
523+
524+ set (pad_args "" )
525+ if (TFM_SIGN_ARG_HEADER AND TFM_SIGN_ARG_TRAILER)
507526 set (pad_args --pad --pad-header)
508- elseif (HEADER )
527+ elseif (TFM_SIGN_ARG_HEADER )
509528 set (pad_args --pad-header)
510- elseif (TRAILER )
529+ elseif (TFM_SIGN_ARG_TRAILER )
511530 set (pad_args --pad)
512531 endif ()
513- if (CONFIRM)
514- # --confirm imply PAD
532+
533+ set (confirm "" )
534+ if (TFM_SIGN_ARG_CONFIRM)
515535 set (confirm --confirm)
516536 endif ()
537+
517538 # Secure + Non-secure images are signed the same way as a secure only
518539 # build, but with a different layout file.
519- set (layout_file ${PREPROCESSED_FILE_${SUFFIX } })
520- if (SUFFIX STREQUAL "S_NS" )
521- set (SUFFIX "S" )
540+ set (layout_file ${PREPROCESSED_FILE_${TFM_SIGN_ARG_SUFFIX } })
541+ if (TFM_SIGN_ARG_SUFFIX STREQUAL "S_NS" )
542+ set (TFM_SIGN_ARG_SUFFIX "S" )
522543 endif ()
523- set (${OUT_ARG}
544+
545+ set (${OUT_ARG}
524546 # Add the MCUBoot script to the path so that if there is a version of imgtool in there then
525547 # it gets used over the system imgtool. Used so that imgtool from upstream
526548 # mcuboot is preferred over system imgtool
527549 ${CMAKE_COMMAND} -E env PYTHONPATH=${ZEPHYR_MCUBOOT_MODULE_DIR} /scripts
528550 ${PYTHON_EXECUTABLE} ${TFM_MCUBOOT_DIR} /scripts/wrapper/wrapper.py
529551 --layout ${layout_file}
530- -k ${CONFIG_TFM_KEY_FILE_${SUFFIX } }
552+ -k ${CONFIG_TFM_KEY_FILE_${TFM_SIGN_ARG_SUFFIX } }
531553 --public -key-format ${TFM_PUBLIC_KEY_FORMAT}
532554 --align ${image_alignment}
533- --max-sectors ${MAX_SECTORS }
534- -v ${CONFIG_TFM_IMAGE_VERSION_${SUFFIX } }
555+ --max-sectors ${TFM_SIGN_ARG_MAX_SECTORS }
556+ -v ${CONFIG_TFM_IMAGE_VERSION_${TFM_SIGN_ARG_SUFFIX } }
535557 ${pad_args}
536558 ${confirm}
537- ${HEX_ADDR_ARGS_${SUFFIX } }
538- ${ADD_${SUFFIX } _IMAGE_MIN_VER}
559+ ${HEX_ADDR_ARGS_${TFM_SIGN_ARG_SUFFIX } }
560+ ${ADD_${TFM_SIGN_ARG_SUFFIX } _IMAGE_MIN_VER}
539561 -s ${CONFIG_TFM_IMAGE_SECURITY_COUNTER}
540562 --measured-boot-record
541563 -H ${CONFIG_ROM_START_OFFSET}
542- ${INPUT_FILE }
543- ${OUTPUT_FILE }
564+ ${TFM_SIGN_ARG_INPUT_FILE }
565+ ${TFM_SIGN_ARG_OUTPUT_FILE }
544566 PARENT_SCOPE)
545567 endfunction ()
546568
@@ -576,8 +598,9 @@ if (CONFIG_BUILD_WITH_TFM)
576598 )
577599
578600 elseif (CONFIG_TFM_MCUBOOT_IMAGE_NUMBER STREQUAL "1" )
579- tfm_sign(sign_cmd_s_ns_hex S_NS TRUE TRUE TRUE ${S_NS_MAX_SECTORS} ${S_NS_HEX_FILE}
580- ${S_NS_SIGNED_HEX_FILE} )
601+ tfm_sign(sign_cmd_s_ns_hex SUFFIX "S_NS"
602+ HEADER TRAILER CONFIRM MAX_SECTORS ${S_NS_MAX_SECTORS}
603+ INPUT_FILE ${S_NS_HEX_FILE} OUTPUT_FILE ${S_NS_SIGNED_HEX_FILE} )
581604
582605 set_property (GLOBAL APPEND PROPERTY extra_post_build_commands
583606 COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE} /scripts/build /mergehex.py
@@ -602,21 +625,33 @@ if (CONFIG_BUILD_WITH_TFM)
602625
603626 else ()
604627 if (CONFIG_TFM_USE_NS_APP)
605- tfm_sign(sign_cmd_ns_hex NS TRUE TRUE TRUE ${S_NS_MAX_SECTORS} ${NS_HEX_APP_FILE}
606- ${NS_SIGNED_HEX_FILE} )
607- tfm_sign(sign_cmd_ns_bin NS TRUE TRUE FALSE ${S_NS_MAX_SECTORS} ${NS_BIN_APP_FILE}
608- ${NS_SIGNED_BIN_FILE} )
628+ tfm_sign(sign_cmd_ns_hex SUFFIX "NS"
629+ HEADER TRAILER CONFIRM MAX_SECTORS ${S_NS_MAX_SECTORS}
630+ INPUT_FILE ${NS_HEX_APP_FILE}
631+ OUTPUT_FILE ${NS_SIGNED_HEX_FILE} )
632+ tfm_sign(sign_cmd_ns_bin SUFFIX "NS"
633+ HEADER TRAILER MAX_SECTORS ${S_NS_MAX_SECTORS}
634+ INPUT_FILE ${NS_BIN_APP_FILE}
635+ OUTPUT_FILE ${NS_SIGNED_BIN_FILE} )
609636 else ()
610- tfm_sign(sign_cmd_ns NS FALSE TRUE TRUE ${S_NS_MAX_SECTORS} ${NS_HEX_APP_FILE}
611- ${NS_SIGNED_HEX_FILE} )
612- tfm_sign(sign_cmd_ns_bin NS FALSE FALSE FALSE ${S_NS_MAX_SECTORS} ${NS_BIN_APP_FILE}
613- ${NS_SIGNED_BIN_FILE} )
637+ tfm_sign(sign_cmd_ns_hex SUFFIX "NS"
638+ TRAILER CONFIRM MAX_SECTORS ${S_NS_MAX_SECTORS}
639+ INPUT_FILE ${NS_HEX_APP_FILE}
640+ OUTPUT_FILE ${NS_SIGNED_HEX_FILE} )
641+ tfm_sign(sign_cmd_ns_bin SUFFIX "NS"
642+ MAX_SECTORS ${S_NS_MAX_SECTORS}
643+ INPUT_FILE ${NS_BIN_APP_FILE}
644+ OUTPUT_FILE ${NS_SIGNED_BIN_FILE} )
614645 endif ()
615646
616- tfm_sign(sign_cmd_s_hex S TRUE TRUE TRUE ${S_NS_MAX_SECTORS}
617- $<TARGET_PROPERTY:tfm,TFM_S_HEX_FILE> ${S_SIGNED_HEX_FILE} )
618- tfm_sign(sign_cmd_s_bin S TRUE TRUE FALSE ${S_NS_MAX_SECTORS}
619- $<TARGET_PROPERTY:tfm,TFM_S_BIN_FILE> ${S_SIGNED_BIN_FILE} )
647+ tfm_sign(sign_cmd_s_hex SUFFIX "S"
648+ HEADER TRAILER CONFIRM MAX_SECTORS ${S_NS_MAX_SECTORS}
649+ INPUT_FILE $<TARGET_PROPERTY:tfm,TFM_S_HEX_FILE>
650+ OUTPUT_FILE ${S_SIGNED_HEX_FILE} )
651+ tfm_sign(sign_cmd_s_bin SUFFIX "S"
652+ HEADER TRAILER MAX_SECTORS ${S_NS_MAX_SECTORS}
653+ INPUT_FILE $<TARGET_PROPERTY:tfm,TFM_S_BIN_FILE>
654+ OUTPUT_FILE ${S_SIGNED_BIN_FILE} )
620655
621656 #Create and sign for concatenated binary image, should align with the TF-M BL2
622657 set_property (GLOBAL APPEND PROPERTY extra_post_build_commands
0 commit comments