1 /* 2 * Copyright (c) 2021-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 #ifndef ACCESSTOKEN_MANAGER_STUB_H 17 #define ACCESSTOKEN_MANAGER_STUB_H 18 19 #include <map> 20 21 #include "i_accesstoken_manager.h" 22 23 #include "iremote_stub.h" 24 #include "nocopyable.h" 25 26 namespace OHOS { 27 namespace Security { 28 namespace AccessToken { 29 class AccessTokenManagerStub : public IRemoteStub<IAccessTokenManager> { 30 public: 31 AccessTokenManagerStub(); 32 virtual ~AccessTokenManagerStub(); 33 34 int OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& options) override; 35 36 private: 37 void GetUserGrantedPermissionUsedTypeInner(MessageParcel& data, MessageParcel& reply); 38 void VerifyAccessTokenInner(MessageParcel& data, MessageParcel& reply); 39 void GetDefPermissionInner(MessageParcel& data, MessageParcel& reply); 40 void GetDefPermissionsInner(MessageParcel& data, MessageParcel& reply); 41 void GetReqPermissionsInner(MessageParcel& data, MessageParcel& reply); 42 void GetSelfPermissionsStateInner(MessageParcel& data, MessageParcel& reply); 43 void GetPermissionsStatusInner(MessageParcel& data, MessageParcel& reply); 44 void GetPermissionFlagInner(MessageParcel& data, MessageParcel& reply); 45 void SetPermissionRequestToggleStatusInner(MessageParcel& data, MessageParcel& reply); 46 void GetPermissionRequestToggleStatusInner(MessageParcel& data, MessageParcel& reply); 47 void GrantPermissionInner(MessageParcel& data, MessageParcel& reply); 48 void RevokePermissionInner(MessageParcel& data, MessageParcel& reply); 49 void GrantPermissionForSpecifiedTimeInner(MessageParcel& data, MessageParcel& reply); 50 void ClearUserGrantedPermissionStateInner(MessageParcel& data, MessageParcel& reply); 51 void AllocHapTokenInner(MessageParcel& data, MessageParcel& reply); 52 void InitHapTokenInner(MessageParcel& data, MessageParcel& reply); 53 void DeleteTokenInfoInner(MessageParcel& data, MessageParcel& reply); 54 void UpdateHapTokenInner(MessageParcel& data, MessageParcel& reply); 55 void GetHapTokenInfoInner(MessageParcel& data, MessageParcel& reply); 56 void GetNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); 57 void AllocLocalTokenIDInner(MessageParcel& data, MessageParcel& reply); 58 void GetHapTokenIDInner(MessageParcel& data, MessageParcel& reply); 59 void CheckNativeDCapInner(MessageParcel& data, MessageParcel& reply); 60 void GetTokenTypeInner(MessageParcel& data, MessageParcel& reply); 61 void RegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 62 void UnRegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 63 #ifndef ATM_BUILD_VARIANT_USER_ENABLE 64 void ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); 65 void DumpPermDefInfoInner(MessageParcel& data, MessageParcel& reply); 66 #endif 67 void GetNativeTokenIdInner(MessageParcel& data, MessageParcel& reply); 68 69 #ifdef TOKEN_SYNC_ENABLE 70 void GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply); 71 void SetRemoteHapTokenInfoInner(MessageParcel& data, MessageParcel& reply); 72 void DeleteRemoteTokenInner(MessageParcel& data, MessageParcel& reply); 73 void DeleteRemoteDeviceTokensInner(MessageParcel& data, MessageParcel& reply); 74 void GetRemoteNativeTokenIDInner(MessageParcel& data, MessageParcel& reply); 75 void RegisterTokenSyncCallbackInner(MessageParcel& data, MessageParcel& reply); 76 void UnRegisterTokenSyncCallbackInner(MessageParcel& data, MessageParcel& reply); 77 void SetTokenSyncFuncInMap(); 78 #endif 79 void SetPermissionOpFuncInMap(); 80 void SetLocalTokenOpFuncInMap(); 81 void DumpTokenInfoInner(MessageParcel& data, MessageParcel& reply); 82 void GetVersionInner(MessageParcel& data, MessageParcel& reply); 83 void SetPermDialogCapInner(MessageParcel& data, MessageParcel& reply); 84 void GetPermissionManagerInfoInner(MessageParcel& data, MessageParcel& reply); 85 86 bool IsPrivilegedCalling() const; 87 bool IsAccessTokenCalling(); 88 bool IsNativeProcessCalling(); 89 bool IsSystemAppCalling() const; 90 bool IsShellProcessCalling(); 91 #ifndef ATM_BUILD_VARIANT_USER_ENABLE 92 static const int32_t ROOT_UID = 0; 93 #endif 94 static const int32_t ACCESSTOKEN_UID = 3020; 95 96 AccessTokenID tokenSyncId_ = 0; 97 98 using RequestFuncType = void (AccessTokenManagerStub::*)(MessageParcel &data, MessageParcel &reply); 99 std::map<uint32_t, RequestFuncType> requestFuncMap_; 100 }; 101 } // namespace AccessToken 102 } // namespace Security 103 } // namespace OHOS 104 #endif // ACCESSTOKEN_MANAGER_STUB_H 105