diff --git a/services/implementation/src/dependency/hichain/hichain_auth_connector.cpp b/services/implementation/src/dependency/hichain/hichain_auth_connector.cpp index 6f0f8a7632184574c4bd5f3e57104628da7e7e78..b1f2fd031fa50bf48225eacb9927bc54fe2f5f2a 100644 --- a/services/implementation/src/dependency/hichain/hichain_auth_connector.cpp +++ b/services/implementation/src/dependency/hichain/hichain_auth_connector.cpp @@ -503,8 +503,8 @@ int32_t HiChainAuthConnector::GetCredential(std::string &localUdid, int32_t osAc int32_t HiChainAuthConnector::ImportCredential(int32_t osAccountId, int32_t peerOsAccountId, std::string deviceId, std::string publicKey) { - LOGI("start, deviceId: %{public}s, peerOsAccountId: %{public}d", - GetAnonyString(deviceId).c_str(), peerOsAccountId); + LOGI("start, deviceId: %{public}s, peerOsAccountId: %{public}s", + GetAnonyString(deviceId).c_str(), GetAnonyInt32(peerOsAccountId).c_str()); JsonObject jsonObj; jsonObj["osAccountId"] = osAccountId; jsonObj["peerOsAccountId"] = peerOsAccountId; diff --git a/services/service/include/permission/standard/permission_manager.h b/services/service/include/permission/standard/permission_manager.h index ca52cd98711b2137aecc93490f003481dddc4f8e..4b6d14c0d25eee8ef4f8677fc316ffb065340502 100644 --- a/services/service/include/permission/standard/permission_manager.h +++ b/services/service/include/permission/standard/permission_manager.h @@ -39,6 +39,9 @@ public: bool CheckProcessNameValidModifyLocalDeviceName(const std::string &processName); bool CheckProcessNameValidModifyRemoteDeviceName(const std::string &processName); bool CheckProcessNameValidPutDeviceProfileInfoList(const std::string &processName); + +private: + bool VerifyAccessTokenByPermissionName(const std::string& permissionName); }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/service/src/permission/standard/permission_manager.cpp b/services/service/src/permission/standard/permission_manager.cpp index 2934aa391d180770d44917541b88515431675283..581d35975b03eb35e65f759d92e6db0e5d5793a3 100644 --- a/services/service/src/permission/standard/permission_manager.cpp +++ b/services/service/src/permission/standard/permission_manager.cpp @@ -97,56 +97,17 @@ constexpr int32_t PUT_DEVICE_PROFILE_INFO_LIST_WHITE_LIST_NUM = std::size(PUT_DE bool PermissionManager::CheckPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_SERVICE_ACCESS_PERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding permissions"); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_SERVICE_ACCESS_PERMISSION); } bool PermissionManager::CheckNewPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckNewPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_SERVICE_ACCESS_NEWPERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding new permissions"); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_SERVICE_ACCESS_NEWPERMISSION); } bool PermissionManager::CheckMonitorPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckMonitorPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_MONITOR_DEVICE_NETWORK_STATE_PERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding permissions."); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_MONITOR_DEVICE_NETWORK_STATE_PERMISSION); } int32_t PermissionManager::GetCallerProcessName(std::string &processName) @@ -333,5 +294,23 @@ bool PermissionManager::CheckProcessNameValidPutDeviceProfileInfoList(const std: } return false; } + +bool PermissionManager::VerifyAccessTokenByPermissionName(const std::string& permissionName) +{ + AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); + if (tokenCaller == 0) { + LOGE("GetCallingTokenID error."); + return false; + } + ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); + if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { + if (AccessTokenKit::VerifyAccessToken(tokenCaller, permissionName) == + PermissionState::PERMISSION_GRANTED) { + return true; + } + } + LOGE("DM service access is denied, please apply for corresponding permissions"); + return false; +} } // namespace DistributedHardware } // namespace OHOS diff --git a/test/commonunittest/UTTest_permission_manager.cpp b/test/commonunittest/UTTest_permission_manager.cpp index 3d1e18fad6d7e7513889f2850060561171357b03..1cb44f5f9992b2db67b330f13b41e4bd826c187d 100644 --- a/test/commonunittest/UTTest_permission_manager.cpp +++ b/test/commonunittest/UTTest_permission_manager.cpp @@ -91,7 +91,7 @@ HWTEST_F(PermissionManagerTest, CheckPermission_001, testing::ext::TestSize.Leve EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10)); EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT)); ret = PermissionManager::GetInstance().CheckPermission(); - ASSERT_TRUE(ret); + ASSERT_FALSE(ret); EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10)); EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP)); @@ -169,7 +169,7 @@ HWTEST_F(PermissionManagerTest, CheckMonitorPermission_001, testing::ext::TestSi EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001)); EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT)); ret = PermissionManager::GetInstance().CheckMonitorPermission(); - ASSERT_TRUE(ret); + ASSERT_FALSE(ret); EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001)); EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE)); diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 03fde27c619e7f57c492d4ff5f60a0fb6d29d879..b405c21c927c710508bc4d276da3ff41f866c576 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -2089,9 +2089,13 @@ ohos_unittest("UTTest_mini_tools_kit") { deps = [ ":device_manager_test_common" ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libnativetoken", + "access_token:libtoken_setproc", "ffrt:libffrt", "googletest:gmock", "googletest:gmock_main", + "selinux_adapter:librestorecon", ] } diff --git a/test/unittest/UTTest_dm_import_auth_code.cpp b/test/unittest/UTTest_dm_import_auth_code.cpp index b0f46a1d8530c4d760eb0b72f76f883d5606ac31..c7ad2bb7cefb5d6b16c55a887677d2ac86678469 100644 --- a/test/unittest/UTTest_dm_import_auth_code.cpp +++ b/test/unittest/UTTest_dm_import_auth_code.cpp @@ -44,7 +44,7 @@ void DMImportAuthCodeTest::SetUp() .dcaps = NULL, .perms = perms, .acls = NULL, - .processName = "com.huawei.msdp.hmringgenerator", + .processName = "CollaborationFwk", .aplStr = "system_core", }; tokenId = GetAccessTokenId(&infoInstance); diff --git a/test/unittest/UTTest_ipc_cmd_parser_service.cpp b/test/unittest/UTTest_ipc_cmd_parser_service.cpp index bdc61c11e5890333ed4de9bdca88d67065cb7adb..719df2374e2b2874720fc3a2343ad8423ed554f6 100644 --- a/test/unittest/UTTest_ipc_cmd_parser_service.cpp +++ b/test/unittest/UTTest_ipc_cmd_parser_service.cpp @@ -1069,7 +1069,7 @@ HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_042, testing::ext::TestSize.Level if (ptr) { ret = ptr(data, reply); } - ASSERT_EQ(ret, ERR_DM_INPUT_PARA_INVALID); + ASSERT_EQ(ret, ERR_DM_NO_PERMISSION); } HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_043, testing::ext::TestSize.Level0) @@ -1169,7 +1169,7 @@ HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_048, testing::ext::TestSize.Level if (ptr) { ret = ptr(data, reply); } - ASSERT_EQ(ret, DM_OK); + ASSERT_EQ(ret, ERR_DM_NO_PERMISSION); } HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_049, testing::ext::TestSize.Level0) @@ -1184,7 +1184,7 @@ HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_049, testing::ext::TestSize.Level if (ptr) { ret = ptr(data, reply); } - ASSERT_EQ(ret, DM_OK); + ASSERT_EQ(ret, ERR_DM_NO_PERMISSION); } HWTEST_F(IpcCmdParserServiceTest, OnIpcCmdFunc_050, testing::ext::TestSize.Level0) diff --git a/test/unittest/UTTest_mini_tools_kit.cpp b/test/unittest/UTTest_mini_tools_kit.cpp index 0254139d2aa0483c8d458e4a3fbce073b90dba6a..bcb21104e7070ded62c4dc9330fb502adc5aae06 100644 --- a/test/unittest/UTTest_mini_tools_kit.cpp +++ b/test/unittest/UTTest_mini_tools_kit.cpp @@ -14,7 +14,11 @@ */ #include "UTTest_mini_tools_kit.h" +#include "accesstoken_kit.h" #include "dm_constants.h" +#include "nativetoken_kit.h" +#include "token_setproc.h" + namespace OHOS { namespace DistributedHardware { @@ -24,7 +28,30 @@ namespace { const std::string TEST_SERVICE_NAME = "test_service_name"; } // namespace void MiniToolsKitTest::SetUp() -{} +{ + const int32_t permsNum = 3; + const int32_t indexZero = 0; + const int32_t indexOne = 1; + const int32_t indexTwo = 2; + uint64_t tokenId; + const char *perms[permsNum]; + perms[indexZero] = "ohos.permission.ACCESS_SERVICE_DM"; + perms[indexOne] = "ohos.permission.DISTRIBUTED_DATASYNC"; + perms[indexTwo] = "ohos.permission.MONITOR_DEVICE_NETWORK_STATE"; + NativeTokenInfoParams infoInstance = { + .dcapsNum = 0, + .permsNum = permsNum, + .aclsNum = 0, + .dcaps = NULL, + .perms = perms, + .acls = NULL, + .processName = "dsoftbus_service", + .aplStr = "system_core", + }; + tokenId = GetAccessTokenId(&infoInstance); + SetSelfTokenID(tokenId); + OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); +} void MiniToolsKitTest::TearDown() {}