1 /* 2 * Copyright (c) 2022-2023 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 OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_ACCOUNT_IAM_CALLBACK_H 17 #define OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_ACCOUNT_IAM_CALLBACK_H 18 19 #include <map> 20 #include <vector> 21 #include "account_iam_info.h" 22 #include "domain_account_callback.h" 23 #include "iaccount_iam_callback.h" 24 #include "iremote_object.h" 25 26 namespace OHOS { 27 namespace AccountSA { 28 class AuthCallbackDeathRecipient : public IRemoteObject::DeathRecipient { 29 public: 30 AuthCallbackDeathRecipient() = default; 31 ~AuthCallbackDeathRecipient() override = default; 32 33 void SetContextId(uint16_t context); 34 void OnRemoteDied(const wptr<IRemoteObject> &remote) override; 35 36 private: 37 uint64_t contextId_ = 0; 38 }; 39 40 class AuthCallback : public AuthenticationCallback { 41 public: 42 AuthCallback(uint32_t userId, AuthType authType, const sptr<IIDMCallback> &callback); 43 virtual ~AuthCallback() = default; 44 45 void SetDeathRecipient(const sptr<AuthCallbackDeathRecipient> &deathRecipient); 46 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) override; 47 void OnResult(int32_t result, const Attributes &extraInfo) override; 48 49 private: 50 ErrCode HandleAuthResult(const Attributes &extraInfo); 51 52 private: 53 uint32_t userId_; 54 AuthType authType_; 55 sptr<IIDMCallback> innerCallback_ = nullptr; 56 sptr<AuthCallbackDeathRecipient> deathRecipient_ = nullptr; 57 bool isAccountVerified_ = false; 58 }; 59 60 class IDMAuthCallback : public AuthenticationCallback { 61 public: 62 IDMAuthCallback(uint32_t userId, uint64_t credentialId, uint64_t secureUid, const sptr<IIDMCallback> &idmCallback); 63 virtual ~IDMAuthCallback() = default; 64 65 void OnResult(int32_t result, const Attributes &extraInfo) override; 66 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) override; 67 68 private: 69 uint32_t userId_ = 0; 70 uint64_t credentialId_ = 0; 71 uint64_t secureUid_ = 0; 72 sptr<IIDMCallback> idmCallback_ = nullptr; 73 }; 74 75 class AddCredCallback : public UserIdmClientCallback { 76 public: 77 AddCredCallback(uint32_t userId, const CredentialParameters &credInfo, 78 const sptr<IIDMCallback> &callback); 79 virtual ~AddCredCallback() = default; 80 81 void OnResult(int32_t result, const Attributes &extraInfo) override; 82 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) override; 83 84 private: 85 std::uint32_t userId_; 86 CredentialParameters credInfo_; 87 sptr<IIDMCallback> innerCallback_ = nullptr; 88 }; 89 90 class UpdateCredCallback : public UserIdmClientCallback { 91 public: 92 UpdateCredCallback(uint32_t userId, const CredentialParameters &credInfo, 93 const sptr<IIDMCallback> &callback); 94 virtual ~UpdateCredCallback() = default; 95 96 void OnResult(int32_t result, const Attributes &extraInfo) override; 97 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) override; 98 99 private: 100 std::uint32_t userId_; 101 std::vector<uint8_t> oldCredential_; 102 CredentialParameters credInfo_; 103 const sptr<IIDMCallback> innerCallback_ = nullptr; 104 }; 105 106 class DelCredCallback : public UserIdmClientCallback { 107 public: 108 DelCredCallback(int32_t userId, bool isPIN, const sptr<IIDMCallback> &callback); 109 virtual ~DelCredCallback() = default; 110 111 void OnResult(int32_t result, const Attributes &extraInfo) override; 112 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) override; 113 114 private: 115 int32_t userId_; 116 bool isPIN_; 117 sptr<IIDMCallback> innerCallback_ = nullptr; 118 }; 119 120 class GetCredInfoCallbackWrapper : public GetCredentialInfoCallback { 121 public: 122 GetCredInfoCallbackWrapper(int32_t userId, int32_t authType, const sptr<IGetCredInfoCallback> &callback); 123 virtual ~GetCredInfoCallbackWrapper() = default; 124 125 void OnCredentialInfo(const std::vector<CredentialInfo> &infoList) override; 126 127 private: 128 int32_t userId_; 129 int32_t authType_; 130 sptr<IGetCredInfoCallback> innerCallback_ = nullptr; 131 }; 132 133 class GetPropCallbackWrapper : public GetPropCallback { 134 public: 135 GetPropCallbackWrapper(int32_t userId, const sptr<IGetSetPropCallback> &callback); 136 virtual ~GetPropCallbackWrapper() = default; 137 138 void OnResult(int32_t result, const Attributes &extraInfo) override; 139 140 private: 141 int32_t userId_; 142 sptr<IGetSetPropCallback> innerCallback_; 143 }; 144 145 class SetPropCallbackWrapper : public SetPropCallback { 146 public: 147 SetPropCallbackWrapper(int32_t userId, const sptr<IGetSetPropCallback> &callback); 148 virtual ~SetPropCallbackWrapper() = default; 149 150 void OnResult(int32_t result, const Attributes &extraInfo) override; 151 152 private: 153 int32_t userId_; 154 sptr<IGetSetPropCallback> innerCallback_; 155 }; 156 157 class GetDomainAuthStatusInfoCallback final : public DomainAccountCallback { 158 public: 159 GetDomainAuthStatusInfoCallback(const GetPropertyRequest &request, const sptr<IGetSetPropCallback> &callback); 160 161 void OnResult(int32_t result, Parcel &parcel) override; 162 163 private: 164 GetPropertyRequest request_; 165 sptr<IGetSetPropCallback> innerCallback_; 166 }; 167 } // namespace AccountSA 168 } // namespace OHOS 169 #endif // OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_ACCOUNT_IAM_CALLBACK_H 170