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 GetPermissionUsedTypeInner(MessageParcel& data, MessageParcel& reply); 38 void VerifyAccessTokenInner(MessageParcel& data, MessageParcel& reply); 39 void VerifyAccessTokenWithListInner(MessageParcel& data, MessageParcel& reply); 40 void GetDefPermissionInner(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 RequestAppPermOnSettingInner(MessageParcel& data, MessageParcel& reply); 48 void GrantPermissionInner(MessageParcel& data, MessageParcel& reply); 49 void RevokePermissionInner(MessageParcel& data, MessageParcel& reply); 50 void GrantPermissionForSpecifiedTimeInner(MessageParcel& data, MessageParcel& reply); 51 void ClearUserGrantedPermissionStateInner(MessageParcel& data, MessageParcel& reply); 52 void AllocHapTokenInner(MessageParcel& data, MessageParcel& reply); 53 void InitHapTokenInner(MessageParcel& data, MessageParcel& reply); 54 void DeleteTokenInfoInner(MessageParcel& data, MessageParcel& reply); 55 void UpdateHapTokenInner(MessageParcel& data, MessageParcel& reply); 56 void GetTokenIDByUserIDInner(MessageParcel& data, MessageParcel& reply); 57 void GetHapTokenInfoInner(MessageParcel& data, MessageParcel& reply); 58 void GetNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); 59 void AllocLocalTokenIDInner(MessageParcel& data, MessageParcel& reply); 60 void GetHapTokenIDInner(MessageParcel& data, MessageParcel& reply); 61 void GetTokenTypeInner(MessageParcel& data, MessageParcel& reply); 62 void RegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 63 void UnRegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 64 void RegisterSelfPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 65 void UnRegisterSelfPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); 66 #ifndef ATM_BUILD_VARIANT_USER_ENABLE 67 void ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); 68 void DumpPermDefInfoInner(MessageParcel& data, MessageParcel& reply); 69 #endif 70 void GetHapTokenInfoExtensionInner(MessageParcel& data, MessageParcel& reply); 71 void GetNativeTokenIdInner(MessageParcel& data, MessageParcel& reply); 72 73 #ifdef TOKEN_SYNC_ENABLE 74 void GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply); 75 void SetRemoteHapTokenInfoInner(MessageParcel& data, MessageParcel& reply); 76 void DeleteRemoteTokenInner(MessageParcel& data, MessageParcel& reply); 77 void DeleteRemoteDeviceTokensInner(MessageParcel& data, MessageParcel& reply); 78 void GetRemoteNativeTokenIDInner(MessageParcel& data, MessageParcel& reply); 79 void RegisterTokenSyncCallbackInner(MessageParcel& data, MessageParcel& reply); 80 void UnRegisterTokenSyncCallbackInner(MessageParcel& data, MessageParcel& reply); 81 void SetTokenSyncFuncInMap(); 82 #endif 83 void SetPermissionOpFuncInMap(); 84 void SetLocalTokenOpFuncInMap(); 85 void DumpTokenInfoInner(MessageParcel& data, MessageParcel& reply); 86 void GetVersionInner(MessageParcel& data, MessageParcel& reply); 87 void SetPermDialogCapInner(MessageParcel& data, MessageParcel& reply); 88 void GetPermissionManagerInfoInner(MessageParcel& data, MessageParcel& reply); 89 void InitUserPolicyInner(MessageParcel& data, MessageParcel& reply); 90 void UpdateUserPolicyInner(MessageParcel& data, MessageParcel& reply); 91 void ClearUserPolicyInner(MessageParcel& data, MessageParcel& reply); 92 void GetReqPermissionByNameInner(MessageParcel& data, MessageParcel& reply); 93 void GetKernelPermissionsInner(MessageParcel& data, MessageParcel& reply); 94 95 bool IsPrivilegedCalling() const; 96 bool IsAccessTokenCalling(); 97 bool IsNativeProcessCalling(); 98 bool IsSystemAppCalling() const; 99 bool IsShellProcessCalling(); 100 #ifndef ATM_BUILD_VARIANT_USER_ENABLE 101 static const int32_t ROOT_UID = 0; 102 #endif 103 static const int32_t ACCESSTOKEN_UID = 3020; 104 105 AccessTokenID tokenSyncId_ = 0; 106 107 using RequestFuncType = void (AccessTokenManagerStub::*)(MessageParcel &data, MessageParcel &reply); 108 std::map<uint32_t, RequestFuncType> requestFuncMap_; 109 }; 110 } // namespace AccessToken 111 } // namespace Security 112 } // namespace OHOS 113 #endif // ACCESSTOKEN_MANAGER_STUB_H 114