1 /*
2 * Copyright (c) 2022 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 "accesstoken_kit.h"
17
18 namespace OHOS {
19 namespace Security {
20 namespace AccessToken {
21 #ifdef BUNDLE_PERMISSION_DEF_LIST
22 #ifdef BUNDLE_PERMISSION_DEF_TRUE
23 static constexpr int GRANT_STATUS = 100;
24 #endif
25 #endif
AllocHapToken(const HapInfoParams & info,const HapPolicyParams & policy)26 AccessTokenIDEx AccessTokenKit::AllocHapToken(const HapInfoParams& info, const HapPolicyParams& policy)
27 {
28 AccessTokenIDEx token;
29 token.tokenIDEx = 1;
30 token.tokenIdExStruct.tokenID = 1;
31 token.tokenIdExStruct.tokenAttr = 1;
32 return token;
33 }
34
35 #ifdef BUNDLE_PERMISSION_START_FULL_FALSE
GetDefPermissions(AccessTokenID tokenID,std::vector<PermissionDef> & permList)36 int AccessTokenKit::GetDefPermissions(AccessTokenID tokenID, std::vector<PermissionDef>& permList)
37 {
38 #ifdef BUNDLE_PERMISSION_DEF_TRUE
39 PermissionDef PermissionDef;
40 PermissionDef.permissionName = "testName";
41 permList.push_back(PermissionDef);
42 return 0;
43 #else
44 return -1;
45 #endif
46 }
47 #else
GetDefPermissions(AccessTokenID tokenID,std::vector<PermissionDef> & permList)48 int AccessTokenKit::GetDefPermissions(AccessTokenID tokenID, std::vector<PermissionDef>& permList)
49 {
50 return 0;
51 }
52 #endif
53
54
55 #ifdef BUNDLE_PERMISSION_DEF_LIST
GetReqPermissions(AccessTokenID tokenID,std::vector<PermissionStateFull> & reqPermList,bool isSystemGrant)56 int AccessTokenKit::GetReqPermissions(AccessTokenID tokenID, std::vector<PermissionStateFull>& reqPermList,
57 bool isSystemGrant)
58 {
59 #ifdef BUNDLE_PERMISSION_DEF_TRUE
60 PermissionStateFull permissionStateFull;
61 permissionStateFull.permissionName = "testName";
62 permissionStateFull.resDeviceID.push_back("100");
63 permissionStateFull.grantStatus.push_back(GRANT_STATUS);
64 reqPermList.push_back(permissionStateFull);
65 return 0;
66 #else
67 return -1;
68 #endif
69 }
70
GrantPermission(AccessTokenID tokenID,const std::string & permissionName,uint32_t flag)71 int AccessTokenKit::GrantPermission(AccessTokenID tokenID, const std::string& permissionName, uint32_t flag)
72 {
73 return 1;
74 }
75
VerifyAccessToken(AccessTokenID tokenID,const std::string & permissionName)76 int AccessTokenKit::VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName)
77 {
78 #ifdef BUNDLE_PERMISSION_DEF_TRUE
79 if (permissionName == "testName") {
80 return 0;
81 } else {
82 return -1;
83 }
84 #else
85 return -1;
86 #endif
87 }
88
GetDefPermission(const std::string & permissionName,PermissionDef & permissionDefResult)89 int AccessTokenKit::GetDefPermission(const std::string& permissionName, PermissionDef& permissionDefResult)
90 {
91 return 0;
92 }
93
GetTokenTypeFlag(AccessTokenID tokenID)94 ATokenTypeEnum AccessTokenKit::GetTokenTypeFlag(AccessTokenID tokenID)
95 {
96 return TOKEN_SHELL;
97 }
98 #else
GetReqPermissions(AccessTokenID tokenID,std::vector<PermissionStateFull> & reqPermList,bool isSystemGrant)99 int AccessTokenKit::GetReqPermissions(AccessTokenID tokenID, std::vector<PermissionStateFull>& reqPermList,
100 bool isSystemGrant)
101 {
102 return 0;
103 }
104
GrantPermission(AccessTokenID tokenID,const std::string & permissionName,uint32_t flag)105 int AccessTokenKit::GrantPermission(AccessTokenID tokenID, const std::string& permissionName, uint32_t flag)
106 {
107 return 0;
108 }
109
VerifyAccessToken(AccessTokenID tokenID,const std::string & permissionName)110 int AccessTokenKit::VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName)
111 {
112 return 0;
113 }
114
GetDefPermission(const std::string & permissionName,PermissionDef & permissionDefResult)115 int AccessTokenKit::GetDefPermission(const std::string& permissionName, PermissionDef& permissionDefResult)
116 {
117 return -1;
118 }
119
GetTokenTypeFlag(AccessTokenID tokenID)120 ATokenTypeEnum AccessTokenKit::GetTokenTypeFlag(AccessTokenID tokenID)
121 {
122 #ifdef BUNDLE_FRAMEWORK_SYSTEM_APP_FALSE
123 return TOKEN_INVALID;
124 #else
125 return TOKEN_NATIVE;
126 #endif
127 }
128 #endif
129
VerifyAccessToken(AccessTokenID callerTokenID,AccessTokenID firstTokenID,const std::string & permissionName)130 int AccessTokenKit::VerifyAccessToken(
131 AccessTokenID callerTokenID, AccessTokenID firstTokenID, const std::string& permissionName)
132 {
133 return 0;
134 }
135
DeleteToken(AccessTokenID tokenID)136 int AccessTokenKit::DeleteToken(AccessTokenID tokenID)
137 {
138 return 0;
139 }
140
ClearUserGrantedPermissionState(AccessTokenID tokenID)141 int AccessTokenKit::ClearUserGrantedPermissionState(AccessTokenID tokenID)
142 {
143 return 0;
144 }
145
GetHapTokenID(int userID,const std::string & bundleName,int instIndex)146 AccessTokenID AccessTokenKit::GetHapTokenID(int userID, const std::string& bundleName, int instIndex)
147 {
148 return 0;
149 }
150
GetHapTokenIDEx(int userID,const std::string & bundleName,int instIndex)151 AccessTokenIDEx AccessTokenKit::GetHapTokenIDEx(int userID, const std::string& bundleName, int instIndex)
152 {
153 AccessTokenIDEx tokenIdEx;
154 return tokenIdEx;
155 }
156
GetNativeTokenInfo(AccessTokenID tokenID,NativeTokenInfo & nativeTokenInfo)157 int AccessTokenKit::GetNativeTokenInfo(AccessTokenID tokenID, NativeTokenInfo &nativeTokenInfo)
158 {
159 nativeTokenInfo.processName = "foundation";
160 return 0;
161 }
162
InitHapToken(const HapInfoParams & info,HapPolicyParams & policy,AccessTokenIDEx & fullTokenId)163 int32_t AccessTokenKit::InitHapToken(const HapInfoParams& info, HapPolicyParams& policy, AccessTokenIDEx& fullTokenId)
164 {
165 fullTokenId.tokenIDEx = 1;
166 return 0;
167 }
168
UpdateHapToken(AccessTokenIDEx & tokenIdEx,const UpdateHapInfoParams & info,const HapPolicyParams & policy)169 int32_t AccessTokenKit::UpdateHapToken(
170 AccessTokenIDEx& tokenIdEx, const UpdateHapInfoParams& info, const HapPolicyParams& policy)
171 {
172 if (info.isSystemApp) {
173 tokenIdEx.tokenIdExStruct.tokenAttr = 1;
174 } else {
175 tokenIdEx.tokenIdExStruct.tokenAttr = 0;
176 }
177 return 0;
178 }
179 }
180 }
181 }