@@ -810,6 +810,15 @@ ifeq ($(WOLFCRYPT_TZ_PKCS11),1)
810810 ifeq ($(WOLFCRYPT_TZ_PSA),1)
811811 $(error WOLFCRYPT_TZ_PKCS11 and WOLFCRYPT_TZ_PSA are mutually exclusive)
812812 endif
813+ ifeq ($(WOLFCRYPT_TZ_FWTPM),1)
814+ $(error WOLFCRYPT_TZ_PKCS11 and WOLFCRYPT_TZ_FWTPM are mutually exclusive)
815+ endif
816+ endif
817+
818+ ifeq ($(WOLFCRYPT_TZ_PSA ) ,1)
819+ ifeq ($(WOLFCRYPT_TZ_FWTPM),1)
820+ $(error WOLFCRYPT_TZ_PSA and WOLFCRYPT_TZ_FWTPM are mutually exclusive)
821+ endif
813822endif
814823
815824ifeq ($(WOLFCRYPT_TZ_PKCS11 ) ,1)
@@ -919,6 +928,50 @@ ifeq ($(WOLFCRYPT_TZ_PSA),1)
919928 endif
920929endif
921930
931+ ifeq ($(WOLFCRYPT_TZ_FWTPM ) ,1)
932+ CFLAGS+ =-DWOLFBOOT_TZ_FWTPM
933+ CFLAGS+ =-DWOLFCRYPT_SECURE_MODE
934+ CFLAGS+ =-DWOLFTPM_FWTPM
935+ CFLAGS+ =-DFWTPM_NO_NV
936+ CFLAGS+ =-DWC_RSA_PSS
937+ CFLAGS+ =-DWOLFSSL_PSS_SALT_LEN_DISCOVER
938+ CFLAGS+=-DFWTPM_MAX_COMMAND_SIZE =4096
939+ CFLAGS+ =-I$(WOLFBOOT_LIB_WOLFTPM )
940+ ifeq ($(USE_CLANG),1)
941+ CLANG_MULTILIB_FLAGS: =$(filter -mthumb -mlittle-endian,$(LDFLAGS ) ) $(filter -mcpu=% ,$(CFLAGS ) )
942+ LIBS+ =$(shell $(CLANG_GCC_NAME ) $(CLANG_MULTILIB_FLAGS ) -print-file-name=libc.a)
943+ LIBS+ =$(shell $(CLANG_GCC_NAME ) $(CLANG_MULTILIB_FLAGS ) -print-libgcc-file-name)
944+ else
945+ LDFLAGS+=--specs =nano.specs
946+ endif
947+ WOLFCRYPT_OBJS+ =src/store_sbrk.o
948+ WOLFCRYPT_OBJS+ =src/fwtpm_callable.o
949+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/fwtpm/fwtpm.o
950+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/fwtpm/fwtpm_command.o
951+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/fwtpm/fwtpm_crypto.o
952+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/fwtpm/fwtpm_nv.o
953+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_util.o
954+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_packet.o
955+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_crypto.o
956+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_param_enc.o
957+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFSSL ) /wolfcrypt/src/hmac.o
958+ ifneq ($(SIGN),ED25519)
959+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFSSL ) /wolfcrypt/src/sha512.o
960+ endif
961+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFSSL ) /wolfcrypt/src/wc_encrypt.o
962+ ifeq ($(ENCRYPT_WITH_AES128)$(ENCRYPT_WITH_AES256),)
963+ WOLFCRYPT_OBJS+ =$(WOLFBOOT_LIB_WOLFSSL ) /wolfcrypt/src/aes.o
964+ endif
965+ WOLFCRYPT_OBJS+ =$(RSA_OBJS )
966+ ifeq ($(findstring ECC,$(SIGN)),)
967+ ifeq ($(findstring ECC,$(SIGN_SECONDARY)),)
968+ WOLFCRYPT_OBJS+ =$(ECC_OBJS )
969+ WOLFCRYPT_OBJS+ =$(MATH_OBJS )
970+ endif
971+ endif
972+ STACK_USAGE =20000
973+ endif
974+
922975OBJS+ =$(PUBLIC_KEY_OBJS )
923976ifneq ($(STAGE1 ) ,1)
924977 OBJS+ =$(UPDATE_OBJS )
@@ -931,6 +984,8 @@ ifeq ($(WOLFTPM),1)
931984 $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_packet.o \
932985 $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_tis.o \
933986 $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_wrap.o \
987+ $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_crypto.o \
988+ $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_util.o \
934989 $(WOLFBOOT_LIB_WOLFTPM ) /src/tpm2_param_enc.o
935990 CFLAGS+ =-I$(WOLFBOOT_LIB_WOLFTPM )
936991 CFLAGS+ =-D"WOLFBOOT_TPM"
0 commit comments