Use key-manager TA instead of test TA 83/210883/1 trustzone
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 25 Jul 2019 14:28:01 +0000 (16:28 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 25 Jul 2019 14:28:01 +0000 (16:28 +0200)
Precompiled test TA was using outdated libraries that are no longer
present on the images. As a result the TA was not able to start.

Use key-manager TA instead.

Remove test TA.

Remove unused files.

Change-Id: I87fcd147c1ba335ab6fb9f53fa9b85c057e1e800

packaging/security-tests.spec
src/libteec-tests/CMakeLists.txt
src/libteec-tests/ta-files/optee/00000000-0000-0000-0000-746374657374.ta [deleted file]
src/libteec-tests/ta-files/simulator/00000000000000000000746374657374 [deleted file]
src/libteec-tests/test_cases.cpp
src/libteec-tests/webapi-test-app/config.xml [deleted file]
src/libteec-tests/webapi-test-app/css/style.css [deleted file]
src/libteec-tests/webapi-test-app/icon.png [deleted file]
src/libteec-tests/webapi-test-app/images/tizen_32.png [deleted file]
src/libteec-tests/webapi-test-app/index.html [deleted file]
src/libteec-tests/webapi-test-app/js/main.js [deleted file]

index f772719db5750e77b73ad085124247d0972aa463..e71168b30276324f88d8d704230123dd41e3a805 100644 (file)
@@ -32,13 +32,14 @@ BuildRequires: boost-devel
 BuildRequires: pkgconfig(vconf)
 BuildRequires: pkgconfig(libgum) >= 1.0.5
 BuildRequires: pkgconfig(security-privilege-manager)
+BuildRequires: key-manager-ta-devel
 Requires: perf
 Requires: gdb
 Requires: diffutils
+Requires: key-manager-ta
 
 %global ckm_test_dir %{?TZ_SYS_SHARE:%TZ_SYS_SHARE/ckm-test/}%{!?TZ_SYS_SHARE:/usr/share/ckm-test/}
 %global ckm_rw_data_dir %{?TZ_SYS_DATA:%TZ_SYS_DATA/ckm/}%{!?TZ_SYS_DATA:/opt/data/ckm/}
-%global ta_files_dir %{?TZ_SYS_SHARE:%TZ_SYS_SHARE/libteec-tests/ta-files/}%{!?TZ_SYS_SHARE:/usr/share/libteec-tests/ta-files/}
 
 %description
 Security tests repository - for tests that can't be kept together with code.
@@ -63,7 +64,6 @@ cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
         -DCYNARA_DB_DIR=%{_localstatedir}/cynara/db \
         -DAPP_USER="security_test_user" \
         -DCKM_TEST_DIR=%{ckm_test_dir} \
-        -DTA_FILES_DIR=%{ta_files_dir} \
         -DCKM_RW_DATA_DIR=%{ckm_rw_data_dir} \
         -DGLOBAL_APP_DIR=%{TZ_SYS_RW_APP} \
         -DLOCAL_APP_DIR="%{TZ_SYS_HOME}/security_test_user/apps_rw"
@@ -121,7 +121,6 @@ echo "security-tests postinst done ..."
 %{_prefix}/share/yaca-test
 %dir %{_prefix}/share/security-tests-cleanup-test
 %{_prefix}/share/security-tests-cleanup-test/*
-%{ta_files_dir}/*
 
 %postun
 id -u security_test_user 1>/dev/null 2>&1 && gum-utils -o -d --uid=`id -u security_test_user`
index a2e966341be6126d8913f4de1956af05dfa05eb0..4c8f426a1198f1240672de6289cff0cc80641a18 100644 (file)
@@ -61,19 +61,3 @@ INSTALL(TARGETS ${LIBTEEC_TARGET_TEST}
                 WORLD_READ
                 WORLD_EXECUTE
     )
-
-IF(${TARGET_ARCH} STREQUAL "armv7l-linux" OR ${TARGET_ARCH} STREQUAL "aarch64-linux")
-    ADD_DEFINITIONS("-DTEF_BACKEND_OPTEE=1")
-    SET(PROJECT_TA_FILES_DIR
-        ${PROJECT_SOURCE_DIR}/src/libteec-tests/ta-files/optee/
-        )
-ELSE(${TARGET_ARCH} STREQUAL "armv7l-linux" OR ${TARGET_ARCH} STREQUAL "aarch64-linux")
-    SET(PROJECT_TA_FILES_DIR
-        ${PROJECT_SOURCE_DIR}/src/libteec-tests/ta-files/simulator/
-        )
-ENDIF(${TARGET_ARCH} STREQUAL "armv7l-linux" OR ${TARGET_ARCH} STREQUAL "aarch64-linux")
-
-INSTALL(DIRECTORY
-    ${PROJECT_TA_FILES_DIR}
-    DESTINATION ${TA_FILES_DIR}
-)
diff --git a/src/libteec-tests/ta-files/optee/00000000-0000-0000-0000-746374657374.ta b/src/libteec-tests/ta-files/optee/00000000-0000-0000-0000-746374657374.ta
deleted file mode 100644 (file)
index 935f0ae..0000000
Binary files a/src/libteec-tests/ta-files/optee/00000000-0000-0000-0000-746374657374.ta and /dev/null differ
diff --git a/src/libteec-tests/ta-files/simulator/00000000000000000000746374657374 b/src/libteec-tests/ta-files/simulator/00000000000000000000746374657374
deleted file mode 100644 (file)
index 505f746..0000000
Binary files a/src/libteec-tests/ta-files/simulator/00000000000000000000746374657374 and /dev/null differ
index ef0223d6d3fc5a720c58e70509702297c1c9a948..f8fdfea76cc5655dd53705465f3f8dfeaec1cb50 100644 (file)
 
 #include <tee_client_api.h>
 
+#include <km_ta_defines.h>
+
 #include <system_info.h>
 #include <string>
 #include <sstream>
 #include <memory>
-#include <fstream>
 #include <unistd.h>
 #include <iostream>
 #include <iomanip>
-#include <exception>
 #include <grp.h>
 
 #define DEFINETOSTR(name) case name: return #name
@@ -90,118 +90,11 @@ std::string systemInfoErrToString(int err)
 
 #undef DEFINETOSTR
 
-template <typename T>
-void toString(std::ostream& stream, T t)
-{
-    stream << std::hex << std::setw(sizeof(T)*2) << std::setfill('0') << t;
-}
-
-template <>
-void toString<unsigned char>(std::ostream& stream, unsigned char t)
-{
-    stream << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned short>(t);
-}
-
-template <typename T, size_t N>
-void toString(std::ostream& stream, const T (&t)[N])
-{
-    for (size_t i = 0; i < N; i++)
-        toString(stream, t[i]);
-}
-
-std::string uuidToString(const TEEC_UUID& uuid)
-{
-    std::stringstream ss;
-    toString(ss, uuid.timeLow);
-#ifdef TEF_BACKEND_OPTEE
-    // OpTEE use uuid format defined in RFC4122
-    ss << "-";
-    toString(ss, uuid.timeMid);
-    ss << "-";
-    toString(ss, uuid.timeHiAndVersion);
-    ss << "-";
-    toString(ss, uuid.clockSeqAndNode[0]);
-    toString(ss, uuid.clockSeqAndNode[1]);
-    ss << "-";
-    toString(ss, uuid.clockSeqAndNode[2]);
-    toString(ss, uuid.clockSeqAndNode[3]);
-    toString(ss, uuid.clockSeqAndNode[4]);
-    toString(ss, uuid.clockSeqAndNode[5]);
-    toString(ss, uuid.clockSeqAndNode[6]);
-    toString(ss, uuid.clockSeqAndNode[7]);
-    ss << ".ta";
-#else // TEF_BACKEND_OPTEE
-    toString(ss, uuid.timeMid);
-    toString(ss, uuid.timeHiAndVersion);
-    toString(ss, uuid.clockSeqAndNode);
-#endif // TEF_BACKEND_OPTEE
-    return ss.str();
-}
-
 namespace
 {
-    const TEEC_UUID taUuid =
-        { 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x74, 0x63, 0x74, 0x65, 0x73, 0x74} };
+    const TEEC_UUID taUuid = KM_TA_UUID;
 }
 
-class Ta
-{
-public:
-    explicit Ta(const TEEC_UUID& uuid)
-      : m_uuidStr(uuidToString(uuid))
-    {
-        m_path = "/usr/lib/tastore/";
-        RUNNER_ASSERT_MSG(std::ifstream(m_path).good(), "tastore folder not found");
-
-        std::string src_path = TA_FILES_DIR + m_uuidStr;
-        std::string dest_path = m_path + m_uuidStr;
-        RUNNER_ASSERT_MSG(std::ifstream(src_path).good(), "TA file not found in test assets: "
-                               << TA_FILES_DIR + m_uuidStr);
-
-        std::ifstream src(src_path, std::ios::binary);
-        std::ofstream dest(dest_path, std::ios::binary);
-        dest << src.rdbuf();
-
-        RUNNER_ASSERT_MSG(isInstalled(), "Installing test TA failed: " << dest_path);
-        int res = smack_set_label_for_path(dest_path.c_str(), XATTR_NAME_SMACK, 1, "_");
-        RUNNER_ASSERT_MSG(res >= 0, "Failed to set smack label on TA file");
-    }
-
-    ~Ta()
-    {
-        try {
-            std::string rmPath = m_path + m_uuidStr;
-            std::remove(rmPath.c_str());
-
-#ifndef TEF_BACKEND_OPTEE
-            std::string extPath = m_path + m_uuidStr + "-ext/";
-            std::string extPathUuid = extPath + m_uuidStr;
-
-            rmPath = extPathUuid + ".image";
-            std::remove(rmPath.c_str());
-            rmPath = extPathUuid + ".manifest";
-            std::remove(rmPath.c_str());
-            rmPath = extPath;
-            std::remove(rmPath.c_str());
-#endif // TEF_BACKEND_OPTEE
-
-        } catch (std::exception& e) {
-            std::cerr << "Exception thrown in SystemTa destructor: " << e.what() << std::endl;
-        } catch (...) {
-            std::cerr << "Unknown exception thrown in SystemTa destructor" << std::endl;
-        }
-    }
-
-    bool isInstalled() const
-    {
-        return std::ifstream(m_path + m_uuidStr).good();
-    }
-
-protected:
-    std::string m_uuidStr;
-    std::string m_path;
-};
-
 bool checkIfTeeEnabled()
 {
     static bool isChecked;
@@ -227,8 +120,6 @@ RUNNER_TEST_GROUP_INIT(LIBTEEC)
 
 RUNNER_CHILD_TEST(libteec_01_load_TA_as_app)
 {
-    auto taPtr = std::unique_ptr<Ta>(nullptr);
-
     TemporaryTestUser tmpUser("libteec_01_test_user", GUM_USERTYPE_NORMAL);
     tmpUser.create();
 
@@ -239,11 +130,6 @@ RUNNER_CHILD_TEST(libteec_01_load_TA_as_app)
 
     bool isTeeEnabled = checkIfTeeEnabled();
 
-    if (isTeeEnabled)
-    {
-        taPtr.reset(new Ta(taUuid));
-    }
-
     auto fun = [&]()
     {
         auto contextPtr = std::unique_ptr<TEEC_Context, decltype(&TEEC_FinalizeContext)>
@@ -288,15 +174,8 @@ RUNNER_CHILD_TEST(libteec_01_load_TA_as_app)
 
 RUNNER_CHILD_TEST(libteec_02_load_TA_as_system)
 {
-    auto taPtr = std::unique_ptr<Ta>(nullptr);
-
     bool isTeeEnabled = checkIfTeeEnabled();
 
-    if (isTeeEnabled)
-    {
-        taPtr.reset(new Ta(taUuid));
-    }
-
     auto fun = [&]()
     {
         auto contextPtr = std::unique_ptr<TEEC_Context, decltype(&TEEC_FinalizeContext)>
diff --git a/src/libteec-tests/webapi-test-app/config.xml b/src/libteec-tests/webapi-test-app/config.xml
deleted file mode 100644 (file)
index 8f58467..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets" id="http://yourdomain/Test" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="IJt1xdiAhM.Test" package="IJt1xdiAhM" required_version="3.0"/>
-    <content src="index.html"/>
-    <feature name="http://tizen.org/feature/screen.size.all"/>
-    <icon src="icon.png"/>
-    <name>Test</name>
-    <tizen:profile name="mobile"/>
-    <tizen:setting screen-orientation="auto-rotation" context-menu="enable" background-support="disable" encryption="disable" install-location="auto" hwkey-event="enable"/>
-</widget>
diff --git a/src/libteec-tests/webapi-test-app/css/style.css b/src/libteec-tests/webapi-test-app/css/style.css
deleted file mode 100644 (file)
index 9254339..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-html,
-body {
-    width: 100%;
-    height: 100%;
-    margin: 0 auto;
-    padding: 0;
-    background-color: #222222;
-    color: #ffffff;
-}
-.page {
-    width: 100%;
-    height: 100%;
-    display: table;
-}
-.contents {
-    display: table-row;
-    vertical-align: middle;
-    text-align: center;
-    -webkit-tap-highlight-color: transparent;
-}
-#content-text {
-    font-weight: bold;
-    font-size: 3em;
-}
\ No newline at end of file
diff --git a/src/libteec-tests/webapi-test-app/icon.png b/src/libteec-tests/webapi-test-app/icon.png
deleted file mode 100644 (file)
index 9765b1b..0000000
Binary files a/src/libteec-tests/webapi-test-app/icon.png and /dev/null differ
diff --git a/src/libteec-tests/webapi-test-app/images/tizen_32.png b/src/libteec-tests/webapi-test-app/images/tizen_32.png
deleted file mode 100644 (file)
index 647c3f9..0000000
Binary files a/src/libteec-tests/webapi-test-app/images/tizen_32.png and /dev/null differ
diff --git a/src/libteec-tests/webapi-test-app/index.html b/src/libteec-tests/webapi-test-app/index.html
deleted file mode 100644 (file)
index d8450f0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
-    <meta name="description" content="Tizen Mobile Web Basic Template" />
-
-    <title>Tizen Mobile Web Basic Application</title>
-
-    <link rel="stylesheet" type="text/css" href="css/style.css" />
-    <script src="js/main.js"></script>
-</head>
-
-<body>
-    <div id="main" class="page">
-        <div id="test1" class="contents">
-            <button type="button" id="test1-button">Launch value test</button><br>
-            <span id="test1-text"></span>
-        </div>
-        <div id="test2" class="contents">
-            <button type="button" id="test2-button">Launch memref test</button><br>
-            <span id="test2-text"></span>
-        </div>
-        <div id="test3" class="contents">
-            <button type="button" id="test3-button">Launch tmpref test</button><br>
-            <span id="test3-text"></span>
-        </div>
-        <div id="test4" class="contents">
-            <button type="button" id="test4-button">Launch partial test</button><br>
-            <span id="test4-text"></span>
-        </div>
-    </div>
-</body>
-
-</html>
diff --git a/src/libteec-tests/webapi-test-app/js/main.js b/src/libteec-tests/webapi-test-app/js/main.js
deleted file mode 100644 (file)
index 88dd2e6..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-
-window.onload = function() {
-    // add eventListener for tizenhwkey
-    document.addEventListener('tizenhwkey', function(e) {
-        if (e.keyName === "back") {
-            try {
-                tizen.application.getCurrentApplication().exit();
-            } catch (ignore) {}
-        }
-    });
-
-    // Sample code
-    var mainPage = document.querySelector('#main');
-    var test1 = mainPage.querySelector('#test1-button');
-    var test2 = mainPage.querySelector('#test2-button');
-    var test3 = mainPage.querySelector('#test3-button');
-    var test4 = mainPage.querySelector('#test4-button');
-
-    var testData = function (data, result, resultText) {
-        for (var i in result) {
-            if (data[i] !== result[i]) {
-                resultText.innerHTML = "Failure:<br>Received data does not match input data:<br>";
-                for (var j in data) {
-                    resultText.innerHTML += data[j] + " ";
-                }
-                resultText.innerHTML += "<br>vs. received:<br>";
-                for (var k in result) {
-                    resultText.innerHTML += result[k] + " ";
-                }
-                return;
-            }
-        }
-
-        var outMsg = "Success:<br>Received data: ";
-        for (i in result) {
-            outMsg += result[i] + " ";
-        }
-        resultText.innerHTML = outMsg;
-    };
-
-    test1.addEventListener("click", function() {
-        var resultText = document.querySelector('#test1-text');
-        var globalSession = null;
-
-        function commandError(err) {
-            console.log("Failed command");
-            globalSession.close();
-            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
-        }
-        function commandSuccess(cmd, params) {
-            globalSession.close();
-            resultText.innerHTML = "Success:<br>Incremented param to " + params[0].a;
-        }
-
-        function sessionSuccess(session) {
-            //session opened, now we can communicate with TA
-            globalSession = session;
-
-            var p1 = new tizen.TeecValue(3, 2, 'INOUT');
-            session.invokeCommand(1, [p1], commandSuccess, commandError);
-        }
-        function sessionError(err) {
-            console.log("openSession: " + err.name + ": " + err.message);
-            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
-        }
-
-        var ctx = tizen.libteec.getContext();
-        ctx.openSession("00000000-0000-0000-0000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
-    });
-
-    test2.addEventListener("click", function() {
-        var resultText = document.querySelector('#test2-text');
-        var ctx = tizen.libteec.getContext();
-        var globalSession = null;
-        var data = [1,2,3,4,45,6,7,7,7];
-
-        function commandError(err) {
-            console.log("Failed command");
-            globalSession.close();
-            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
-        }
-        function commandSuccess(cmd, params) {
-            globalSession.close();
-
-            var result = [0,0,0,0,0,0,0,0,0];
-            params[1].shm.getData(result, 0);
-            testData(data, result, resultText);
-        }
-
-        function sessionSuccess(session) {
-            //session opened, now can communicate with TA
-            globalSession = session;
-
-            var emptyData = [0,0,0,0, 0,0,0,0,0];
-            var shmem1 = ctx.allocateSharedMemory(data.length, 'INPUT');
-            shmem1.setData(data, 0);
-            var shmem2 = ctx.allocateSharedMemory(emptyData.length, 'OUTPUT');
-            shmem2.setData(emptyData);
-
-            var p1 = new tizen.TeecRegisteredMemory(shmem1, 0, data.length, 'WHOLE');
-            var p2 = new tizen.TeecRegisteredMemory(shmem2, 0, emptyData.length, 'WHOLE');
-            session.invokeCommand(2, [p1, p2], commandSuccess, commandError);
-        }
-        function sessionError(err) {
-            console.log("openSession: " + err.name + ": " + err.message);
-            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
-        }
-
-        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
-    });
-
-    test3.addEventListener("click", function() {
-        var resultText = document.querySelector('#test3-text');
-        var ctx = tizen.libteec.getContext();
-        var globalSession = null;
-        var data = [7,6,5,4,3,21,1,2,3];
-
-        function commandError(err) {
-            console.log("Failed command");
-            globalSession.close();
-            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
-        }
-        function commandSuccess(cmd, params) {
-            globalSession.close();
-            testData(data, params[1].mem, resultText);
-        }
-
-        function sessionSuccess(session) {
-            //session opened, now can communicate with TA
-            globalSession = session;
-
-            var emptyData = [0,0,0,0,0,0,0,0,0];
-            var p1 = new tizen.TeecTempMemory(data, 'INPUT');
-            var p2 = new tizen.TeecTempMemory(emptyData, 'OUTPUT');
-            session.invokeCommand(3, [p1, p2], commandSuccess, commandError);
-        }
-        function sessionError(err) {
-            console.log("openSession: " + err.name + ": " + err.message);
-            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
-        }
-
-        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
-    });
-
-    test4.addEventListener("click", function() {
-        var resultText = document.querySelector('#test4-text');
-        var ctx = tizen.libteec.getContext();
-        var globalSession = null;
-        var data = [0,1,2,3,4,35,2,1,0];
-
-        function commandError(err) {
-            console.log("Failed command");
-            globalSession.close();
-            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
-        }
-        function commandSuccess(cmd, params) {
-            globalSession.close();
-            var result = [0,0,0,0,0,0,0,0,0];
-            params[1].shm.getData(result, 0);
-            testData(data, result, resultText);
-        }
-
-        function sessionSuccess(session) {
-            //session opened, now can communicate with TA
-            globalSession = session;
-
-            var emptyData = [0,0,0,0,0,0,0,0,0];
-            var shmem = ctx.allocateSharedMemory(data.length * 2, 'INOUT');
-            shmem.setData(data, 0);
-            shmem.setData(emptyData, data.length);
-
-            var p1 = new tizen.TeecRegisteredMemory(shmem, 0, data.length, 'PARTIAL_INPUT');
-            var p2 = new tizen.TeecRegisteredMemory(shmem, data.length, data.length, 'PARTIAL_OUTPUT');
-            session.invokeCommand(4, [p1, p2], commandSuccess, commandError);
-        }
-        function sessionError(err) {
-            console.log("openSession: " + err.name + ": " + err.message);
-            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
-        }
-
-        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
-    });
-};