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 }