• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 #include "pin_auth_driver_hdi.h"
17 
18 #include <vector>
19 
20 #include "refbase.h"
21 
22 #include "iam_check.h"
23 #include "iam_logger.h"
24 #include "iam_ptr.h"
25 
26 #include "load_mode_handler.h"
27 #include "pin_auth_all_in_one_hdi.h"
28 #include "pin_auth_collector_hdi.h"
29 #include "pin_auth_verifier_hdi.h"
30 
31 #define LOG_TAG "PIN_AUTH_SA"
32 
33 namespace OHOS {
34 namespace UserIam {
35 namespace PinAuth {
PinAuthDriverHdi(const std::shared_ptr<PinAuthInterfaceAdapter> & pinAuthInterfaceAdapter)36 PinAuthDriverHdi::PinAuthDriverHdi(const std::shared_ptr<PinAuthInterfaceAdapter> &pinAuthInterfaceAdapter)
37     : pinAuthInterfaceAdapter_(pinAuthInterfaceAdapter)
38 {
39 }
40 
GetAllInOneExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> & executorList,std::vector<sptr<IAllInOneExecutor>> & iAllInOneExecutorList)41 void PinAuthDriverHdi::GetAllInOneExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList,
42     std::vector<sptr<IAllInOneExecutor>> &iAllInOneExecutorList)
43 {
44     IAM_LOGI("get all in one size %{public}zu", iAllInOneExecutorList.size());
45     for (const auto &iAllInOne : iAllInOneExecutorList) {
46         if (iAllInOne == nullptr) {
47             IAM_LOGE("iAllInOne is nullptr");
48             continue;
49         }
50         auto executor = Common::MakeShared<PinAuthAllInOneHdi>(iAllInOne);
51         if (executor == nullptr) {
52             IAM_LOGE("make share failed");
53             continue;
54         }
55         executorList.push_back(executor);
56     }
57 }
58 
GetCollectorExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> & executorList,std::vector<sptr<ICollector>> & iCollectorList)59 void PinAuthDriverHdi::GetCollectorExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList,
60     std::vector<sptr<ICollector>> &iCollectorList)
61 {
62     IAM_LOGI("get collector size %{public}zu", iCollectorList.size());
63     for (const auto &iCollector : iCollectorList) {
64         if (iCollector == nullptr) {
65             IAM_LOGE("iCollector is nullptr");
66             continue;
67         }
68         auto executor = Common::MakeShared<PinAuthCollectorHdi>(iCollector);
69         if (executor == nullptr) {
70             IAM_LOGE("make share failed");
71             continue;
72         }
73         executorList.push_back(executor);
74     }
75 }
76 
GetVerifierExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> & executorList,std::vector<sptr<IVerifier>> & iVerifierList)77 void PinAuthDriverHdi::GetVerifierExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList,
78     std::vector<sptr<IVerifier>> &iVerifierList)
79 {
80     IAM_LOGI("get verifier size %{public}zu", iVerifierList.size());
81     for (const auto &iVerifier : iVerifierList) {
82         if (iVerifier == nullptr) {
83             IAM_LOGE("iVerifier is nullptr");
84             continue;
85         }
86         auto executor = Common::MakeShared<PinAuthVerifierHdi>(iVerifier);
87         if (executor == nullptr) {
88             IAM_LOGE("make share failed");
89             continue;
90         }
91         executorList.push_back(executor);
92     }
93 }
94 
GetExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> & executorList)95 void PinAuthDriverHdi::GetExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList)
96 {
97     IAM_LOGI("start");
98     if (pinAuthInterfaceAdapter_ == nullptr) {
99         IAM_LOGE("pinAuthInterfaceAdapter_ is null");
100         return;
101     }
102     auto pinInterface = pinAuthInterfaceAdapter_->Get();
103     if (pinInterface == nullptr) {
104         IAM_LOGE("IPinAuthInterface is null");
105         return;
106     }
107 
108     std::vector<sptr<ICollector>> iCollectorList;
109     std::vector<sptr<IVerifier>> iVerifierList;
110     std::vector<sptr<IAllInOneExecutor>> iAllInOneExecutorList;
111     auto ret = pinInterface->GetExecutorList(iAllInOneExecutorList, iVerifierList, iCollectorList);
112     if (ret != HDF_SUCCESS) {
113         IAM_LOGE("GetExecutorList fail");
114         return;
115     }
116     GetAllInOneExecutorList(executorList, iAllInOneExecutorList);
117     GetCollectorExecutorList(executorList, iCollectorList);
118     GetVerifierExecutorList(executorList, iVerifierList);
119     IAM_LOGI("get executor size %{public}zu", executorList.size());
120 }
121 
OnHdiDisconnect()122 void PinAuthDriverHdi::OnHdiDisconnect()
123 {
124     IAM_LOGI("start");
125 }
126 
OnFrameworkDown()127 void PinAuthDriverHdi::OnFrameworkDown()
128 {
129     IAM_LOGI("start");
130     LoadModeHandler::GetInstance().OnFrameworkDown();
131 }
132 } // namespace PinAuth
133 } // namespace UserIam
134 } // namespace OHOS