1/* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "utils.h" 17#include "parameters.h" 18 19namespace OHOS { 20namespace EDM { 21namespace TEST { 22uint64_t Utils::selfTokenId_ = 0; 23const std::string SET_EDM_SERVICE = "persist.edm.edm_enable"; 24const std::string EDM_MANAGE_DATETIME_PERMISSION = "ohos.permission.SET_TIME"; 25const std::string EDM_FACTORY_RESET_PERMISSION = "ohos.permission.FACTORY_RESET"; 26const std::string EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION = "ohos.permission.MANAGE_LOCAL_ACCOUNTS"; 27const std::string EDM_MANAGE_SECURE_SETTINGS_PERMISSION = "ohos.permission.MANAGE_SECURE_SETTINGS"; 28const std::string PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT = "ohos.permission.ENTERPRISE_SUBSCRIBE_MANAGED_EVENT"; 29const std::string PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN = "ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN"; 30const std::string PERMISSION_SET_ENTERPRISE_INFO = "ohos.permission.SET_ENTERPRISE_INFO"; 31const std::string PERMISSION_ACCESS_CERT_MANAGER_INTERNAL = "ohos.permission.ACCESS_CERT_MANAGER_INTERNAL"; 32const std::string PERMISSION_ACCESS_CERT_MANAGER = "ohos.permission.ACCESS_CERT_MANAGER"; 33const std::string PERMISSION_ACCESS_BLUETOOTH = "ohos.permission.ACCESS_BLUETOOTH"; 34const std::string PERMISSION_MANAGE_BLUETOOTH = "ohos.permission.MANAGE_BLUETOOTH"; 35const std::string PERMISSION_NETSYS_INTERNAL = "ohos.permission.NETSYS_INTERNAL"; 36const std::string PERMISSION_INSTALL_ENTERPRISE_NORMAL_BUNDLE = "ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE"; 37const std::string PERMISSION_INSTALL_ENTERPRISE_MDM_BUNDLE = "ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE"; 38const std::string PERMISSION_INSTALL_SELF_BUNDLE = "ohos.permission.INSTALL_SELF_BUNDLE"; 39const std::string PERMISSION_UNINSTALL_BUNDLE = "ohos.permission.UNINSTALL_BUNDLE"; 40const std::string PERMISSION_RUNNING_STATE_OBSERVER = "ohos.permission.RUNNING_STATE_OBSERVER"; 41const std::string PERMISSION_ENTERPRISE_MANAGE_SECURITY = "ohos.permission.ENTERPRISE_MANAGE_SECURITY"; 42const std::string PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH = "ohos.permission.ENTERPRISE_MANAGE_BLUETOOTH"; 43const std::string PERMISSION_ENTERPRISE_MANAGE_LOCATION = "ohos.permission.ENTERPRISE_MANAGE_LOCATION"; 44const std::string PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER = "ohos.permission.ACCESS_SCREEN_LOCK_INNER"; 45const std::string PERMISSION_REBOOT = "ohos.permission.REBOOT"; 46const std::string PERMISSION_MANAGE_APP_BOOT_INTERNAL = "ohos.permission.MANAGE_APP_BOOT_INTERNAL"; 47const std::string PERMISSION_CONNECTIVITY_INTERNAL = "ohos.permission.CONNECTIVITY_INTERNAL"; 48const std::string PERMISSION_MANAGE_USB_CONFIG = "ohos.permission.MANAGE_USB_CONFIG"; 49const std::string PERMISSION_STORAGE_MANAGER = "ohos.permission.STORAGE_MANAGER"; 50const std::string PERMISSION_MOUNT_UNMOUNT_MANAGER = "ohos.permission.MOUNT_UNMOUNT_MANAGER"; 51const std::string PERMISSION_GET_BUNDLE_INFO = "ohos.permission.GET_BUNDLE_INFO"; 52const std::string PERSIST_BLUETOOTH_CONTROL = "persist.edm.prohibit_bluetooth"; 53const std::string PERMISSION_ACCESS_USER_TRUSTED_CERT = "ohos.permission.ACCESS_USER_TRUSTED_CERT"; 54const std::string PERMISSION_ACCESS_USER_AUTH_INTERNAL = "ohos.permission.ACCESS_USER_AUTH_INTERNAL"; 55const std::string PERMISSION_SET_WIFI_INFO = "ohos.permission.SET_WIFI_INFO"; 56const std::string PERMISSION_GET_WIFI_INFO = "ohos.permission.GET_WIFI_INFO"; 57const std::string PERMISSION_MANAGE_WIFI_CONNECTION = "ohos.permission.MANAGE_WIFI_CONNECTION"; 58const std::string PERMISSION_MANAGE_SETTINGS = "ohos.permission.MANAGE_SETTINGS"; 59const std::string PERMISSION_MICROPHONE_CONTROL = "ohos.permission.MICROPHONE_CONTROL"; 60const std::string PERMISSION_NETWORK_POLICY_MANAGE = "ohos.permission.MANAGE_NET_STRATEGY"; 61const std::string PERMISSION_CAMERA = "ohos.permission.CAMERA"; 62const std::string PERMISSION_CAMERA_CONTROL = "ohos.permission.CAMERA_CONTROL"; 63void Utils::ExecCmdSync(const std::string &cmd) 64{ 65 FILE *fp = popen(cmd.c_str(), "r"); 66 if (fp != nullptr) { 67 pclose(fp); 68 fp = nullptr; 69 } 70} 71 72void Utils::SetNativeTokenTypeAndPermissions(const char* permissions[], int size) 73{ 74 uint64_t tokenId; 75 NativeTokenInfoParams infoInstance = { 76 .dcapsNum = 0, 77 .permsNum = size, 78 .aclsNum = 0, 79 .dcaps = nullptr, 80 .perms = permissions, 81 .acls = nullptr, 82 .aplStr = "system_basic", 83 }; 84 85 infoInstance.processName = "EdmServicesUnitTest"; 86 tokenId = GetAccessTokenId(&infoInstance); 87 SetSelfTokenID(tokenId); 88 seteuid(ROOT_UID); 89 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); 90 seteuid(EDM_UID); 91} 92 93void Utils::SetEdmInitialEnv() 94{ 95 selfTokenId_ = GetSelfTokenID(); 96 const char* permissions[] = { 97 EDM_MANAGE_DATETIME_PERMISSION.c_str(), 98 EDM_FACTORY_RESET_PERMISSION.c_str(), 99 EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION.c_str(), 100 EDM_MANAGE_SECURE_SETTINGS_PERMISSION.c_str(), 101 PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT.c_str(), 102 PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN.c_str(), 103 PERMISSION_SET_ENTERPRISE_INFO.c_str(), 104 PERMISSION_ACCESS_BLUETOOTH.c_str(), 105 PERMISSION_MANAGE_BLUETOOTH.c_str(), 106 PERMISSION_ACCESS_CERT_MANAGER_INTERNAL.c_str(), 107 PERMISSION_ACCESS_CERT_MANAGER.c_str(), 108 PERMISSION_NETSYS_INTERNAL.c_str(), 109 PERMISSION_INSTALL_ENTERPRISE_MDM_BUNDLE.c_str(), 110 PERMISSION_INSTALL_ENTERPRISE_NORMAL_BUNDLE.c_str(), 111 PERMISSION_INSTALL_SELF_BUNDLE.c_str(), 112 PERMISSION_UNINSTALL_BUNDLE.c_str(), 113 PERMISSION_RUNNING_STATE_OBSERVER.c_str(), 114 PERMISSION_ENTERPRISE_MANAGE_SECURITY.c_str(), 115 PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH.c_str(), 116 PERMISSION_ENTERPRISE_MANAGE_LOCATION.c_str(), 117 PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER.c_str(), 118 PERMISSION_REBOOT.c_str(), 119 PERMISSION_MANAGE_APP_BOOT_INTERNAL.c_str(), 120 PERMISSION_CONNECTIVITY_INTERNAL.c_str(), 121 PERMISSION_MANAGE_USB_CONFIG.c_str(), 122 PERMISSION_STORAGE_MANAGER.c_str(), 123 PERMISSION_MOUNT_UNMOUNT_MANAGER.c_str(), 124 PERMISSION_GET_BUNDLE_INFO.c_str(), 125 PERMISSION_ACCESS_USER_TRUSTED_CERT.c_str(), 126 PERMISSION_ACCESS_USER_AUTH_INTERNAL.c_str(), 127 PERMISSION_GET_WIFI_INFO.c_str(), 128 PERMISSION_SET_WIFI_INFO.c_str(), 129 PERMISSION_MANAGE_WIFI_CONNECTION.c_str(), 130 PERMISSION_MANAGE_SETTINGS.c_str(), 131 PERMISSION_MICROPHONE_CONTROL.c_str(), 132 PERMISSION_NETWORK_POLICY_MANAGE.c_str(), 133 PERMISSION_CAMERA.c_str(), 134 PERMISSION_CAMERA_CONTROL.c_str(), 135 }; 136 Utils::SetNativeTokenTypeAndPermissions(permissions, sizeof(permissions) / sizeof(permissions[0])); 137 seteuid(Utils::EDM_UID); 138} 139 140void Utils::ResetTokenTypeAndUid() 141{ 142 seteuid(Utils::ROOT_UID); 143 SetSelfTokenID(selfTokenId_); 144} 145 146bool Utils::IsOriginalUTEnv() 147{ 148 return Utils::ROOT_UID == geteuid() && selfTokenId_ == GetSelfTokenID(); 149} 150 151bool Utils::GetEdmServiceState() 152{ 153 std::string edmParaValue = system::GetParameter("persist.edm.edm_enable", "false"); 154 return edmParaValue == "true"; 155} 156 157void Utils::SetEdmServiceEnable() 158{ 159 system::SetParameter(SET_EDM_SERVICE, "true"); 160} 161 162void Utils::SetEdmServiceDisable() 163{ 164 system::SetParameter(SET_EDM_SERVICE, "false"); 165} 166 167void Utils::SetBluetoothEnable() 168{ 169 system::SetParameter(PERSIST_BLUETOOTH_CONTROL, "false"); 170} 171 172void Utils::SetBluetoothDisable() 173{ 174 system::SetParameter(PERSIST_BLUETOOTH_CONTROL, "true"); 175} 176} // namespace TEST 177} // namespace EDM 178} // namespace OHOS 179