1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd.
3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License.
5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at
6e5d0e473Sopenharmony_ci *
7e5d0e473Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5d0e473Sopenharmony_ci *
9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and
13e5d0e473Sopenharmony_ci * limitations under the License.
14e5d0e473Sopenharmony_ci */
15e5d0e473Sopenharmony_ci
16e5d0e473Sopenharmony_ci#ifndef ACCESS_MMS_TOKEN_H
17e5d0e473Sopenharmony_ci#define ACCESS_MMS_TOKEN_H
18e5d0e473Sopenharmony_ci
19e5d0e473Sopenharmony_ci#include "accesstoken_kit.h"
20e5d0e473Sopenharmony_ci#include "token_setproc.h"
21e5d0e473Sopenharmony_ci
22e5d0e473Sopenharmony_cinamespace OHOS {
23e5d0e473Sopenharmony_cinamespace Telephony {
24e5d0e473Sopenharmony_ciusing namespace Security::AccessToken;
25e5d0e473Sopenharmony_ciusing Security::AccessToken::AccessTokenID;
26e5d0e473Sopenharmony_ci
27e5d0e473Sopenharmony_ciclass AccessMmsToken {
28e5d0e473Sopenharmony_ci    HapInfoParams testMmsInfoParams = {
29e5d0e473Sopenharmony_ci        .userID = 1,
30e5d0e473Sopenharmony_ci        .bundleName = "tel_sms_mms_test",
31e5d0e473Sopenharmony_ci        .instIndex = 0,
32e5d0e473Sopenharmony_ci        .appIDDesc = "test",
33e5d0e473Sopenharmony_ci        .isSystemApp = true,
34e5d0e473Sopenharmony_ci    };
35e5d0e473Sopenharmony_ci    PermissionDef testPermReceiveSmsDef = {
36e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.RECEIVE_SMS",
37e5d0e473Sopenharmony_ci        .bundleName = "tel_sms_mms_test",
38e5d0e473Sopenharmony_ci        .grantMode = 1, // SYSTEM_GRANT
39e5d0e473Sopenharmony_ci        .availableLevel = APL_SYSTEM_BASIC,
40e5d0e473Sopenharmony_ci        .label = "label",
41e5d0e473Sopenharmony_ci        .labelId = 1,
42e5d0e473Sopenharmony_ci        .description = "Test sms manager",
43e5d0e473Sopenharmony_ci        .descriptionId = 1,
44e5d0e473Sopenharmony_ci    };
45e5d0e473Sopenharmony_ci    PermissionStateFull testReceiveSmsState = {
46e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.RECEIVE_SMS",
47e5d0e473Sopenharmony_ci        .isGeneral = true,
48e5d0e473Sopenharmony_ci        .resDeviceID = { "local" },
49e5d0e473Sopenharmony_ci        .grantStatus = { PermissionState::PERMISSION_GRANTED },
50e5d0e473Sopenharmony_ci        .grantFlags = { 2 }, // PERMISSION_USER_SET
51e5d0e473Sopenharmony_ci    };
52e5d0e473Sopenharmony_ci    PermissionDef testPermSendSmsDef = {
53e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.SEND_MESSAGES",
54e5d0e473Sopenharmony_ci        .bundleName = "tel_sms_mms_test",
55e5d0e473Sopenharmony_ci        .grantMode = 1, // SYSTEM_GRANT
56e5d0e473Sopenharmony_ci        .availableLevel = APL_SYSTEM_BASIC,
57e5d0e473Sopenharmony_ci        .label = "label",
58e5d0e473Sopenharmony_ci        .labelId = 1,
59e5d0e473Sopenharmony_ci        .description = "Test sms manager",
60e5d0e473Sopenharmony_ci        .descriptionId = 1,
61e5d0e473Sopenharmony_ci    };
62e5d0e473Sopenharmony_ci    PermissionStateFull testSendSmsState = {
63e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.SEND_MESSAGES",
64e5d0e473Sopenharmony_ci        .isGeneral = true,
65e5d0e473Sopenharmony_ci        .resDeviceID = { "local" },
66e5d0e473Sopenharmony_ci        .grantStatus = { PermissionState::PERMISSION_GRANTED },
67e5d0e473Sopenharmony_ci        .grantFlags = { 2 }, // PERMISSION_USER_SET
68e5d0e473Sopenharmony_ci    };
69e5d0e473Sopenharmony_ci    PermissionDef testPermSetTelephonyDef = {
70e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.SET_TELEPHONY_STATE",
71e5d0e473Sopenharmony_ci        .bundleName = "tel_sms_mms_test",
72e5d0e473Sopenharmony_ci        .grantMode = 1, // SYSTEM_GRANT
73e5d0e473Sopenharmony_ci        .availableLevel = APL_SYSTEM_BASIC,
74e5d0e473Sopenharmony_ci        .label = "label",
75e5d0e473Sopenharmony_ci        .labelId = 1,
76e5d0e473Sopenharmony_ci        .description = "Test sms manager",
77e5d0e473Sopenharmony_ci        .descriptionId = 1,
78e5d0e473Sopenharmony_ci    };
79e5d0e473Sopenharmony_ci    PermissionStateFull testSetTelephonyState = {
80e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.SET_TELEPHONY_STATE",
81e5d0e473Sopenharmony_ci        .isGeneral = true,
82e5d0e473Sopenharmony_ci        .resDeviceID = { "local" },
83e5d0e473Sopenharmony_ci        .grantStatus = { PermissionState::PERMISSION_GRANTED },
84e5d0e473Sopenharmony_ci        .grantFlags = { 2 }, // PERMISSION_USER_SET
85e5d0e473Sopenharmony_ci    };
86e5d0e473Sopenharmony_ci
87e5d0e473Sopenharmony_ci    PermissionDef testPermGetTelephonyDef = {
88e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.GET_TELEPHONY_STATE",
89e5d0e473Sopenharmony_ci        .bundleName = "tel_sms_mms_test",
90e5d0e473Sopenharmony_ci        .grantMode = 1, // SYSTEM_GRANT
91e5d0e473Sopenharmony_ci        .availableLevel = APL_SYSTEM_BASIC,
92e5d0e473Sopenharmony_ci        .label = "label",
93e5d0e473Sopenharmony_ci        .labelId = 1,
94e5d0e473Sopenharmony_ci        .description = "Test sms manager",
95e5d0e473Sopenharmony_ci        .descriptionId = 1,
96e5d0e473Sopenharmony_ci    };
97e5d0e473Sopenharmony_ci    PermissionStateFull testGetTelephonyState = {
98e5d0e473Sopenharmony_ci        .permissionName = "ohos.permission.GET_TELEPHONY_STATE",
99e5d0e473Sopenharmony_ci        .isGeneral = true,
100e5d0e473Sopenharmony_ci        .resDeviceID = { "local" },
101e5d0e473Sopenharmony_ci        .grantStatus = { PermissionState::PERMISSION_GRANTED },
102e5d0e473Sopenharmony_ci        .grantFlags = { 2 }, // PERMISSION_USER_SET
103e5d0e473Sopenharmony_ci    };
104e5d0e473Sopenharmony_ci    HapPolicyParams testMmsPolicyParams = {
105e5d0e473Sopenharmony_ci        .apl = APL_SYSTEM_BASIC,
106e5d0e473Sopenharmony_ci        .domain = "test.domain",
107e5d0e473Sopenharmony_ci        .permList = { testPermReceiveSmsDef, testPermSendSmsDef, testPermSetTelephonyDef, testPermGetTelephonyDef },
108e5d0e473Sopenharmony_ci        .permStateList = { testReceiveSmsState, testSendSmsState, testSetTelephonyState, testGetTelephonyState },
109e5d0e473Sopenharmony_ci    };
110e5d0e473Sopenharmony_ci
111e5d0e473Sopenharmony_cipublic:
112e5d0e473Sopenharmony_ci    AccessMmsToken()
113e5d0e473Sopenharmony_ci    {
114e5d0e473Sopenharmony_ci        currentID_ = GetSelfTokenID();
115e5d0e473Sopenharmony_ci        AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(testMmsInfoParams, testMmsPolicyParams);
116e5d0e473Sopenharmony_ci        accessID_ = tokenIdEx.tokenIdExStruct.tokenID;
117e5d0e473Sopenharmony_ci        SetSelfTokenID(tokenIdEx.tokenIDEx);
118e5d0e473Sopenharmony_ci    }
119e5d0e473Sopenharmony_ci    ~AccessMmsToken()
120e5d0e473Sopenharmony_ci    {
121e5d0e473Sopenharmony_ci        AccessTokenKit::DeleteToken(accessID_);
122e5d0e473Sopenharmony_ci        SetSelfTokenID(currentID_);
123e5d0e473Sopenharmony_ci    }
124e5d0e473Sopenharmony_ci
125e5d0e473Sopenharmony_ciprivate:
126e5d0e473Sopenharmony_ci    AccessTokenID currentID_ = 0;
127e5d0e473Sopenharmony_ci    AccessTokenID accessID_ = 0;
128e5d0e473Sopenharmony_ci};
129e5d0e473Sopenharmony_ci} // namespace Telephony
130e5d0e473Sopenharmony_ci} // namespace OHOS
131e5d0e473Sopenharmony_ci#endif