• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
19 namespace OHOS {
20 namespace EDM {
21 namespace TEST {
22 uint64_t Utils::selfTokenId_ = 0;
23 const std::string SET_EDM_SERVICE = "persist.edm.edm_enable";
24 const std::string EDM_MANAGE_DATETIME_PERMISSION = "ohos.permission.SET_TIME";
25 const std::string EDM_FACTORY_RESET_PERMISSION = "ohos.permission.FACTORY_RESET";
26 const std::string EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION = "ohos.permission.MANAGE_LOCAL_ACCOUNTS";
27 const std::string EDM_MANAGE_SECURE_SETTINGS_PERMISSION = "ohos.permission.MANAGE_SECURE_SETTINGS";
28 const std::string PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT = "ohos.permission.ENTERPRISE_SUBSCRIBE_MANAGED_EVENT";
29 const std::string PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN = "ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN";
30 const std::string PERMISSION_SET_ENTERPRISE_INFO = "ohos.permission.SET_ENTERPRISE_INFO";
31 const std::string PERMISSION_ACCESS_CERT_MANAGER_INTERNAL = "ohos.permission.ACCESS_CERT_MANAGER_INTERNAL";
32 const std::string PERMISSION_ACCESS_CERT_MANAGER = "ohos.permission.ACCESS_CERT_MANAGER";
33 const std::string PERMISSION_NETSYS_INTERNAL = "ohos.permission.NETSYS_INTERNAL";
34 const std::string PERMISSION_INSTALL_BUNDLE = "ohos.permission.INSTALL_BUNDLE";
35 const std::string PERMISSION_RUNNING_STATE_OBSERVER = "ohos.permission.RUNNING_STATE_OBSERVER";
36 const std::string PERMISSION_ENTERPRISE_MANAGE_SECURITY = "ohos.permission.ENTERPRISE_MANAGE_SECURITY";
37 const std::string PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH = "ohos.permission.ENTERPRISE_MANAGE_BLUETOOTH";
38 const std::string PERMISSION_ENTERPRISE_MANAGE_LOCATION = "ohos.permission.ENTERPRISE_MANAGE_LOCATION";
39 const std::string PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER = "ohos.permission.ACCESS_SCREEN_LOCK_INNER";
40 const std::string PERMISSION_REBOOT = "ohos.permission.REBOOT";
41 const std::string PERMISSION_MICROPHONE = "ohos.permission.MICROPHONE";
42 const std::string PERMISSION_MANAGE_APP_BOOT_INTERNAL = "ohos.permission.MANAGE_APP_BOOT_INTERNAL";
43 const std::string PERMISSION_CONNECTIVITY_INTERNAL = "ohos.permission.CONNECTIVITY_INTERNAL";
44 const std::string PERMISSION_MANAGE_USB_CONFIG = "ohos.permission.MANAGE_USB_CONFIG";
45 const std::string PERMISSION_STORAGE_MANAGER = "ohos.permission.STORAGE_MANAGER";
46 const std::string PERMISSION_MOUNT_UNMOUNT_MANAGER = "ohos.permission.MOUNT_UNMOUNT_MANAGER";
47 const std::string PERMISSION_GET_BUNDLE_INFO = "ohos.permission.GET_BUNDLE_INFO";
48 
ExecCmdSync(const std::string & cmd)49 void Utils::ExecCmdSync(const std::string &cmd)
50 {
51     FILE *fp = popen(cmd.c_str(), "r");
52     if (fp != nullptr) {
53         pclose(fp);
54         fp = nullptr;
55     }
56 }
57 
SetNativeTokenTypeAndPermissions(const char * permissions[],int size)58 void Utils::SetNativeTokenTypeAndPermissions(const char* permissions[], int size)
59 {
60     uint64_t tokenId;
61     NativeTokenInfoParams infoInstance = {
62         .dcapsNum = 0,
63         .permsNum = size,
64         .aclsNum = 0,
65         .dcaps = nullptr,
66         .perms = permissions,
67         .acls = nullptr,
68         .aplStr = "system_basic",
69     };
70 
71     infoInstance.processName = "EdmServicesUnitTest";
72     tokenId = GetAccessTokenId(&infoInstance);
73     SetSelfTokenID(tokenId);
74     seteuid(ROOT_UID);
75     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
76     seteuid(EDM_UID);
77 }
78 
SetEdmInitialEnv()79 void Utils::SetEdmInitialEnv()
80 {
81     selfTokenId_ = GetSelfTokenID();
82     const char* permissions[] = {
83         EDM_MANAGE_DATETIME_PERMISSION.c_str(),
84         EDM_FACTORY_RESET_PERMISSION.c_str(),
85         EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION.c_str(),
86         EDM_MANAGE_SECURE_SETTINGS_PERMISSION.c_str(),
87         PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT.c_str(),
88         PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN.c_str(),
89         PERMISSION_SET_ENTERPRISE_INFO.c_str(),
90         PERMISSION_ACCESS_CERT_MANAGER_INTERNAL.c_str(),
91         PERMISSION_ACCESS_CERT_MANAGER.c_str(),
92         PERMISSION_NETSYS_INTERNAL.c_str(),
93         PERMISSION_INSTALL_BUNDLE.c_str(),
94         PERMISSION_RUNNING_STATE_OBSERVER.c_str(),
95         PERMISSION_ENTERPRISE_MANAGE_SECURITY.c_str(),
96         PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH.c_str(),
97         PERMISSION_ENTERPRISE_MANAGE_LOCATION.c_str(),
98         PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER.c_str(),
99         PERMISSION_REBOOT.c_str(),
100         PERMISSION_MICROPHONE.c_str(),
101         PERMISSION_MANAGE_APP_BOOT_INTERNAL.c_str(),
102         PERMISSION_CONNECTIVITY_INTERNAL.c_str(),
103         PERMISSION_MANAGE_USB_CONFIG.c_str(),
104         PERMISSION_STORAGE_MANAGER.c_str(),
105         PERMISSION_MOUNT_UNMOUNT_MANAGER.c_str(),
106         PERMISSION_GET_BUNDLE_INFO.c_str()
107     };
108     Utils::SetNativeTokenTypeAndPermissions(permissions, sizeof(permissions) / sizeof(permissions[0]));
109     seteuid(Utils::EDM_UID);
110 }
111 
ResetTokenTypeAndUid()112 void Utils::ResetTokenTypeAndUid()
113 {
114     seteuid(Utils::ROOT_UID);
115     SetSelfTokenID(selfTokenId_);
116 }
117 
IsOriginalUTEnv()118 bool Utils::IsOriginalUTEnv()
119 {
120     return Utils::ROOT_UID == geteuid() && selfTokenId_ == GetSelfTokenID();
121 }
122 
GetEdmServiceState()123 bool Utils::GetEdmServiceState()
124 {
125     std::string edmParaValue = system::GetParameter("persist.edm.edm_enable", "false");
126     return edmParaValue == "true";
127 }
128 
SetEdmServiceEnable()129 void Utils::SetEdmServiceEnable()
130 {
131     system::SetParameter(SET_EDM_SERVICE, "true");
132 }
133 
SetEdmServiceDisable()134 void Utils::SetEdmServiceDisable()
135 {
136     system::SetParameter(SET_EDM_SERVICE, "false");
137 }
138 } // namespace TEST
139 } // namespace EDM
140 } // namespace OHOS
141