From: Krzysztof Jackiewicz Date: Thu, 25 Jul 2019 14:28:01 +0000 (+0200) Subject: Use key-manager TA instead of test TA X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftrustzone;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git Use key-manager TA instead of test TA 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 --- diff --git a/packaging/security-tests.spec b/packaging/security-tests.spec index f772719d..e71168b3 100644 --- a/packaging/security-tests.spec +++ b/packaging/security-tests.spec @@ -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` diff --git a/src/libteec-tests/CMakeLists.txt b/src/libteec-tests/CMakeLists.txt index a2e96634..4c8f426a 100644 --- a/src/libteec-tests/CMakeLists.txt +++ b/src/libteec-tests/CMakeLists.txt @@ -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 index 935f0aeb..00000000 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 index 505f746c..00000000 Binary files a/src/libteec-tests/ta-files/simulator/00000000000000000000746374657374 and /dev/null differ diff --git a/src/libteec-tests/test_cases.cpp b/src/libteec-tests/test_cases.cpp index ef0223d6..f8fdfea7 100644 --- a/src/libteec-tests/test_cases.cpp +++ b/src/libteec-tests/test_cases.cpp @@ -23,15 +23,15 @@ #include +#include + #include #include #include #include -#include #include #include #include -#include #include #define DEFINETOSTR(name) case name: return #name @@ -90,118 +90,11 @@ std::string systemInfoErrToString(int err) #undef DEFINETOSTR -template -void toString(std::ostream& stream, T t) -{ - stream << std::hex << std::setw(sizeof(T)*2) << std::setfill('0') << t; -} - -template <> -void toString(std::ostream& stream, unsigned char t) -{ - stream << std::hex << std::setw(2) << std::setfill('0') << static_cast(t); -} - -template -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(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 @@ -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(nullptr); - bool isTeeEnabled = checkIfTeeEnabled(); - if (isTeeEnabled) - { - taPtr.reset(new Ta(taUuid)); - } - auto fun = [&]() { auto contextPtr = std::unique_ptr diff --git a/src/libteec-tests/webapi-test-app/config.xml b/src/libteec-tests/webapi-test-app/config.xml deleted file mode 100644 index 8f584678..00000000 --- a/src/libteec-tests/webapi-test-app/config.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - Test - - - 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 index 92543392..00000000 --- a/src/libteec-tests/webapi-test-app/css/style.css +++ /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 index 9765b1bd..00000000 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 index 647c3f9f..00000000 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 index d8450f02..00000000 --- a/src/libteec-tests/webapi-test-app/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - Tizen Mobile Web Basic Application - - - - - - -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
- - - 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 index 88dd2e63..00000000 --- a/src/libteec-tests/webapi-test-app/js/main.js +++ /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:
Received data does not match input data:
"; - for (var j in data) { - resultText.innerHTML += data[j] + " "; - } - resultText.innerHTML += "
vs. received:
"; - for (var k in result) { - resultText.innerHTML += result[k] + " "; - } - return; - } - } - - var outMsg = "Success:
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:
invokeCommand: " + err.name + ": " + err.message; - } - function commandSuccess(cmd, params) { - globalSession.close(); - resultText.innerHTML = "Success:
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:
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:
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:
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:
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:
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:
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:
openSession: " + err.name + ": " + err.message; - } - - ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError); - }); -};