Use unified-ta-devkit package to build TA 99/176499/3
authorr.tyminski <r.tyminski@partner.samsung.com>
Thu, 19 Apr 2018 15:22:40 +0000 (17:22 +0200)
committerr.tyminski <r.tyminski@partner.samsung.com>
Fri, 13 Jul 2018 09:31:39 +0000 (11:31 +0200)
Change-Id: I91c77e1ad5dc4f53d39f0728c598db47744599c9

12 files changed:
CMakeLists.txt
Makefile [deleted file]
packaging/key-manager-ta.spec
serialization/CMakeLists.txt [new file with mode: 0644]
serialization/src/sub.mk [deleted file]
serialization/sub.mk [deleted file]
sub.mk [deleted file]
ta/CMakeLists.txt [new file with mode: 0644]
ta/km_ta.xml
ta/src/km_ta.c
ta/src/sub.mk [deleted file]
ta/sub.mk [deleted file]

index 0589c8f5eba4d4dbd8a7d8a99335da7e96d965a3..e79265344230bb6eeacb71f681b4a85d4ac16b41 100644 (file)
 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)
diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index f118c48..0000000
--- a/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-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
index 1449ab6ff6300e887d6f11c3ec86083929ed410f..c561ab9338eece33659bc7cd836fffc963bdaf4c 100644 (file)
@@ -1,17 +1,7 @@
-%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
@@ -26,9 +16,7 @@ Source2:    %{name}-serialization.manifest
 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.
@@ -58,14 +46,13 @@ Requires:   %{name}-serialization
 %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
@@ -73,12 +60,10 @@ mkdir -p build
 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
@@ -86,7 +71,6 @@ cd build
 %make_install
 
 %clean
-rm -rf %{buildroot}
 
 %post
 systemctl restart central-key-manager.service
@@ -109,4 +93,4 @@ systemctl restart central-key-manager.service
 %files -n %{name}
 %license LICENSE
 %manifest %{name}.manifest
-%{tastore_dir}/%{ta_name}
+%{_tastoredir}/%{ta_name}
diff --git a/serialization/CMakeLists.txt b/serialization/CMakeLists.txt
new file mode 100644 (file)
index 0000000..915f412
--- /dev/null
@@ -0,0 +1,36 @@
+# 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})
diff --git a/serialization/src/sub.mk b/serialization/src/sub.mk
deleted file mode 100644 (file)
index 8150b9c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-srcs-y += km_serialization.c
diff --git a/serialization/sub.mk b/serialization/sub.mk
deleted file mode 100644 (file)
index 25712c4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-global-incdirs-y += include
-subdirs-y += src
diff --git a/sub.mk b/sub.mk
deleted file mode 100644 (file)
index 4a1c78e..0000000
--- a/sub.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-subdirs-y += ta
-subdirs-y += serialization
diff --git a/ta/CMakeLists.txt b/ta/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bb3a6cb
--- /dev/null
@@ -0,0 +1,63 @@
+# 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})
index e11af665a89c1d344fd2aac3e1011f503c51eea0..ae56a4ef65307c603cb8fff8e47661876dc78ea7 100644 (file)
@@ -1,14 +1,14 @@
 <?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>
index a505796946b3c851f4c746a7bfbed2b1efa85039..252257d64081621c945680b1193c9e9b36b158b9 100644 (file)
@@ -49,13 +49,21 @@ TEE_Result TA_OpenSessionEntryPoint(uint32_t paramTypes, TEE_Param params[4], vo
        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);
diff --git a/ta/src/sub.mk b/ta/src/sub.mk
deleted file mode 100644 (file)
index bd82369..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/ta/sub.mk b/ta/sub.mk
deleted file mode 100644 (file)
index 25712c4..0000000
--- a/ta/sub.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-global-incdirs-y += include
-subdirs-y += src