if(CONFIG_OPTEE_OS)
set(CFLAGS
-D__text_start=_stext
-DCFG_COMPAT_GP10_DES
-DCFG_CORE_BIGNUM_MAX_BITS=4096
-DCFG_CORE_DYN_SHM
-DCFG_CORE_MAX_SYSCALL_RECURSION=4
-DCFG_CRYPTO_AES
-DCFG_CRYPTO_CBC
-DCFG_CRYPTO_CBC_MAC
-DCFG_CRYPTO_CBC_MAC_BUNDLE_BLOCKS=64
-DCFG_CRYPTO_CMAC
-DCFG_CRYPTO_CTR
-DCFG_CRYPTO_DES
-DCFG_CRYPTO_DH
-DCFG_CRYPTO_ECB
-DCFG_CRYPTO_ECC
-DCFG_CRYPTO_GCM
-DCFG_CRYPTO_HMAC
-DCFG_CRYPTO_MD5
-DCFG_CRYPTO_SHA1
-DCFG_CRYPTO_SHA224
-DCFG_CRYPTO_SHA256
-DCFG_CRYPTO_SHA3_224
-DCFG_CRYPTO_SHA3_256
-DCFG_CRYPTO_SHA3_384
-DCFG_CRYPTO_SHA3_512
-DCFG_CRYPTO_SHA384
-DCFG_CRYPTO_SHA512
-DCFG_CRYPTO_SM2_KEP
-DCFG_LPAE_ADDR_SPACE_BITS=32
-DCFG_MAX_CACHE_LINE_SHIFT=6
-DCFG_MSG_LONG_PREFIX_MASK=0x1a
-DCFG_NUM_THREADS=1
-DCFG_TEE_CORE_NB_CORE=1
-DCFG_OTP_SUPPORT
-DCFG_OTP_SUPPORT_NO_PROVISION_TMP
-DCFG_TA_BIGNUM_MAX_BITS=2048
-DCFG_WITH_SOFTWARE_PRNG
-DCFG_WITH_USER_TA
-DTRACE_PERF
-D__KERNEL__)
if(CONFIG_DEBUG_INFO)
list(APPEND CFLAGS -DTRACE_LEVEL=3)
elseif(CONFIG_DEBUG_WARN)
list(APPEND CFLAGS -DTRACE_LEVEL=2)
elseif(CONFIG_DEBUG_ERROR)
list(APPEND CFLAGS -DTRACE_LEVEL=1)
else()
list(APPEND CFLAGS -DTRACE_LEVEL=1)
endif()
if(CONFIG_ARCH_64BIT)
list(APPEND CFLAGS -DARM64)
else()
list(APPEND CFLAGS -DARM32)
endif()
if(CONFIG_TEE_CORE_DEBUG)
list(APPEND CFLAGS -DCFG_TEE_CORE_DEBUG)
endif()
if(CONFIG_OPTEE_REE_FS)
list(APPEND CFLAGS -DCFG_REE_FS)
endif()
set(CSRCS
optee_os/core/crypto/aes-gcm-sw.c
optee_os/core/crypto/aes-gcm.c
optee_os/core/crypto/cbc-mac.c
optee_os/core/crypto/crypto.c
optee_os/core/crypto/rng_hw.c
optee_os/core/crypto/sm2-kdf.c
optee_os/core/kernel/initcall.c
optee_os/core/kernel/mutex.c
optee_os/core/kernel/pseudo_ta.c
optee_os/core/kernel/refcount.c
optee_os/core/kernel/scattered_array.c
optee_os/core/kernel/tee_misc.c
optee_os/core/kernel/tee_ta_manager.c
optee_os/core/kernel/tee_time.c
optee_os/core/kernel/wait_queue.c
optee_os/core/lib/libtomcrypt/tomcrypt.c
optee_os/core/mm/tee_mm.c
optee_os/core/tee/entry_std.c
optee_os/core/tee/tee_cryp_utl.c
optee_os/core/tee/tee_fs_key_manager.c
optee_os/core/tee/tee_pobj.c
optee_os/core/tee/tee_svc.c
optee_os/core/tee/tee_svc_cryp.c
optee_os/core/tee/tee_time_generic.c
optee_os/core/tee/uuid.c
optee_os/lib/libmbedtls/core/aes.c
optee_os/lib/libmbedtls/core/aes_cbc.c
optee_os/lib/libmbedtls/core/aes_ctr.c
optee_os/lib/libmbedtls/core/aes_ecb.c
optee_os/lib/libmbedtls/core/bignum.c
optee_os/lib/libmbedtls/core/cmac.c
optee_os/lib/libmbedtls/core/des3_cbc.c
optee_os/lib/libmbedtls/core/des3_ecb.c
optee_os/lib/libmbedtls/core/des_cbc.c
optee_os/lib/libmbedtls/core/des_ecb.c
optee_os/lib/libmbedtls/core/dh.c
optee_os/lib/libmbedtls/core/ecc.c
optee_os/lib/libmbedtls/core/hash.c
optee_os/lib/libmbedtls/core/hmac.c
optee_os/lib/libmbedtls/core/mbed_helpers.c
optee_os/lib/libmbedtls/core/rsa.c
optee_os/lib/libmbedtls/core/sm2-dsa.c
optee_os/lib/libmbedtls/core/sm2-kep.c
optee_os/lib/libmbedtls/core/sm2-pke.c
optee_os/lib/libmbedtls/core/tomcrypt.c
optee_os/lib/libutee/tee_api.c
optee_os/lib/libutee/tee_api_arith_mpi.c
optee_os/lib/libutee/tee_api_objects.c
optee_os/lib/libutee/tee_api_operations.c
optee_os/lib/libutee/tee_api_panic.c
optee_os/lib/libutee/tee_system_pta.c
optee_os/lib/libutee/user_ta_entry.c
optee_os/lib/libutils/ext/consttime_memcmp.c
optee_os/lib/libutils/ext/memzero_explicit.c
optee_os/lib/libutils/ext/snprintk.c
optee_os/lib/libutils/ext/trace.c)
if(NOT CONFIG_OPTEE_COMPAT_MITEE_FS)
list(
APPEND
CSRCS
optee_os/core/kernel/huk_subkey.c
optee_os/core/tee/fs_dirfile.c
optee_os/core/tee/fs_htree.c
optee_os/core/tee/tee_fs_rpc.c
optee_os/core/tee/tee_obj.c
optee_os/core/tee/tee_ree_fs.c
optee_os/core/tee/tee_svc_storage.c)
endif()
if(CONFIG_ENABLE_CRYPTO_SM3)
list(APPEND CFLAGS -DCFG_CRYPTO_SM3)
list(APPEND CSRCS optee_os/core/crypto/sm3.c
optee_os/core/crypto/sm3-hash.c optee_os/core/crypto/sm3-hmac.c)
endif()
if(CONFIG_OPTEE_RPMB_FS)
list(APPEND CFLAGS -DCFG_RPMB_FS -DCFG_RPMB_FS_DEV_ID=0
-DCFG_RPMB_FS_RD_ENTRIES=1 -DCFG_RPMB_FS_CACHE_ENTRIES=0)
list(APPEND CSRCS optee_os/core/tee/tee_rpmb_fs.c)
if(CONFIG_OPTEE_RPMB_WRITE_KEY)
list(APPEND CFLAGS -DCFG_RPMB_WRITE_KEY)
endif()
if(CONFIG_OPTEE_RPMB_TESTKEY)
list(APPEND CFLAGS -DCFG_RPMB_TESTKEY)
endif()
if(CONFIG_OPTEE_HUK_SUBKEY_COMPAT)
list(APPEND CFLAGS -DCFG_CORE_HUK_SUBKEY_COMPAT
-DCFG_CORE_HUK_SUBKEY_COMPAT_USE_OTP_DIE_ID)
endif()
endif()
set(INCDIR ${NUTTX_APPS_DIR}/crypto/mbedtls/mbedtls/library
${NUTTX_APPS_DIR}/frameworks/security/optee_vela/include)
if(CONFIG_OPTEE_COMPAT_MITEE_FS)
list(APPEND INCDIR
${NUTTX_APPS_DIR}/frameworks/security/optee_vela/include/mitee_compat)
endif()
list(
APPEND
INCDIR
${CMAKE_CURRENT_LIST_DIR}/optee_os/core/include
${CMAKE_CURRENT_LIST_DIR}/optee_os/core/lib/libtomcrypt/include
${CMAKE_CURRENT_LIST_DIR}/optee_os/core/lib/libtomcrypt/src/headers
${CMAKE_CURRENT_LIST_DIR}/optee_os/ldelf/include
${CMAKE_CURRENT_LIST_DIR}/optee_os/lib/libmbedtls/core
${CMAKE_CURRENT_LIST_DIR}/optee_os/lib/libutee/include
${CMAKE_CURRENT_LIST_DIR}/optee_os/lib/libutils/ext/include)
nuttx_add_library(optee_os STATIC)
target_sources(optee_os PRIVATE ${CSRCS})
target_include_directories(optee_os PRIVATE ${INCDIR})
target_compile_options(optee_os PRIVATE ${CFLAGS})
endif()