1b1b8bc3fSopenharmony_ci/*
2b1b8bc3fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3b1b8bc3fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4b1b8bc3fSopenharmony_ci * you may not use this file except in compliance with the License.
5b1b8bc3fSopenharmony_ci * You may obtain a copy of the License at
6b1b8bc3fSopenharmony_ci *
7b1b8bc3fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8b1b8bc3fSopenharmony_ci *
9b1b8bc3fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10b1b8bc3fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11b1b8bc3fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12b1b8bc3fSopenharmony_ci * See the License for the specific language governing permissions and
13b1b8bc3fSopenharmony_ci * limitations under the License.
14b1b8bc3fSopenharmony_ci */
15b1b8bc3fSopenharmony_ci
16b1b8bc3fSopenharmony_ci#include "netmanager_base_test_security.h"
17b1b8bc3fSopenharmony_ci
18b1b8bc3fSopenharmony_ci#include "nativetoken_kit.h"
19b1b8bc3fSopenharmony_ci#include "token_setproc.h"
20b1b8bc3fSopenharmony_ci
21b1b8bc3fSopenharmony_cinamespace OHOS {
22b1b8bc3fSopenharmony_cinamespace NetManagerStandard {
23b1b8bc3fSopenharmony_ciusing namespace Security::AccessToken;
24b1b8bc3fSopenharmony_ciusing Security::AccessToken::AccessTokenID;
25b1b8bc3fSopenharmony_cinamespace {
26b1b8bc3fSopenharmony_ciHapInfoParams netManagerBaseParms = {
27b1b8bc3fSopenharmony_ci    .userID = 1,
28b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
29b1b8bc3fSopenharmony_ci    .instIndex = 0,
30b1b8bc3fSopenharmony_ci    .appIDDesc = "test",
31b1b8bc3fSopenharmony_ci    .isSystemApp = true,
32b1b8bc3fSopenharmony_ci};
33b1b8bc3fSopenharmony_ci
34b1b8bc3fSopenharmony_ciHapInfoParams netConnManagerNotSystemInfo = {
35b1b8bc3fSopenharmony_ci    .userID = 1,
36b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
37b1b8bc3fSopenharmony_ci    .instIndex = 0,
38b1b8bc3fSopenharmony_ci    .appIDDesc = "test",
39b1b8bc3fSopenharmony_ci};
40b1b8bc3fSopenharmony_ci
41b1b8bc3fSopenharmony_ciHapInfoParams netDataShareInfo = {
42b1b8bc3fSopenharmony_ci    .userID = 100,
43b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
44b1b8bc3fSopenharmony_ci    .instIndex = 0,
45b1b8bc3fSopenharmony_ci    .appIDDesc = "test",
46b1b8bc3fSopenharmony_ci    .isSystemApp = true,
47b1b8bc3fSopenharmony_ci};
48b1b8bc3fSopenharmony_ci
49b1b8bc3fSopenharmony_ciPermissionDef testNetConnInfoPermDef = {
50b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.GET_NETWORK_INFO",
51b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
52b1b8bc3fSopenharmony_ci    .grantMode = 1,
53b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
54b1b8bc3fSopenharmony_ci    .label = "label",
55b1b8bc3fSopenharmony_ci    .labelId = 1,
56b1b8bc3fSopenharmony_ci    .description = "Test ethernet maneger network info",
57b1b8bc3fSopenharmony_ci    .descriptionId = 1,
58b1b8bc3fSopenharmony_ci};
59b1b8bc3fSopenharmony_ci
60b1b8bc3fSopenharmony_ciPermissionStateFull testNetConnInfoState = {
61b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.GET_NETWORK_INFO",
62b1b8bc3fSopenharmony_ci    .isGeneral = true,
63b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
64b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
65b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
66b1b8bc3fSopenharmony_ci};
67b1b8bc3fSopenharmony_ci
68b1b8bc3fSopenharmony_ciPermissionDef testNetConnInternetPermDef = {
69b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.INTERNET",
70b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
71b1b8bc3fSopenharmony_ci    .grantMode = 1,
72b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
73b1b8bc3fSopenharmony_ci    .label = "label",
74b1b8bc3fSopenharmony_ci    .labelId = 1,
75b1b8bc3fSopenharmony_ci    .description = "Test net connect manager internet",
76b1b8bc3fSopenharmony_ci    .descriptionId = 1,
77b1b8bc3fSopenharmony_ci};
78b1b8bc3fSopenharmony_ci
79b1b8bc3fSopenharmony_ciPermissionStateFull testNetConnInternetState = {
80b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.INTERNET",
81b1b8bc3fSopenharmony_ci    .isGeneral = true,
82b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
83b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
84b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
85b1b8bc3fSopenharmony_ci};
86b1b8bc3fSopenharmony_ci
87b1b8bc3fSopenharmony_ciPermissionDef testNetConnInternalPermDef = {
88b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.CONNECTIVITY_INTERNAL",
89b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
90b1b8bc3fSopenharmony_ci    .grantMode = 1,
91b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
92b1b8bc3fSopenharmony_ci    .label = "label",
93b1b8bc3fSopenharmony_ci    .labelId = 1,
94b1b8bc3fSopenharmony_ci    .description = "Test net connect manager internet",
95b1b8bc3fSopenharmony_ci    .descriptionId = 1,
96b1b8bc3fSopenharmony_ci};
97b1b8bc3fSopenharmony_ci
98b1b8bc3fSopenharmony_ciPermissionStateFull testNetConnInternalState = {
99b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.CONNECTIVITY_INTERNAL",
100b1b8bc3fSopenharmony_ci    .isGeneral = true,
101b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
102b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
103b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
104b1b8bc3fSopenharmony_ci};
105b1b8bc3fSopenharmony_ci
106b1b8bc3fSopenharmony_ciPermissionDef testNetPolicyStrategyPermDef = {
107b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.MANAGE_NET_STRATEGY",
108b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
109b1b8bc3fSopenharmony_ci    .grantMode = 1,
110b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
111b1b8bc3fSopenharmony_ci    .label = "label",
112b1b8bc3fSopenharmony_ci    .labelId = 1,
113b1b8bc3fSopenharmony_ci    .description = "Test net policy manager",
114b1b8bc3fSopenharmony_ci    .descriptionId = 1,
115b1b8bc3fSopenharmony_ci};
116b1b8bc3fSopenharmony_ci
117b1b8bc3fSopenharmony_ciPermissionStateFull testManageNetStrategyState = {
118b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.MANAGE_NET_STRATEGY",
119b1b8bc3fSopenharmony_ci    .isGeneral = true,
120b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
121b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
122b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
123b1b8bc3fSopenharmony_ci};
124b1b8bc3fSopenharmony_ci
125b1b8bc3fSopenharmony_ciPermissionDef testNetSysInternalDef = {
126b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.NETSYS_INTERNAL",
127b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
128b1b8bc3fSopenharmony_ci    .grantMode = 1,
129b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
130b1b8bc3fSopenharmony_ci    .label = "label",
131b1b8bc3fSopenharmony_ci    .labelId = 1,
132b1b8bc3fSopenharmony_ci    .description = "Test netsys_native_manager_test",
133b1b8bc3fSopenharmony_ci    .descriptionId = 1,
134b1b8bc3fSopenharmony_ci};
135b1b8bc3fSopenharmony_ci
136b1b8bc3fSopenharmony_ciPermissionStateFull testNetSysInternalState = {
137b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.NETSYS_INTERNAL",
138b1b8bc3fSopenharmony_ci    .isGeneral = true,
139b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
140b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
141b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
142b1b8bc3fSopenharmony_ci};
143b1b8bc3fSopenharmony_ci
144b1b8bc3fSopenharmony_ciPermissionDef testNetConnSettingsPermDef = {
145b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.MANAGE_SECURE_SETTINGS",
146b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
147b1b8bc3fSopenharmony_ci    .grantMode = 1,
148b1b8bc3fSopenharmony_ci    .label = "label",
149b1b8bc3fSopenharmony_ci    .labelId = 1,
150b1b8bc3fSopenharmony_ci    .description = "Test net data share",
151b1b8bc3fSopenharmony_ci    .descriptionId = 1,
152b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
153b1b8bc3fSopenharmony_ci};
154b1b8bc3fSopenharmony_ci
155b1b8bc3fSopenharmony_ciPermissionStateFull testNetConnSettingsState = {
156b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
157b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
158b1b8bc3fSopenharmony_ci    .isGeneral = true,
159b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.MANAGE_SECURE_SETTINGS",
160b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
161b1b8bc3fSopenharmony_ci};
162b1b8bc3fSopenharmony_ci
163b1b8bc3fSopenharmony_ciPermissionDef testNetStatsPermDef = {
164b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.GET_NETWORK_STATS",
165b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
166b1b8bc3fSopenharmony_ci    .grantMode = 1,
167b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
168b1b8bc3fSopenharmony_ci    .label = "label",
169b1b8bc3fSopenharmony_ci    .labelId = 1,
170b1b8bc3fSopenharmony_ci    .description = "Test net stats manager",
171b1b8bc3fSopenharmony_ci    .descriptionId = 1,
172b1b8bc3fSopenharmony_ci};
173b1b8bc3fSopenharmony_ci
174b1b8bc3fSopenharmony_ciPermissionStateFull testNetStatsState = {
175b1b8bc3fSopenharmony_ci    .permissionName = "ohos.permission.GET_NETWORK_STATS",
176b1b8bc3fSopenharmony_ci    .isGeneral = true,
177b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
178b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
179b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
180b1b8bc3fSopenharmony_ci};
181b1b8bc3fSopenharmony_ci
182b1b8bc3fSopenharmony_ciHapPolicyParams netManagerBasePolicy = {
183b1b8bc3fSopenharmony_ci    .apl = APL_SYSTEM_BASIC,
184b1b8bc3fSopenharmony_ci    .domain = "test.domain",
185b1b8bc3fSopenharmony_ci    .permList = { testNetConnInfoPermDef, testNetConnInternetPermDef, testNetConnInternalPermDef,
186b1b8bc3fSopenharmony_ci        testNetPolicyStrategyPermDef, testNetSysInternalDef, testNetStatsPermDef },
187b1b8bc3fSopenharmony_ci    .permStateList = { testNetConnInfoState, testNetConnInternetState, testNetConnInternalState,
188b1b8bc3fSopenharmony_ci        testManageNetStrategyState, testNetSysInternalState, testNetStatsState },
189b1b8bc3fSopenharmony_ci};
190b1b8bc3fSopenharmony_ci
191b1b8bc3fSopenharmony_ciPermissionDef testNoPermissionDef = {
192b1b8bc3fSopenharmony_ci    .permissionName = "",
193b1b8bc3fSopenharmony_ci    .bundleName = "netmanager_base_test",
194b1b8bc3fSopenharmony_ci    .grantMode = 1,
195b1b8bc3fSopenharmony_ci    .availableLevel = APL_SYSTEM_BASIC,
196b1b8bc3fSopenharmony_ci    .label = "label",
197b1b8bc3fSopenharmony_ci    .labelId = 1,
198b1b8bc3fSopenharmony_ci    .description = "Test no permission",
199b1b8bc3fSopenharmony_ci    .descriptionId = 1,
200b1b8bc3fSopenharmony_ci};
201b1b8bc3fSopenharmony_ci
202b1b8bc3fSopenharmony_ciPermissionStateFull testNoPermissionState = {
203b1b8bc3fSopenharmony_ci    .permissionName = "",
204b1b8bc3fSopenharmony_ci    .isGeneral = true,
205b1b8bc3fSopenharmony_ci    .resDeviceID = { "local" },
206b1b8bc3fSopenharmony_ci    .grantStatus = { PermissionState::PERMISSION_GRANTED },
207b1b8bc3fSopenharmony_ci    .grantFlags = { 2 },
208b1b8bc3fSopenharmony_ci};
209b1b8bc3fSopenharmony_ci
210b1b8bc3fSopenharmony_ciHapPolicyParams testNoPermission = {
211b1b8bc3fSopenharmony_ci    .apl = APL_SYSTEM_BASIC,
212b1b8bc3fSopenharmony_ci    .domain = "test.domain",
213b1b8bc3fSopenharmony_ci    .permList = { testNoPermissionDef },
214b1b8bc3fSopenharmony_ci    .permStateList = { testNoPermissionState },
215b1b8bc3fSopenharmony_ci};
216b1b8bc3fSopenharmony_ci
217b1b8bc3fSopenharmony_ciHapPolicyParams netDataSharePolicy = {
218b1b8bc3fSopenharmony_ci    .apl = APL_SYSTEM_BASIC,
219b1b8bc3fSopenharmony_ci    .domain = "test.domain",
220b1b8bc3fSopenharmony_ci    .permList = { testNetConnSettingsPermDef },
221b1b8bc3fSopenharmony_ci    .permStateList = { testNetConnSettingsState },
222b1b8bc3fSopenharmony_ci};
223b1b8bc3fSopenharmony_ci} // namespace
224b1b8bc3fSopenharmony_ci
225b1b8bc3fSopenharmony_ciNetManagerBaseAccessToken::NetManagerBaseAccessToken() : currentID_(GetSelfTokenID())
226b1b8bc3fSopenharmony_ci{
227b1b8bc3fSopenharmony_ci    AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netManagerBaseParms, netManagerBasePolicy);
228b1b8bc3fSopenharmony_ci    accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
229b1b8bc3fSopenharmony_ci    SetSelfTokenID(tokenIdEx.tokenIDEx);
230b1b8bc3fSopenharmony_ci}
231b1b8bc3fSopenharmony_ci
232b1b8bc3fSopenharmony_ciNetManagerBaseAccessToken::~NetManagerBaseAccessToken()
233b1b8bc3fSopenharmony_ci{
234b1b8bc3fSopenharmony_ci    AccessTokenKit::DeleteToken(accessID_);
235b1b8bc3fSopenharmony_ci    SetSelfTokenID(currentID_);
236b1b8bc3fSopenharmony_ci}
237b1b8bc3fSopenharmony_ci
238b1b8bc3fSopenharmony_ciNetManagerBaseNotSystemToken::NetManagerBaseNotSystemToken() : currentID_(GetSelfTokenID())
239b1b8bc3fSopenharmony_ci{
240b1b8bc3fSopenharmony_ci    AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netConnManagerNotSystemInfo, netManagerBasePolicy);
241b1b8bc3fSopenharmony_ci    accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
242b1b8bc3fSopenharmony_ci    SetSelfTokenID(accessID_);
243b1b8bc3fSopenharmony_ci}
244b1b8bc3fSopenharmony_ci
245b1b8bc3fSopenharmony_ciNetManagerBaseNotSystemToken::~NetManagerBaseNotSystemToken()
246b1b8bc3fSopenharmony_ci{
247b1b8bc3fSopenharmony_ci    AccessTokenKit::DeleteToken(accessID_);
248b1b8bc3fSopenharmony_ci    SetSelfTokenID(currentID_);
249b1b8bc3fSopenharmony_ci}
250b1b8bc3fSopenharmony_ci
251b1b8bc3fSopenharmony_ciNetManagerBaseNoPermissionToken::NetManagerBaseNoPermissionToken() : currentID_(GetSelfTokenID())
252b1b8bc3fSopenharmony_ci{
253b1b8bc3fSopenharmony_ci    AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netManagerBaseParms, testNoPermission);
254b1b8bc3fSopenharmony_ci    accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
255b1b8bc3fSopenharmony_ci    SetSelfTokenID(tokenIdEx.tokenIDEx);
256b1b8bc3fSopenharmony_ci}
257b1b8bc3fSopenharmony_ci
258b1b8bc3fSopenharmony_ciNetManagerBaseNoPermissionToken::~NetManagerBaseNoPermissionToken()
259b1b8bc3fSopenharmony_ci{
260b1b8bc3fSopenharmony_ci    AccessTokenKit::DeleteToken(accessID_);
261b1b8bc3fSopenharmony_ci    SetSelfTokenID(currentID_);
262b1b8bc3fSopenharmony_ci}
263b1b8bc3fSopenharmony_ci
264b1b8bc3fSopenharmony_ciNetManagerBaseDataShareToken::NetManagerBaseDataShareToken() : currentID_(GetSelfTokenID())
265b1b8bc3fSopenharmony_ci{
266b1b8bc3fSopenharmony_ci    AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netDataShareInfo, netDataSharePolicy);
267b1b8bc3fSopenharmony_ci    accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
268b1b8bc3fSopenharmony_ci    SetSelfTokenID(tokenIdEx.tokenIDEx);
269b1b8bc3fSopenharmony_ci}
270b1b8bc3fSopenharmony_ci
271b1b8bc3fSopenharmony_ciNetManagerBaseDataShareToken::~NetManagerBaseDataShareToken()
272b1b8bc3fSopenharmony_ci{
273b1b8bc3fSopenharmony_ci    AccessTokenKit::DeleteToken(accessID_);
274b1b8bc3fSopenharmony_ci    SetSelfTokenID(currentID_);
275b1b8bc3fSopenharmony_ci}
276b1b8bc3fSopenharmony_ci} // namespace NetManagerStandard
277b1b8bc3fSopenharmony_ci} // namespace OHOS
278