18e745fdaSopenharmony_ci/* 28e745fdaSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 38e745fdaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48e745fdaSopenharmony_ci * you may not use this file except in compliance with the License. 58e745fdaSopenharmony_ci * You may obtain a copy of the License at 68e745fdaSopenharmony_ci * 78e745fdaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88e745fdaSopenharmony_ci * 98e745fdaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108e745fdaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118e745fdaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128e745fdaSopenharmony_ci * See the License for the specific language governing permissions and 138e745fdaSopenharmony_ci * limitations under the License. 148e745fdaSopenharmony_ci */ 158e745fdaSopenharmony_ci 168e745fdaSopenharmony_ci#include "netmanager_ext_test_security.h" 178e745fdaSopenharmony_ci 188e745fdaSopenharmony_ci#include "nativetoken_kit.h" 198e745fdaSopenharmony_ci#include "token_setproc.h" 208e745fdaSopenharmony_ci 218e745fdaSopenharmony_cinamespace OHOS { 228e745fdaSopenharmony_cinamespace NetManagerStandard { 238e745fdaSopenharmony_ciusing namespace Security::AccessToken; 248e745fdaSopenharmony_ciusing Security::AccessToken::AccessTokenID; 258e745fdaSopenharmony_cinamespace { 268e745fdaSopenharmony_ciHapInfoParams netManagerExtParms = { 278e745fdaSopenharmony_ci .userID = 1, 288e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 298e745fdaSopenharmony_ci .instIndex = 0, 308e745fdaSopenharmony_ci .appIDDesc = "test", 318e745fdaSopenharmony_ci .isSystemApp = true, 328e745fdaSopenharmony_ci}; 338e745fdaSopenharmony_ci 348e745fdaSopenharmony_ciPermissionDef connectivityInternalPermDef = { 358e745fdaSopenharmony_ci .permissionName = "ohos.permission.CONNECTIVITY_INTERNAL", 368e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 378e745fdaSopenharmony_ci .grantMode = 1, 388e745fdaSopenharmony_ci .availableLevel = OHOS::Security::AccessToken::ATokenAplEnum::APL_SYSTEM_BASIC, 398e745fdaSopenharmony_ci .label = "label", 408e745fdaSopenharmony_ci .labelId = 1, 418e745fdaSopenharmony_ci .description = "Test ethernet connectivity internet", 428e745fdaSopenharmony_ci .descriptionId = 1, 438e745fdaSopenharmony_ci}; 448e745fdaSopenharmony_ci 458e745fdaSopenharmony_ciPermissionStateFull connectivityInternalState = { 468e745fdaSopenharmony_ci .permissionName = "ohos.permission.CONNECTIVITY_INTERNAL", 478e745fdaSopenharmony_ci .isGeneral = true, 488e745fdaSopenharmony_ci .resDeviceID = { "local" }, 498e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 508e745fdaSopenharmony_ci .grantFlags = { 2 }, 518e745fdaSopenharmony_ci}; 528e745fdaSopenharmony_ci 538e745fdaSopenharmony_ciPermissionDef getNetworkInfoPermDef = { 548e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_NETWORK_INFO", 558e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 568e745fdaSopenharmony_ci .grantMode = 1, 578e745fdaSopenharmony_ci .availableLevel = OHOS::Security::AccessToken::ATokenAplEnum::APL_SYSTEM_BASIC, 588e745fdaSopenharmony_ci .label = "label", 598e745fdaSopenharmony_ci .labelId = 1, 608e745fdaSopenharmony_ci .description = "Test ethernet maneger network info", 618e745fdaSopenharmony_ci .descriptionId = 1, 628e745fdaSopenharmony_ci}; 638e745fdaSopenharmony_ci 648e745fdaSopenharmony_ciPermissionStateFull getNetworkInfoState = { 658e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_NETWORK_INFO", 668e745fdaSopenharmony_ci .isGeneral = true, 678e745fdaSopenharmony_ci .resDeviceID = { "local" }, 688e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 698e745fdaSopenharmony_ci .grantFlags = { 2 }, 708e745fdaSopenharmony_ci}; 718e745fdaSopenharmony_ci 728e745fdaSopenharmony_ciPermissionDef getMacAddressInfoPermDef = { 738e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_ETHERNET_LOCAL_MAC", 748e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 758e745fdaSopenharmony_ci .grantMode = 1, 768e745fdaSopenharmony_ci .availableLevel = OHOS::Security::AccessToken::ATokenAplEnum::APL_SYSTEM_BASIC, 778e745fdaSopenharmony_ci .label = "label", 788e745fdaSopenharmony_ci .labelId = 1, 798e745fdaSopenharmony_ci .description = "Test ethernet mac address info", 808e745fdaSopenharmony_ci .descriptionId = 1, 818e745fdaSopenharmony_ci}; 828e745fdaSopenharmony_ci 838e745fdaSopenharmony_ciPermissionStateFull getMacAddressInfoState = { 848e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_ETHERNET_LOCAL_MAC", 858e745fdaSopenharmony_ci .isGeneral = true, 868e745fdaSopenharmony_ci .resDeviceID = { "local" }, 878e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 888e745fdaSopenharmony_ci .grantFlags = { 2 }, 898e745fdaSopenharmony_ci}; 908e745fdaSopenharmony_ci 918e745fdaSopenharmony_ciPermissionDef manageVpnPermDef = { 928e745fdaSopenharmony_ci .permissionName = "ohos.permission.MANAGE_VPN", 938e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 948e745fdaSopenharmony_ci .grantMode = 1, 958e745fdaSopenharmony_ci .availableLevel = APL_SYSTEM_BASIC, 968e745fdaSopenharmony_ci .label = "label", 978e745fdaSopenharmony_ci .labelId = 1, 988e745fdaSopenharmony_ci .description = "Test vpn maneger network info", 998e745fdaSopenharmony_ci .descriptionId = 1, 1008e745fdaSopenharmony_ci}; 1018e745fdaSopenharmony_ci 1028e745fdaSopenharmony_ciPermissionStateFull manageVpnState = { 1038e745fdaSopenharmony_ci .permissionName = "ohos.permission.MANAGE_VPN", 1048e745fdaSopenharmony_ci .isGeneral = true, 1058e745fdaSopenharmony_ci .resDeviceID = { "local" }, 1068e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 1078e745fdaSopenharmony_ci .grantFlags = { 2 }, 1088e745fdaSopenharmony_ci}; 1098e745fdaSopenharmony_ci 1108e745fdaSopenharmony_ciPermissionDef getNetFirewallPermDef = { 1118e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_NET_FIREWALL", 1128e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 1138e745fdaSopenharmony_ci .grantMode = 1, 1148e745fdaSopenharmony_ci .availableLevel = OHOS::Security::AccessToken::ATokenAplEnum::APL_SYSTEM_BASIC, 1158e745fdaSopenharmony_ci .label = "label", 1168e745fdaSopenharmony_ci .labelId = 1, 1178e745fdaSopenharmony_ci .description = "Test netfirewall maneger info", 1188e745fdaSopenharmony_ci .descriptionId = 1, 1198e745fdaSopenharmony_ci}; 1208e745fdaSopenharmony_ci 1218e745fdaSopenharmony_ciPermissionStateFull getNetFirewallState = { 1228e745fdaSopenharmony_ci .permissionName = "ohos.permission.GET_NET_FIREWALL", 1238e745fdaSopenharmony_ci .isGeneral = true, 1248e745fdaSopenharmony_ci .resDeviceID = { "local" }, 1258e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 1268e745fdaSopenharmony_ci .grantFlags = { 2 }, 1278e745fdaSopenharmony_ci}; 1288e745fdaSopenharmony_ci 1298e745fdaSopenharmony_ciPermissionDef setNetFirewallPermDef = { 1308e745fdaSopenharmony_ci .permissionName = "ohos.permission.MANAGE_NET_FIREWALL", 1318e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 1328e745fdaSopenharmony_ci .grantMode = 1, 1338e745fdaSopenharmony_ci .availableLevel = OHOS::Security::AccessToken::ATokenAplEnum::APL_SYSTEM_BASIC, 1348e745fdaSopenharmony_ci .label = "label", 1358e745fdaSopenharmony_ci .labelId = 1, 1368e745fdaSopenharmony_ci .description = "Test netfirewall maneger info", 1378e745fdaSopenharmony_ci .descriptionId = 1, 1388e745fdaSopenharmony_ci}; 1398e745fdaSopenharmony_ci 1408e745fdaSopenharmony_ciPermissionStateFull setNetFirewallState = { 1418e745fdaSopenharmony_ci .permissionName = "ohos.permission.MANAGE_NET_FIREWALL", 1428e745fdaSopenharmony_ci .isGeneral = true, 1438e745fdaSopenharmony_ci .resDeviceID = { "local" }, 1448e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 1458e745fdaSopenharmony_ci .grantFlags = { 2 }, 1468e745fdaSopenharmony_ci}; 1478e745fdaSopenharmony_ci 1488e745fdaSopenharmony_ciHapPolicyParams netManagerExtPolicy = { 1498e745fdaSopenharmony_ci .apl = APL_SYSTEM_BASIC, 1508e745fdaSopenharmony_ci .domain = "test.domain", 1518e745fdaSopenharmony_ci .permList = {getNetworkInfoPermDef, connectivityInternalPermDef, manageVpnPermDef, getNetFirewallPermDef, 1528e745fdaSopenharmony_ci setNetFirewallPermDef}, 1538e745fdaSopenharmony_ci .permStateList = {getNetworkInfoState, connectivityInternalState, manageVpnState, getNetFirewallState, 1548e745fdaSopenharmony_ci setNetFirewallState}, 1558e745fdaSopenharmony_ci}; 1568e745fdaSopenharmony_ci 1578e745fdaSopenharmony_ciPermissionDef testNoPermissionDef = { 1588e745fdaSopenharmony_ci .permissionName = "", 1598e745fdaSopenharmony_ci .bundleName = "netmanager_ext_test", 1608e745fdaSopenharmony_ci .grantMode = 1, 1618e745fdaSopenharmony_ci .availableLevel = APL_SYSTEM_BASIC, 1628e745fdaSopenharmony_ci .label = "label", 1638e745fdaSopenharmony_ci .labelId = 1, 1648e745fdaSopenharmony_ci .description = "Test no permission", 1658e745fdaSopenharmony_ci .descriptionId = 1, 1668e745fdaSopenharmony_ci}; 1678e745fdaSopenharmony_ci 1688e745fdaSopenharmony_ciPermissionStateFull testNoPermissionState = { 1698e745fdaSopenharmony_ci .permissionName = "", 1708e745fdaSopenharmony_ci .isGeneral = true, 1718e745fdaSopenharmony_ci .resDeviceID = { "local" }, 1728e745fdaSopenharmony_ci .grantStatus = { PermissionState::PERMISSION_GRANTED }, 1738e745fdaSopenharmony_ci .grantFlags = { 2 }, 1748e745fdaSopenharmony_ci}; 1758e745fdaSopenharmony_ci 1768e745fdaSopenharmony_ciHapPolicyParams testNoPermission = { 1778e745fdaSopenharmony_ci .apl = APL_SYSTEM_BASIC, 1788e745fdaSopenharmony_ci .domain = "test.domain", 1798e745fdaSopenharmony_ci .permList = { testNoPermissionDef }, 1808e745fdaSopenharmony_ci .permStateList = { testNoPermissionState }, 1818e745fdaSopenharmony_ci}; 1828e745fdaSopenharmony_ci} // namespace 1838e745fdaSopenharmony_ci 1848e745fdaSopenharmony_ciNetManagerExtAccessToken::NetManagerExtAccessToken() : currentID_(GetSelfTokenID()) 1858e745fdaSopenharmony_ci{ 1868e745fdaSopenharmony_ci AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netManagerExtParms, netManagerExtPolicy); 1878e745fdaSopenharmony_ci accessID_ = tokenIdEx.tokenIdExStruct.tokenID; 1888e745fdaSopenharmony_ci SetSelfTokenID(tokenIdEx.tokenIDEx); 1898e745fdaSopenharmony_ci} 1908e745fdaSopenharmony_ci 1918e745fdaSopenharmony_ciNetManagerExtAccessToken::~NetManagerExtAccessToken() 1928e745fdaSopenharmony_ci{ 1938e745fdaSopenharmony_ci AccessTokenKit::DeleteToken(accessID_); 1948e745fdaSopenharmony_ci SetSelfTokenID(currentID_); 1958e745fdaSopenharmony_ci} 1968e745fdaSopenharmony_ci 1978e745fdaSopenharmony_ciNetManagerExtNotSystemAccessToken::NetManagerExtNotSystemAccessToken() : currentID_(GetSelfTokenID()) 1988e745fdaSopenharmony_ci{ 1998e745fdaSopenharmony_ci AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netManagerExtParms, netManagerExtPolicy); 2008e745fdaSopenharmony_ci accessID_ = tokenIdEx.tokenIdExStruct.tokenID; 2018e745fdaSopenharmony_ci SetSelfTokenID(accessID_); 2028e745fdaSopenharmony_ci} 2038e745fdaSopenharmony_ci 2048e745fdaSopenharmony_ciNetManagerExtNotSystemAccessToken::~NetManagerExtNotSystemAccessToken() 2058e745fdaSopenharmony_ci{ 2068e745fdaSopenharmony_ci AccessTokenKit::DeleteToken(accessID_); 2078e745fdaSopenharmony_ci SetSelfTokenID(currentID_); 2088e745fdaSopenharmony_ci} 2098e745fdaSopenharmony_ci 2108e745fdaSopenharmony_ciNoPermissionAccessToken::NoPermissionAccessToken() : currentID_(GetSelfTokenID()) 2118e745fdaSopenharmony_ci{ 2128e745fdaSopenharmony_ci AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(netManagerExtParms, testNoPermission); 2138e745fdaSopenharmony_ci accessID_ = tokenIdEx.tokenIdExStruct.tokenID; 2148e745fdaSopenharmony_ci SetSelfTokenID(tokenIdEx.tokenIDEx); 2158e745fdaSopenharmony_ci} 2168e745fdaSopenharmony_ci 2178e745fdaSopenharmony_ciNoPermissionAccessToken::~NoPermissionAccessToken() 2188e745fdaSopenharmony_ci{ 2198e745fdaSopenharmony_ci AccessTokenKit::DeleteToken(accessID_); 2208e745fdaSopenharmony_ci SetSelfTokenID(currentID_); 2218e745fdaSopenharmony_ci} 2228e745fdaSopenharmony_ci} // namespace NetManagerStandard 2238e745fdaSopenharmony_ci} // namespace OHOS 224