From 8e8ee9ba7f9ff47ff3561e8991d9a4720066ec1c Mon Sep 17 00:00:00 2001 From: yang1946 Date: Sat, 13 Jan 2024 16:49:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B8=BF=E8=92=99=E5=86=85=E6=A0=B8tdd?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang1946 --- test/unittest/add_cert_path_test.cpp | 16 +++++++++++++++- test/unittest/code_sign_utils_test.cpp | 18 ++++++++++++++++++ test/unittest/enable_verity_test.cpp | 19 +++++++++++++++++-- test/unittest/sign_and_enforce_test.cpp | 23 ++++++++++++++++++++++- 4 files changed, 72 insertions(+), 4 deletions(-) diff --git a/test/unittest/add_cert_path_test.cpp b/test/unittest/add_cert_path_test.cpp index f2ee68b..b69a1ae 100644 --- a/test/unittest/add_cert_path_test.cpp +++ b/test/unittest/add_cert_path_test.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include namespace OHOS { @@ -48,11 +49,18 @@ static const string DEV_NAME = "/dev/code_sign"; static const string TEST_SUBJECT = "OpenHarmony Application Release"; static const string TEST_ISSUER = "OpenHarmony Application CA"; +static bool g_isKernelLinux = false; class AddCertPathTest : public testing::Test { public: AddCertPathTest() {}; virtual ~AddCertPathTest() {}; - static void SetUpTestCase() {}; + static void SetUpTestCase() + { + struct utsname uts; + if (uname(&uts) == 0 && strcmp(uts.sysname, "Linux") == 0) { + g_isKernelLinux = true; + } + }; static void TearDownTestCase() {}; void SetUp() {}; void TearDown() {}; @@ -96,6 +104,9 @@ HWTEST_F(AddCertPathTest, AddCertPathTest_0001, TestSize.Level0) */ HWTEST_F(AddCertPathTest, AddCertPathTest_0002, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } int ret = CallIoctl(TEST_SUBJECT.c_str(), TEST_ISSUER.c_str(), GREATER_THAN_MAX_CERT_CHAIN, CERT_PATH_TYPE); EXPECT_NE(ret, 0); } @@ -108,6 +119,9 @@ HWTEST_F(AddCertPathTest, AddCertPathTest_0002, TestSize.Level0) */ HWTEST_F(AddCertPathTest, AddCertPathTest_0003, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } int ret = CallIoctl(TEST_SUBJECT.c_str(), TEST_ISSUER.c_str(), LESS_THAN_MIN_CERT_CHAIN, CERT_PATH_TYPE); EXPECT_NE(ret, 0); } diff --git a/test/unittest/code_sign_utils_test.cpp b/test/unittest/code_sign_utils_test.cpp index cd54b24..43d5f11 100644 --- a/test/unittest/code_sign_utils_test.cpp +++ b/test/unittest/code_sign_utils_test.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "code_sign_utils.h" @@ -115,6 +116,7 @@ static const EntryMap g_hapSigNotExist = { }; static bool g_isPermissive = false; +static bool g_isKernelLinux = false; class CodeSignUtilsTest : public testing::Test { public: @@ -128,6 +130,10 @@ public: if (g_isPermissive) { SaveStringToFile(XPM_DEBUG_FS_MODE_PATH, ENFORCE_MODE); } + struct utsname uts; + if (uname(&uts) == 0 && strcmp(uts.sysname, "Linux") == 0) { + g_isKernelLinux = true; + } }; static void TearDownTestCase() { @@ -225,6 +231,9 @@ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0004, TestSize.Level0) */ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0005, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } int ret = CodeSignUtils::EnforceCodeSignForApp( g_wrongHapWithMultiLibRetFail, g_sigWithMultiLibRetSucPath); EXPECT_EQ(ret, CS_ERR_ENABLE); @@ -238,6 +247,9 @@ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0005, TestSize.Level0) */ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0006, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } size_t num = g_HapWithoutLibSigPkcs7ErrorPath.size(); int ret; // wrong hap signature @@ -262,6 +274,9 @@ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0006, TestSize.Level0) */ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0007, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } ByteBuffer buffer; bool flag = ReadSignatureFromFile(g_filesigEnablePath, buffer); EXPECT_EQ(flag, true); @@ -277,6 +292,9 @@ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0007, TestSize.Level0) */ HWTEST_F(CodeSignUtilsTest, CodeSignUtilsTest_0008, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } size_t num = g_fileSigEnableFailPath.size(); int ret; for (size_t i = 0; i < num; i++) { diff --git a/test/unittest/enable_verity_test.cpp b/test/unittest/enable_verity_test.cpp index 52bcf15..dbde5fa 100644 --- a/test/unittest/enable_verity_test.cpp +++ b/test/unittest/enable_verity_test.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +67,7 @@ const std::string DROP_CACHE_PROC_PATH = "/proc/sys/vm/drop_caches"; const std::string DROP_ALL_CACHE_LEVEL = "3"; static bool g_isXpmOn; +static bool g_isKernelLinux = false; class EnableVerityTest : public testing::Test { public: @@ -82,6 +84,10 @@ public: std::string realPath; g_isXpmOn = OHOS::PathToRealPath(XPM_DEBUG_FS_MODE_PATH, realPath); } + struct utsname uts; + if (uname(&uts) == 0 && strcmp(uts.sysname, "Linux") == 0) { + g_isKernelLinux = true; + } }; static void TearDownTestCase() { @@ -387,6 +393,9 @@ HWTEST_F(EnableVerityTest, EnableVerityTest_0001, TestSize.Level0) */ HWTEST_F(EnableVerityTest, EnableVerityTest_0002, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } std::string filePath = TEST_DEFAULT_FILE; struct code_sign_enable_arg arg = {}; @@ -463,6 +472,9 @@ HWTEST_F(EnableVerityTest, EnableVerityTest_0004, TestSize.Level0) */ HWTEST_F(EnableVerityTest, EnableVerityTest_0005, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } std::string filePath = TEST_DEFAULT_FILE; struct code_sign_enable_arg arg = {}; ByteBuffer signature; @@ -491,6 +503,9 @@ HWTEST_F(EnableVerityTest, EnableVerityTest_0005, TestSize.Level0) */ HWTEST_F(EnableVerityTest, EnableVerityTest_0006, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } std::string filePath = TEST_DEFAULT_FILE; struct code_sign_enable_arg arg = {}; ByteBuffer signature; @@ -563,7 +578,7 @@ HWTEST_F(EnableVerityTest, EnableVerityTest_0008, TestSize.Level0) */ HWTEST_F(EnableVerityTest, EnableVerityTest_0009, TestSize.Level0) { - if (!g_isXpmOn) { + if (!g_isXpmOn || !g_isKernelLinux) { return; } std::string filePath = TEST_DEFAULT_FILE; @@ -631,7 +646,7 @@ HWTEST_F(EnableVerityTest, EnableVerityTest_0010, TestSize.Level0) */ HWTEST_F(EnableVerityTest, EnableVerityTest_0011, TestSize.Level0) { - if (!g_isXpmOn) { + if (!g_isXpmOn || !g_isKernelLinux) { return; } std::string filePath = TEST_FILES_DIR + "elf/elf"; diff --git a/test/unittest/sign_and_enforce_test.cpp b/test/unittest/sign_and_enforce_test.cpp index aa28d78..207dd19 100644 --- a/test/unittest/sign_and_enforce_test.cpp +++ b/test/unittest/sign_and_enforce_test.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "access_token_setter.h" #include "byte_buffer.h" #include "code_sign_utils.h" @@ -44,6 +45,8 @@ static const std::string FAKE_CONTENT = "FAKE"; static const int MAX_TEST_BUF_LEN = 1024; +static bool g_isKernelLinux = false; + static void ModifySignatureFormat(ByteBuffer &pkcs7Data) { uint8_t *data = pkcs7Data.GetBuffer(); @@ -145,7 +148,13 @@ class SignAndEnforceTest : public testing::Test { public: SignAndEnforceTest() {}; virtual ~SignAndEnforceTest() {}; - static void SetUpTestCase() {}; + static void SetUpTestCase() + { + struct utsname uts; + if (uname(&uts) == 0 && strcmp(uts.sysname, "Linux") == 0) { + g_isKernelLinux = true; + } + }; static void TearDownTestCase() {}; void SetUp() {}; void TearDown() {}; @@ -174,6 +183,9 @@ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0001, TestSize.Level0) */ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0002, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } ByteBuffer sig; InvokeLocalCodeSign(DEMO_AN_PATH, sig); int32_t ret = CodeSignUtils::EnforceCodeSignForFile(DEMO_TAMPER_AN_PATH, sig); @@ -188,6 +200,9 @@ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0002, TestSize.Level0) */ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0003, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } ByteBuffer sig; InvokeLocalCodeSign(DEMO_AN_PATH, sig); ModifySignatureFormat(sig); @@ -203,6 +218,9 @@ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0003, TestSize.Level0) */ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0004, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } ByteBuffer sig; InvokeLocalCodeSign(DEMO_AN_PATH, sig);; ByteBuffer wrongSig; @@ -219,6 +237,9 @@ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0004, TestSize.Level0) */ HWTEST_F(SignAndEnforceTest, SignAndEnforceTest_0005, TestSize.Level0) { + if (!g_isKernelLinux) { + return; + } ByteBuffer sig; InvokeLocalCodeSign(DEMO_AN_PATH, sig); ByteBuffer wrongSig; -- Gitee