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