Enable NSC veneers when TZEN=1, even without WOLFCRYPT_TZ

pull/727/head
Mattia Moffa 2026-03-18 21:35:54 +01:00
parent 52223853c4
commit b5fab30310
19 changed files with 55 additions and 48 deletions

View File

@ -696,14 +696,14 @@ if(ARCH STREQUAL "ARM")
list(APPEND WOLFBOOT_COMPILE_OPTIONS -mcmse) list(APPEND WOLFBOOT_COMPILE_OPTIONS -mcmse)
list(APPEND WOLFBOOT_LINK_OPTIONS -mcmse) list(APPEND WOLFBOOT_LINK_OPTIONS -mcmse)
endif() endif()
list(APPEND WOLFBOOT_LINK_OPTIONS
-Wl,--cmse-implib
-Wl,--out-implib=${CMAKE_CURRENT_BINARY_DIR}/wolfboot_tz_nsc.o)
# wolfCrypt TrustZone secure mode # wolfCrypt TrustZone secure mode
if(WOLFCRYPT_TZ) if(WOLFCRYPT_TZ)
list(APPEND WOLFBOOT_DEFS WOLFCRYPT_SECURE_MODE) list(APPEND WOLFBOOT_DEFS WOLFCRYPT_SECURE_MODE)
list(APPEND WOLFBOOT_SOURCES src/wc_callable.c) list(APPEND WOLFBOOT_SOURCES src/wc_callable.c)
list(APPEND WOLFBOOT_LINK_OPTIONS
-Wl,--cmse-implib
-Wl,--out-implib=${CMAKE_CURRENT_BINARY_DIR}/wc_secure_calls.o)
# PKCS11 TrustZone interface # PKCS11 TrustZone interface
if(WOLFCRYPT_TZ_PKCS11) if(WOLFCRYPT_TZ_PKCS11)

View File

@ -562,7 +562,7 @@ keys: $(PRIVATE_KEY)
clean: clean:
$(Q)rm -f src/*.o hal/*.o hal/spi/*.o test-app/*.o src/x86/*.o $(Q)rm -f src/*.o hal/*.o hal/spi/*.o test-app/*.o src/x86/*.o
$(Q)rm -f src/wc_secure_calls.o $(Q)rm -f src/wolfboot_tz_nsc.o
$(Q)rm -f $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/*.o $(WOLFBOOT_LIB_WOLFTPM)/src/*.o $(WOLFBOOT_LIB_WOLFTPM)/hal/*.o $(WOLFBOOT_LIB_WOLFTPM)/examples/pcr/*.o $(Q)rm -f $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/*.o $(WOLFBOOT_LIB_WOLFTPM)/src/*.o $(WOLFBOOT_LIB_WOLFTPM)/hal/*.o $(WOLFBOOT_LIB_WOLFTPM)/examples/pcr/*.o
$(Q)rm -f $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/port/Renesas/*.o $(Q)rm -f $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/port/Renesas/*.o
$(Q)rm -f wolfboot.bin wolfboot.elf wolfboot.map test-update.rom wolfboot.hex wolfboot.srec factory.srec $(Q)rm -f wolfboot.bin wolfboot.elf wolfboot.map test-update.rom wolfboot.hex wolfboot.srec factory.srec

View File

@ -360,13 +360,13 @@ else
OBJS+=hal/stm32_tz.o OBJS+=hal/stm32_tz.o
endif endif
CFLAGS+=-mcmse CFLAGS+=-mcmse
SECURE_LDFLAGS+=-Wl,--cmse-implib -Wl,--out-implib=./src/wolfboot_tz_nsc.o
ifeq ($(WOLFCRYPT_TZ),1) ifeq ($(WOLFCRYPT_TZ),1)
CORTEXM_ARM_EXTRA_OBJS= CORTEXM_ARM_EXTRA_OBJS=
CORTEXM_ARM_EXTRA_CFLAGS= CORTEXM_ARM_EXTRA_CFLAGS=
SECURE_OBJS+=./src/wc_callable.o SECURE_OBJS+=./src/wc_callable.o
WOLFCRYPT_OBJS+=$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o WOLFCRYPT_OBJS+=$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o
CFLAGS+=-DWOLFCRYPT_SECURE_MODE CFLAGS+=-DWOLFCRYPT_SECURE_MODE
SECURE_LDFLAGS+=-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
endif endif
endif # TZEN=1 endif # TZEN=1
ifeq ($(SPMATH),1) ifeq ($(SPMATH),1)

View File

@ -52,8 +52,8 @@ function(gen_wolfboot_platform_target PLATFORM_NAME LINKER_SCRIPT_TARGET)
${LINKER_SCRIPT_TARGET}) ${LINKER_SCRIPT_TARGET})
# TrustZone import library (generated by the linker via --out-implib) # TrustZone import library (generated by the linker via --out-implib)
if(TZEN AND WOLFCRYPT_TZ) if(TZEN)
set(_wcs_implib "${CMAKE_BINARY_DIR}/wc_secure_calls.o") set(_wcs_implib "${CMAKE_BINARY_DIR}/wolfboot_tz_nsc.o")
add_custom_command(TARGET wolfboot_${PLATFORM_NAME} POST_BUILD add_custom_command(TARGET wolfboot_${PLATFORM_NAME} POST_BUILD
BYPRODUCTS "${_wcs_implib}" BYPRODUCTS "${_wcs_implib}"
COMMAND ${CMAKE_COMMAND} -E true COMMAND ${CMAKE_COMMAND} -E true

View File

@ -78,6 +78,8 @@ secure domain. For this purpose, wolfBoot provides Non-Secure Callable (NSC)
APIs that allow code running in the non-secure domain to call into the secure APIs that allow code running in the non-secure domain to call into the secure
domain managed by wolfBoot. domain managed by wolfBoot.
When `TZEN=1` is enabled, these APIs are available to non-secure applications.
These APIs are listed below. These APIs are listed below.
- `void wolfBoot_nsc_success(void)`: wrapper for `wolfBoot_success()` - `void wolfBoot_nsc_success(void)`: wrapper for `wolfBoot_success()`

View File

@ -588,7 +588,7 @@ int wolfBoot_set_encrypt_key(const uint8_t *key, const uint8_t *nonce);
int wolfBoot_get_encrypt_key(uint8_t *key, uint8_t *nonce); int wolfBoot_get_encrypt_key(uint8_t *key, uint8_t *nonce);
int wolfBoot_erase_encrypt_key(void); int wolfBoot_erase_encrypt_key(void);
#if !defined(__WOLFBOOT) && defined(WOLFCRYPT_SECURE_MODE) #if !defined(__WOLFBOOT) && defined(TZEN)
/* Applications can access update success/trigger and flash erase/write /* Applications can access update success/trigger and flash erase/write
* via non-secure callable, to facilitate updates * via non-secure callable, to facilitate updates
@ -627,7 +627,7 @@ int wolfBoot_nsc_erase_update(uint32_t address, uint32_t len);
CSME_NSE_API CSME_NSE_API
int wolfBoot_nsc_write_update(uint32_t address, const uint8_t *buf, uint32_t len); int wolfBoot_nsc_write_update(uint32_t address, const uint8_t *buf, uint32_t len);
#endif /* !__WOLFBOOT && WOLFCRYPT_SECURE_MODE */ #endif /* !__WOLFBOOT && TZEN */
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -2354,7 +2354,7 @@ int wolfBoot_ram_decrypt(uint8_t *src, uint8_t *dst)
#endif /* MMU */ #endif /* MMU */
#endif /* EXT_ENCRYPTED */ #endif /* EXT_ENCRYPTED */
#if defined(__WOLFBOOT) && defined(WOLFCRYPT_SECURE_MODE) #if defined(__WOLFBOOT) && defined(TZEN)
CSME_NSE_API CSME_NSE_API
void wolfBoot_nsc_success(void) void wolfBoot_nsc_success(void)
{ {
@ -2410,4 +2410,4 @@ int wolfBoot_nsc_write_update(uint32_t address, const uint8_t *buf, uint32_t len
return ret; return ret;
} }
#endif #endif /* __WOLFBOOT && TZEN */

View File

@ -176,7 +176,7 @@ if(BUILD_TEST_APPS)
target_include_directories(image PRIVATE ../lib/wolfPKCS11) target_include_directories(image PRIVATE ../lib/wolfPKCS11)
endif() endif()
# For TrustZone builds, avoid linking the bootloader lib (it defines NSC stubs). # wolfCrypt TrustZone test builds provide extra secure-call wrappers directly.
if(TZEN AND WOLFCRYPT_TZ) if(TZEN AND WOLFCRYPT_TZ)
target_sources(image PRIVATE ../src/libwolfboot.c) target_sources(image PRIVATE ../src/libwolfboot.c)
if(NOT SIGN STREQUAL "NONE") if(NOT SIGN STREQUAL "NONE")
@ -189,11 +189,15 @@ if(BUILD_TEST_APPS)
target_link_libraries(image PRIVATE wolfboot wolfboothal public_key target) target_link_libraries(image PRIVATE wolfboot wolfboothal public_key target)
endif() endif()
# For TrustZone builds, the test app is a non-secure application # For TrustZone builds, the test app is a non-secure application and links
if(TZEN AND WOLFCRYPT_TZ) # the CMSE import library generated from the secure bootloader veneers.
list(APPEND TEST_APP_COMPILE_DEFINITIONS NONSECURE_APP WOLFBOOT_SECURE_CALLS) if(TZEN)
list(APPEND TEST_APP_COMPILE_DEFINITIONS NONSECURE_APP)
add_dependencies(image wolfboot_${PLATFORM_NAME}) add_dependencies(image wolfboot_${PLATFORM_NAME})
target_link_libraries(image PRIVATE ${CMAKE_BINARY_DIR}/wc_secure_calls.o) target_link_libraries(image PRIVATE ${CMAKE_BINARY_DIR}/wolfboot_tz_nsc.o)
endif()
if(TZEN AND WOLFCRYPT_TZ)
list(APPEND TEST_APP_COMPILE_DEFINITIONS WOLFBOOT_SECURE_CALLS)
endif() endif()
if(WOLFCRYPT_TZ_PKCS11) if(WOLFCRYPT_TZ_PKCS11)

View File

@ -218,9 +218,9 @@ ifeq ($(TZEN),1)
CFLAGS+=-DNONSECURE_APP CFLAGS+=-DNONSECURE_APP
CFLAGS+=-I./ CFLAGS+=-I./
APP_OBJS+=../hal/$(TARGET)_ns.o APP_OBJS+=../hal/$(TARGET)_ns.o
APP_OBJS+=../src/wolfboot_tz_nsc.o
ifeq ($(WOLFCRYPT_TZ),1) ifeq ($(WOLFCRYPT_TZ),1)
CFLAGS+=-I"$(WOLFBOOT_LIB_WOLFSSL)" CFLAGS+=-I"$(WOLFBOOT_LIB_WOLFSSL)"
APP_OBJS+=../src/wc_secure_calls.o
WOLFCRYPT_APP_OBJS+=\ WOLFCRYPT_APP_OBJS+=\
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/memory.o \ $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/memory.o \
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/hash.o \ $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/hash.o \
@ -244,11 +244,6 @@ ifeq ($(TZEN),1)
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/wolfentropy.o \ $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/wolfentropy.o \
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/dh.o \ $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/dh.o \
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/wc_encrypt.o $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/wc_encrypt.o
ifeq ($(TEST_APP_NO_RNG),1)
CFLAGS+=-DWC_NO_RNG
else
WOLFCRYPT_APP_OBJS+=$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o
endif
ifeq ($(WOLFCRYPT_TZ_PKCS11),1) ifeq ($(WOLFCRYPT_TZ_PKCS11),1)
CFLAGS+=-DWOLFSSL_USER_SETTINGS -DWOLFTPM_USER_SETTINGS CFLAGS+=-DWOLFSSL_USER_SETTINGS -DWOLFTPM_USER_SETTINGS
CFLAGS+=-DWOLFBOOT_PKCS11_APP -DSECURE_PKCS11 -DWOLFBOOT_TZ_PKCS11 CFLAGS+=-DWOLFBOOT_PKCS11_APP -DSECURE_PKCS11 -DWOLFBOOT_TZ_PKCS11
@ -287,6 +282,12 @@ ifeq ($(TZEN),1)
APP_OBJS+=./wcs/sp_cortexm.o APP_OBJS+=./wcs/sp_cortexm.o
endif endif
endif endif
else
ifeq ($(TEST_APP_NO_RNG),1)
CFLAGS+=-DWC_NO_RNG
else
WOLFCRYPT_APP_OBJS+=$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o
endif
endif endif
CFLAGS+=-DWOLFBOOT_SECURE_CALLS -Wstack-usage=19184 CFLAGS+=-DWOLFBOOT_SECURE_CALLS -Wstack-usage=19184
LDFLAGS+=--specs=nosys.specs -u _printf_float LDFLAGS+=--specs=nosys.specs -u _printf_float

View File

@ -83,7 +83,7 @@ void main(void)
hal_init(); hal_init();
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
boot_ver = wolfBoot_nsc_current_firmware_version(); boot_ver = wolfBoot_nsc_current_firmware_version();
#else #else
boot_ver = wolfBoot_current_firmware_version(); boot_ver = wolfBoot_current_firmware_version();
@ -107,7 +107,7 @@ void main(void)
/* Blue off */ /* Blue off */
gpio_init_output(GPIO1, PORT1, kCLOCK_Gpio1, kCLOCK_Port1, 2U, 1U); gpio_init_output(GPIO1, PORT1, kCLOCK_Gpio1, kCLOCK_Port1, 2U, 1U);
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_success(); wolfBoot_nsc_success();
#else #else
wolfBoot_success(); wolfBoot_success();

View File

@ -318,7 +318,7 @@ static int cmd_update_xmodem(const char *args)
printf("Erasing update partition..."); printf("Erasing update partition...");
fflush(stdout); fflush(stdout);
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_erase_update(dst_offset, WOLFBOOT_PARTITION_SIZE); wolfBoot_nsc_erase_update(dst_offset, WOLFBOOT_PARTITION_SIZE);
#else #else
hal_flash_unlock(); hal_flash_unlock();
@ -387,7 +387,7 @@ static int cmd_update_xmodem(const char *args)
if (crc == calc_crc) { if (crc == calc_crc) {
/* CRC is valid */ /* CRC is valid */
memcpy(xpkt_payload, xpkt + 3, XMODEM_PAYLOAD_SIZE); memcpy(xpkt_payload, xpkt + 3, XMODEM_PAYLOAD_SIZE);
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
ret = wolfBoot_nsc_write_update(dst_offset, xpkt_payload, XMODEM_PAYLOAD_SIZE); ret = wolfBoot_nsc_write_update(dst_offset, xpkt_payload, XMODEM_PAYLOAD_SIZE);
#else #else
ret = hal_flash_write(WOLFBOOT_PARTITION_UPDATE_ADDRESS + dst_offset, xpkt_payload, XMODEM_PAYLOAD_SIZE); ret = hal_flash_write(WOLFBOOT_PARTITION_UPDATE_ADDRESS + dst_offset, xpkt_payload, XMODEM_PAYLOAD_SIZE);
@ -425,7 +425,7 @@ static int cmd_update_xmodem(const char *args)
} }
else { else {
printf("Transfer succeeded\r\n"); printf("Transfer succeeded\r\n");
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
update_ver = wolfBoot_nsc_update_firmware_version(); update_ver = wolfBoot_nsc_update_firmware_version();
#else #else
update_ver = wolfBoot_update_firmware_version(); update_ver = wolfBoot_update_firmware_version();
@ -433,7 +433,7 @@ static int cmd_update_xmodem(const char *args)
if (update_ver != 0) { if (update_ver != 0) {
printf("New firmware version: 0x%lx\r\n", update_ver); printf("New firmware version: 0x%lx\r\n", update_ver);
printf("Triggering update...\r\n"); printf("Triggering update...\r\n");
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_update_trigger(); wolfBoot_nsc_update_trigger();
#else #else
wolfBoot_update_trigger(); wolfBoot_update_trigger();
@ -444,7 +444,7 @@ static int cmd_update_xmodem(const char *args)
} }
} }
#ifndef WOLFCRYPT_SECURE_MODE #ifndef TZEN
hal_flash_lock(); hal_flash_lock();
#endif #endif
@ -535,7 +535,7 @@ static int cmd_info(const char *args)
uint16_t hdrSz; uint16_t hdrSz;
uint8_t boot_part_state = IMG_STATE_NEW, update_part_state = IMG_STATE_NEW; uint8_t boot_part_state = IMG_STATE_NEW, update_part_state = IMG_STATE_NEW;
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
cur_fw_version = wolfBoot_nsc_current_firmware_version(); cur_fw_version = wolfBoot_nsc_current_firmware_version();
update_fw_version = wolfBoot_nsc_update_firmware_version(); update_fw_version = wolfBoot_nsc_update_firmware_version();
@ -597,7 +597,7 @@ static int cmd_info(const char *args)
static int cmd_success(const char *args) static int cmd_success(const char *args)
{ {
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_success(); wolfBoot_nsc_success();
#else #else
wolfBoot_success(); wolfBoot_success();
@ -1335,7 +1335,7 @@ void main(void)
/* Enable SysTick */ /* Enable SysTick */
systick_enable(); systick_enable();
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
app_version = wolfBoot_nsc_current_firmware_version(); app_version = wolfBoot_nsc_current_firmware_version();
#else #else
app_version = wolfBoot_current_firmware_version(); app_version = wolfBoot_current_firmware_version();

View File

@ -109,7 +109,7 @@ static uint32_t emu_current_version(void)
{ {
uintptr_t addr = (uintptr_t)WOLFBOOT_PARTITION_BOOT_ADDRESS; uintptr_t addr = (uintptr_t)WOLFBOOT_PARTITION_BOOT_ADDRESS;
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
return wolfBoot_nsc_current_firmware_version(); return wolfBoot_nsc_current_firmware_version();
#else #else
if (addr == 0u) { if (addr == 0u) {
@ -178,7 +178,7 @@ static void wait_for_update(uint32_t version)
memset(page, 0xFF, PAGESIZE); memset(page, 0xFF, PAGESIZE);
#ifndef WOLFCRYPT_SECURE_MODE #ifndef TZEN
hal_flash_unlock(); hal_flash_unlock();
#endif #endif
@ -237,7 +237,7 @@ static void wait_for_update(uint32_t version)
if ((page_idx == PAGESIZE) || (next_seq + (uint32_t)psize >= tot_len)) { if ((page_idx == PAGESIZE) || (next_seq + (uint32_t)psize >= tot_len)) {
uint32_t dst = (WOLFBOOT_PARTITION_UPDATE_ADDRESS + recv_seq + (uint32_t)psize) - (uint32_t)page_idx; uint32_t dst = (WOLFBOOT_PARTITION_UPDATE_ADDRESS + recv_seq + (uint32_t)psize) - (uint32_t)page_idx;
uint32_t dst_off = (recv_seq + (uint32_t)psize) - (uint32_t)page_idx; uint32_t dst_off = (recv_seq + (uint32_t)psize) - (uint32_t)page_idx;
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
if ((dst_off % WOLFBOOT_SECTOR_SIZE) == 0u) { if ((dst_off % WOLFBOOT_SECTOR_SIZE) == 0u) {
wolfBoot_nsc_erase_update(dst_off, WOLFBOOT_SECTOR_SIZE); wolfBoot_nsc_erase_update(dst_off, WOLFBOOT_SECTOR_SIZE);
} }
@ -255,7 +255,7 @@ static void wait_for_update(uint32_t version)
ack(next_seq); ack(next_seq);
if (next_seq >= tot_len) { if (next_seq >= tot_len) {
uint32_t update_ver; uint32_t update_ver;
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
update_ver = wolfBoot_nsc_update_firmware_version(); update_ver = wolfBoot_nsc_update_firmware_version();
#else #else
update_ver = wolfBoot_get_blob_version((uint8_t *)WOLFBOOT_PARTITION_UPDATE_ADDRESS); update_ver = wolfBoot_get_blob_version((uint8_t *)WOLFBOOT_PARTITION_UPDATE_ADDRESS);
@ -264,7 +264,7 @@ static void wait_for_update(uint32_t version)
__asm volatile("bkpt #0x4D"); __asm volatile("bkpt #0x4D");
break; break;
} }
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_update_trigger(); wolfBoot_nsc_update_trigger();
#else #else
wolfBoot_update_trigger(); wolfBoot_update_trigger();
@ -274,7 +274,7 @@ static void wait_for_update(uint32_t version)
} }
} }
#ifndef WOLFCRYPT_SECURE_MODE #ifndef TZEN
hal_flash_lock(); hal_flash_lock();
#endif #endif
@ -293,7 +293,7 @@ int main(void)
printf("get_version=%lu\n", (unsigned long)version); printf("get_version=%lu\n", (unsigned long)version);
if (version == 4u) { if (version == 4u) {
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_success(); wolfBoot_nsc_success();
#else #else
wolfBoot_success(); wolfBoot_success();
@ -310,7 +310,7 @@ int main(void)
} }
} }
if (version == 8u) { if (version == 8u) {
#ifdef WOLFCRYPT_SECURE_MODE #ifdef TZEN
wolfBoot_nsc_success(); wolfBoot_nsc_success();
#else #else
wolfBoot_success(); wolfBoot_success();

View File

@ -33,7 +33,7 @@ LDLIBS := -Wl,--start-group -lc -lm -lgcc -lnosys -Wl,--end-group
NSC_OBJ := NSC_OBJ :=
ifeq ($(TZEN),1) ifeq ($(TZEN),1)
CFLAGS += -DWOLFCRYPT_SECURE_MODE CFLAGS += -DWOLFCRYPT_SECURE_MODE
NSC_OBJ := ../../../src/wc_secure_calls.o NSC_OBJ := ../../../src/wolfboot_tz_nsc.o
endif endif
VPATH := ../common VPATH := ../common

View File

@ -29,7 +29,7 @@ LDLIBS := -Wl,--start-group -lc -lm -lgcc -lnosys -Wl,--end-group
NSC_OBJ := NSC_OBJ :=
ifeq ($(TZEN),1) ifeq ($(TZEN),1)
CFLAGS += -DWOLFCRYPT_SECURE_MODE CFLAGS += -DWOLFCRYPT_SECURE_MODE
NSC_OBJ := ../../../src/wc_secure_calls.o NSC_OBJ := ../../../src/wolfboot_tz_nsc.o
endif endif
VPATH := ../common VPATH := ../common

View File

@ -29,7 +29,7 @@ LDLIBS := -Wl,--start-group -lc -lm -lgcc -lnosys -Wl,--end-group
NSC_OBJ := NSC_OBJ :=
ifeq ($(TZEN),1) ifeq ($(TZEN),1)
CFLAGS += -DWOLFCRYPT_SECURE_MODE CFLAGS += -DWOLFCRYPT_SECURE_MODE
NSC_OBJ := ../../../src/wc_secure_calls.o NSC_OBJ := ../../../src/wolfboot_tz_nsc.o
endif endif
VPATH := ../common VPATH := ../common

View File

@ -30,7 +30,7 @@ NSC_OBJ :=
ifeq ($(TZEN),1) ifeq ($(TZEN),1)
CFLAGS += -DNONSECURE_APP CFLAGS += -DNONSECURE_APP
CFLAGS += -DWOLFCRYPT_SECURE_MODE CFLAGS += -DWOLFCRYPT_SECURE_MODE
NSC_OBJ := ../../../src/wc_secure_calls.o NSC_OBJ := ../../../src/wolfboot_tz_nsc.o
endif endif
VPATH := ../common VPATH := ../common

View File

@ -30,7 +30,7 @@ NSC_OBJ :=
ifeq ($(TZEN),1) ifeq ($(TZEN),1)
CFLAGS += -DNONSECURE_APP CFLAGS += -DNONSECURE_APP
CFLAGS += -DWOLFCRYPT_SECURE_MODE CFLAGS += -DWOLFCRYPT_SECURE_MODE
NSC_OBJ := ../../../src/wc_secure_calls.o NSC_OBJ := ../../../src/wolfboot_tz_nsc.o
endif endif
VPATH := ../common VPATH := ../common

View File

@ -32,7 +32,7 @@ zephyr_library_include_directories(
${WOLFBOOT_MODULE_DIR}/include ${WOLFBOOT_MODULE_DIR}/include
) )
set(WOLFBOOT_CMSE_VENEERS ${WOLFBOOT_MODULE_DIR}/src/wc_secure_calls.o) set(WOLFBOOT_CMSE_VENEERS ${WOLFBOOT_MODULE_DIR}/src/wolfboot_tz_nsc.o)
if(EXISTS ${WOLFBOOT_CMSE_VENEERS}) if(EXISTS ${WOLFBOOT_CMSE_VENEERS})
zephyr_library_link_libraries(${WOLFBOOT_CMSE_VENEERS}) zephyr_library_link_libraries(${WOLFBOOT_CMSE_VENEERS})
else() else()

View File

@ -49,7 +49,7 @@ cp config/examples/stm32h5-tz-psa.config .config
make clean wolfboot.bin make clean wolfboot.bin
``` ```
This also produces `src/wc_secure_calls.o`, which Zephyr links for CMSE veneers. This also produces `src/wolfboot_tz_nsc.o`, which Zephyr links for CMSE veneers.
## 4) Build the PSA crypto sample with wolfBoot as an extra module ## 4) Build the PSA crypto sample with wolfBoot as an extra module
@ -101,7 +101,7 @@ wolfboot/src/arm_tee_psa_ipc.c
### PSA symbols missing during Zephyr build ### PSA symbols missing during Zephyr build
Make sure: Make sure:
- You built wolfBoot first (for `wc_secure_calls.o`). - You built wolfBoot first (for `wolfboot_tz_nsc.o`).
- You passed `-DZEPHYR_EXTRA_MODULES=/path/to/wolfboot`. - You passed `-DZEPHYR_EXTRA_MODULES=/path/to/wolfboot`.
### Kconfig warnings about WOLFBOOT_* symbols ### Kconfig warnings about WOLFBOOT_* symbols