CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT("key-manager-ta")
-SET(TARGET_KEY_MANAGER_TA_SERIALIZATION km_serialization)
-SET(TARGET_KEY_MANAGER_TA 00000000-0000-0000-0000-666666555555)
-
SET(KEY_MANAGER_TA_ROOT_PATH ${PROJECT_SOURCE_DIR})
SET(KEY_MANAGER_TA_PATH ${KEY_MANAGER_TA_ROOT_PATH}/ta)
SET(KEY_MANAGER_TA_SERIALIZATION_PATH ${KEY_MANAGER_TA_ROOT_PATH}/serialization)
-############# TA #############
-
-SET(KEY_MANAGER_TA_SOURCES
- ${KEY_MANAGER_TA_PATH}/src/cmd_exec.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_asymmetric.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_auth.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_derive.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_digest.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_padding.c
- ${KEY_MANAGER_TA_PATH}/src/crypto_symmetric.c
- ${KEY_MANAGER_TA_PATH}/src/internal.c
- ${KEY_MANAGER_TA_PATH}/src/log.c
- ${KEY_MANAGER_TA_PATH}/src/km_ta.c
- ${KEY_MANAGER_TA_SERIALIZATION_PATH}/src/km_serialization.c
- )
-
-SET(KEY_MANAGER_TA_HEADERS
- ${KEY_MANAGER_TA_PATH}/include/km_ta_defines.h
- )
-
-IF(${TEF_BUILD_TYPE} MATCHES "optee")
- SET(MAKE_DEFINES TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} TEF_BUILD_TYPE=${TEF_BUILD_TYPE} TEF_BUILD_OPTEE=1)
-
- IF(${CMAKE_BUILD_TYPE} MATCHES "DEBUG")
- SET(MAKE_DEFINES ${MAKE_DEFINES} DEBUG=1)
- ENDIF(${CMAKE_BUILD_TYPE} MATCHES "DEBUG")
-
- ADD_CUSTOM_TARGET(build_${TARGET_KEY_MANAGER_TA} ALL
- COMMAND ${CMAKE_MAKE_PROGRAM} ${MAKE_DEFINES}
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- COMMENT "Building TA from OpTEE Makefile")
-
- ADD_EXECUTABLE(${TARGET_KEY_MANAGER_TA} IMPORTED)
- SET_PROPERTY(TARGET ${TARGET_KEY_MANAGER_TA}
- APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
- SET_TARGET_PROPERTIES(${TARGET_KEY_MANAGER_TA} PROPERTIES
- IMPORTED_LOCATION_NOCONFIG "${CMAKE_SOURCE_DIR}/${TA_NAME}")
- ADD_DEPENDENCIES(${TARGET_KEY_MANAGER_TA} build_${TARGET_KEY_MANAGER_TA})
-
- INSTALL(FILES ${CMAKE_SOURCE_DIR}/${TA_NAME} DESTINATION ${TASTORE_DIR})
-ELSE(${TEF_BUILD_TYPE} MATCHES "optee")
- INCLUDE(FindPkgConfig)
-
- PKG_CHECK_MODULES(KEY_MANAGER_TA_DEPS REQUIRED
- tef-simulator-devkit
- )
-
- INCLUDE(TEFSimulatorDevkit)
-
- IF(${CMAKE_BUILD_TYPE} MATCHES "DEBUG")
- ADD_DEFINITIONS("-DDEBUG")
- ENDIF(${CMAKE_BUILD_TYPE} MATCHES "DEBUG")
-
- ADD_DEFINITIONS("-DTEF_BUILD_SIMULATOR")
-
- ADD_EXECUTABLE(${TARGET_KEY_MANAGER_TA}
- ${KEY_MANAGER_TA_SOURCES}
- )
-
- INCLUDE_DIRECTORIES(
- ${KEY_MANAGER_TA_PATH}/include
- ${KEY_MANAGER_TA_SERIALIZATION_PATH}/include
- )
-
- # TEEStub is built in C++, so we must force linking using C++ linker
- SET_TARGET_PROPERTIES(${TARGET_KEY_MANAGER_TA} PROPERTIES
- LINKER_LANGUAGE "CXX"
- )
-
- TARGET_LINK_LIBRARIES(${TARGET_KEY_MANAGER_TA}
- ${KEY_MANAGER_TA_DEPS_LIBRARIES}
- )
-
- TEF_GENERATE_TA_IMAGE(${TARGET_KEY_MANAGER_TA} ${KEY_MANAGER_TA_PATH}/km_ta.xml KEY_MANAGER_TA_IMAGE)
-
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${KEY_MANAGER_TA_IMAGE} DESTINATION ${TASTORE_DIR})
-ENDIF(${TEF_BUILD_TYPE} MATCHES "optee")
-
-INSTALL(FILES ${KEY_MANAGER_TA_HEADERS} DESTINATION ${INCLUDE_DIR})
-
-############# SERIALIZATION #############
-
-SET(KEY_MANAGER_TA_SERIALIZATION_SOURCES
- ${KEY_MANAGER_TA_SERIALIZATION_PATH}/src/km_serialization.c
- ${KEY_MANAGER_TA_PATH}/src/log.c
- )
-
-SET(KEY_MANAGER_TA_SERIALIZATION_HEADERS
- ${KEY_MANAGER_TA_SERIALIZATION_PATH}/include/km_serialization.h
- )
-
-ADD_LIBRARY(${TARGET_KEY_MANAGER_TA_SERIALIZATION} SHARED
- ${KEY_MANAGER_TA_SERIALIZATION_SOURCES}
- )
-
INCLUDE_DIRECTORIES(
- ${KEY_MANAGER_TA_SERIALIZATION_PATH}/include
${KEY_MANAGER_TA_PATH}/include
+ ${KEY_MANAGER_TA_SERIALIZATION_PATH}/include
)
-INSTALL(TARGETS ${TARGET_KEY_MANAGER_TA_SERIALIZATION} DESTINATION ${LIB_DIR})
-INSTALL(FILES ${KEY_MANAGER_TA_SERIALIZATION_HEADERS} DESTINATION ${INCLUDE_DIR})
+ADD_SUBDIRECTORY(ta)
+ADD_SUBDIRECTORY(serialization)
+++ /dev/null
-CFG_TEE_TA_LOG_LEVEL ?= 4
-
-CFLAGS += -DCFG_TEE_TA_LOG_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)
-CFLAGS32 := $(patsubst -march=%, , $(CFLAGS)) -fno-exceptions
-CFLAGS64 := $(CFLAGS32)
-CFLAGS := $(CFLAGS64)
-
-# The UUID for the Trusted Application
-BINARY = 00000000-0000-0000-0000-666666555555
-
-libdirs += $(shell gcc -print-search-dirs | grep "install" | sed 's/install: //')
-libnames += gcc_eh
-
-include $(TA_DEV_KIT_DIR)/mk/ta_dev_kit.mk
-%if %{_target_cpu} == "armv7l" || %{_target_cpu} == "aarch64"
-%define tef_dependency optee-os-ta
-%define tef_build_type optee
-%define tef_dev_kit_dir /opt/optee/export-ta_arm%{__isa_bits}
-%define ta_name 00000000-0000-0000-0000-666666555555.ta
-%else
-%define tef_dependency tef-simulator-devkit
-%define tef_build_type simulator
-%define ta_name 00000000000000000000666666555555
-%endif
-
%define lib_dir %{?TZ_SYS_LIB:%TZ_SYS_LIB}%{!?TZ_SYS_LIB:%_libdir}
%define include_dir %{?TZ_SYS_INCLUDE:%TZ_SYS_INCLUDE}%{!?TZ_SYS_INCLUDE:%_includedir}
-%define tastore_dir %{lib_dir}/tastore
+
+%define ta_name %{unified_ta_devkit_get_ta_name 00000000000000000000666666555555}
Name: key-manager-ta
Summary: Central Key Manager Trusted Application
Provides: %{name}
BuildRequires: cmake
-BuildRequires: %{tef_dependency}
-BuildRequires: python
-BuildRequires: openssl
+BuildRequires: unified-ta-devkit
%description
Key Manager Trusted Application working in the ARMĀ® TrustZoneĀ® environment.
%description -n %{name}-serialization-devel
Development package for key-manager's Trusted Application serialization library.
-
-
%prep
%setup -q
cp -a %{SOURCE1} .
cp -a %{SOURCE2} .
%build
+%{unified_ta_devkit_export}
%ifarch %{arm} aarch64
%{?asan:%gcc_unforce_options}
%endif
cd build
%cmake .. \
-DCMAKE_BUILD_TYPE=%{?build_type:%build_type}%{!?build_type:RELEASE} \
- -DTEF_BUILD_TYPE=%{tef_build_type} \
- -DTA_DEV_KIT_DIR=%{tef_dev_kit_dir} \
- -DTA_NAME=%{ta_name} \
- -DTASTORE_DIR=%{tastore_dir} \
+ -DTASTORE_DIR=%{_tastoredir} \
-DINCLUDE_DIR=%{include_dir} \
- -DLIB_DIR=%{lib_dir}
+ -DLIB_DIR=%{lib_dir} \
+ -DTA_NAME=%{ta_name}
make %{?jobs:-j%jobs}
%install
%make_install
%clean
-rm -rf %{buildroot}
%post
systemctl restart central-key-manager.service
%files -n %{name}
%license LICENSE
%manifest %{name}.manifest
-%{tastore_dir}/%{ta_name}
+%{_tastoredir}/%{ta_name}
--- /dev/null
+# Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# @file
+# @author Lukasz Kostyra (l.kostyra@samsung.com)
+# @brief CMakeLists for key-manager TA
+#
+
+SET(TARGET_KEY_MANAGER_TA_SERIALIZATION km_serialization)
+
+SET(KEY_MANAGER_TA_SERIALIZATION_SOURCES
+ ${KEY_MANAGER_TA_SERIALIZATION_PATH}/src/km_serialization.c
+ ${KEY_MANAGER_TA_PATH}/src/log.c
+ )
+
+SET(KEY_MANAGER_TA_SERIALIZATION_HEADERS
+ ${KEY_MANAGER_TA_SERIALIZATION_PATH}/include/km_serialization.h
+ )
+
+ADD_LIBRARY(${TARGET_KEY_MANAGER_TA_SERIALIZATION} SHARED
+ ${KEY_MANAGER_TA_SERIALIZATION_SOURCES}
+ )
+
+INSTALL(TARGETS ${TARGET_KEY_MANAGER_TA_SERIALIZATION} DESTINATION ${LIB_DIR})
+INSTALL(FILES ${KEY_MANAGER_TA_SERIALIZATION_HEADERS} DESTINATION ${INCLUDE_DIR})
+++ /dev/null
-srcs-y += km_serialization.c
+++ /dev/null
-global-incdirs-y += include
-subdirs-y += src
+++ /dev/null
-subdirs-y += ta
-subdirs-y += serialization
--- /dev/null
+# Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# @file
+# @author Lukasz Kostyra (l.kostyra@samsung.com)
+# @brief CMakeLists for key-manager TA
+#
+
+############# Entry defines #############
+
+SET(TARGET_KEY_MANAGER_TA 00000000-0000-0000-0000-666666555555.elf)
+
+############# TA #############
+
+SET(KEY_MANAGER_TA_SOURCES
+ ${KEY_MANAGER_TA_PATH}/src/cmd_exec.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_asymmetric.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_auth.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_derive.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_digest.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_padding.c
+ ${KEY_MANAGER_TA_PATH}/src/crypto_symmetric.c
+ ${KEY_MANAGER_TA_PATH}/src/internal.c
+ ${KEY_MANAGER_TA_PATH}/src/log.c
+ ${KEY_MANAGER_TA_PATH}/src/km_ta.c
+ ${KEY_MANAGER_TA_SERIALIZATION_PATH}/src/km_serialization.c
+ )
+
+SET(KEY_MANAGER_TA_HEADERS
+ ${KEY_MANAGER_TA_PATH}/include/km_ta_defines.h
+ )
+
+INCLUDE(FindPkgConfig)
+
+PKG_CHECK_MODULES(KEY_MANAGER_TA_DEPS REQUIRED
+ unified-ta-devkit
+ )
+
+INCLUDE(UnifiedTADevkit)
+
+ADD_EXECUTABLE(${TARGET_KEY_MANAGER_TA}
+ ${KEY_MANAGER_TA_SOURCES}
+ )
+
+TARGET_LINK_LIBRARIES(${TARGET_KEY_MANAGER_TA}
+ ${KEY_MANAGER_TA_DEPS_LIBRARIES}
+ ${KEY_MANAGER_TA_DEPS_STATIC_LIBRARIES}
+ )
+
+GENERATE_TA_IMAGE(SIGNED_TA ${TARGET_KEY_MANAGER_TA} ${KEY_MANAGER_TA_PATH}/km_ta.xml ${TA_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TA_NAME} DESTINATION ${TASTORE_DIR})
+INSTALL(FILES ${KEY_MANAGER_TA_HEADERS} DESTINATION ${INCLUDE_DIR})
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://www.samsungdforum.com/ns/packages" >
+<manifest xmlns="http://www.samsungdforum.com/ns/packages">
<properties>
<!-- Trusted Application Configuration Properties GPD TEE Internal API Specification v1.0 -->
<general
- appID="00000000000000000000666666555555"
+ appID="00000000-0000-0000-0000-666666555555"
singleInstance="true"
multiSession="true"
instanceKeepAlive="false"
stackSize="4096"
- dataSize="4096" />
+ dataSize="4096"/>
<!-- Extended TEE specific -->
<extension
type="application"
zone="internal"
sdkVersion="2.0"
- launchMode="debug" />
+ launchMode="debug"/>
</properties>
<!-- Access Control Policy -->
<policy>
- <privilege name = "key-manager-ta" />
+ <privilege name="platform"/>
<protectionDomain>
- <createDomain name = "keymanagerta" />
- <allowedDomain name = "keymanagerta" />
+ <createDomain name="keymanagerta"/>
+ <allowedDomain name="keymanagerta"/>
</protectionDomain>
<permission>
<uses-permission name="system.permission.CRYPTO" />
</permission>
</policy>
-
- <taEncryption>
- <model>
- <modelName value="Debug"/>
- <plainkeydata value="Y2FlZTI3MGJlN2IwZjMyNTM3OWRlZDU0OGQxMGMwZmZiZmJhYTc5NTY5MzY3Y2Q5ZTIzZWNjMmZiY2ExOGViZg0K" />
- </model>
- </taEncryption>
-
<information>
<description> "Key manager Trusted Application." </description>
<author> "Samsung Electronics" </author>
return TEE_SUCCESS;
}
-void TA_CloseSessionEntryPoint(void *sessionContext)
+void TA_CloseSessionEntryPoint(
+#if defined(TEF_BUILD_SIMULATOR)
+ const
+#endif
+ void *sessionContext)
{
S_VAR_NOT_USED(sessionContext);
}
-TEE_Result TA_InvokeCommandEntryPoint(void *sessionContext, uint32_t commandID, uint32_t param_types,
- TEE_Param param[4])
+TEE_Result TA_InvokeCommandEntryPoint(
+#if defined(TEF_BUILD_SIMULATOR)
+ const
+#endif
+ void *sessionContext, uint32_t commandID, uint32_t param_types,
+ TEE_Param param[4])
{
TEE_Result ret = TEE_SUCCESS;
S_VAR_NOT_USED(sessionContext);
+++ /dev/null
-srcs-y += cmd_exec.c
-srcs-y += crypto_asymmetric.c
-srcs-y += crypto_auth.c
-srcs-y += crypto_derive.c
-srcs-y += crypto_digest.c
-srcs-y += crypto_padding.c
-srcs-y += crypto_symmetric.c
-srcs-y += internal.c
-srcs-y += km_ta.c
-srcs-y += log.c
+++ /dev/null
-global-incdirs-y += include
-subdirs-y += src