1/*
2 * Copyright (c) 2024 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 "data_access_token.h"
17
18#include <iostream>
19
20#include "nativetoken_kit.h"
21#include "token_setproc.h"
22
23namespace OHOS {
24namespace Telephony {
25using namespace Security::AccessToken;
26using Security::AccessToken::AccessTokenID;
27namespace {
28
29HapInfoParams testInfoParams = {
30    .bundleName = "tel_cellular_data_test",
31    .userID = 1,
32    .instIndex = 0,
33    .appIDDesc = "test",
34    .isSystemApp = true,
35};
36
37PermissionDef testPermGetNetworkInfoDef = {
38    .permissionName = "ohos.permission.GET_NETWORK_INFO",
39    .bundleName = "tel_cellular_data_test",
40    .grantMode = 1, // SYSTEM_GRANT
41    .label = "label",
42    .labelId = 1,
43    .description = "Test cellular data",
44    .descriptionId = 1,
45    .availableLevel = APL_SYSTEM_BASIC,
46};
47
48PermissionStateFull testGetNetworkInfoState = {
49    .grantFlags = { 2 }, // PERMISSION_USER_SET
50    .grantStatus = { PermissionState::PERMISSION_GRANTED },
51    .isGeneral = true,
52    .permissionName = "ohos.permission.GET_NETWORK_INFO",
53    .resDeviceID = { "local" },
54};
55
56PermissionDef testPermSetTelephonyStateDef = {
57    .permissionName = "ohos.permission.SET_TELEPHONY_STATE",
58    .bundleName = "tel_cellular_data_test",
59    .grantMode = 1, // SYSTEM_GRANT
60    .label = "label",
61    .labelId = 1,
62    .description = "Test cellular data",
63    .descriptionId = 1,
64    .availableLevel = APL_SYSTEM_BASIC,
65};
66
67PermissionStateFull testSetTelephonyState = {
68    .grantFlags = { 2 }, // PERMISSION_USER_SET
69    .grantStatus = { PermissionState::PERMISSION_GRANTED },
70    .isGeneral = true,
71    .permissionName = "ohos.permission.SET_TELEPHONY_STATE",
72    .resDeviceID = { "local" },
73};
74
75HapPolicyParams testPolicyParams = {
76    .apl = APL_SYSTEM_BASIC,
77    .domain = "test.domain",
78    .permList = { testPermGetNetworkInfoDef, testPermSetTelephonyStateDef },
79    .permStateList = { testGetNetworkInfoState, testSetTelephonyState },
80};
81} // namespace
82
83DataAccessToken::DataAccessToken()
84{
85    currentID_ = GetSelfTokenID();
86    AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(testInfoParams, testPolicyParams);
87    accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
88    SetSelfTokenID(tokenIdEx.tokenIDEx);
89}
90DataAccessToken::~DataAccessToken()
91{
92    AccessTokenKit::DeleteToken(accessID_);
93    SetSelfTokenID(currentID_);
94}
95} // namespace Telephony
96} // namespace OHOS