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 "useridm_adapter.h"
17 #include "useridm_hilog_wrapper.h"
18
19 namespace OHOS {
20 namespace UserIAM {
21 namespace UserIDM {
GetInstance()22 UserIDMAdapter &UserIDMAdapter::GetInstance()
23 {
24 static UserIDMAdapter instance;
25 return instance;
26 }
27
OpenEditSession(int32_t userId,uint64_t & challenge)28 void UserIDMAdapter::OpenEditSession(int32_t userId, uint64_t& challenge)
29 {
30 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter OpenEditSession start");
31 int32_t ret = OHOS::UserIAM::UserIDM::Hal::OpenSession(userId, challenge);
32 USERIDM_HILOGD(MODULE_SERVICE, "Call TA info: OpenSession: %{public}d", ret);
33 }
34
CloseEditSession()35 void UserIDMAdapter::CloseEditSession()
36 {
37 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter CloseEditSession start");
38 int32_t ret = OHOS::UserIAM::UserIDM::Hal::CloseSession();
39 USERIDM_HILOGD(MODULE_SERVICE, "Call TA info: CloseSession: %{public}d", ret);
40 }
41
QueryCredential(int32_t userId,AuthType authType,std::vector<OHOS::UserIAM::UserIDM::CredentialInfo> & credInfos)42 int32_t UserIDMAdapter::QueryCredential(int32_t userId, AuthType authType,
43 std::vector<OHOS::UserIAM::UserIDM::CredentialInfo>& credInfos)
44 {
45 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter QueryCredential start");
46 std::vector<OHOS::UserIAM::UserIDM::Hal::CredentialInfo> taInfos;
47 int32_t ret = OHOS::UserIAM::UserIDM::Hal::QueryCredential(userId, authType, taInfos);
48 if (ret != SUCCESS) {
49 USERIDM_HILOGE(MODULE_SERVICE, "call TA info error: %{public}d", ret);
50 return ret;
51 }
52
53 size_t vectorSize = taInfos.size();
54 if (vectorSize > 0) {
55 for (size_t i = 0; i < vectorSize; i++) {
56 OHOS::UserIAM::UserIDM::Hal::CredentialInfo taInfo = taInfos[i];
57 OHOS::UserIAM::UserIDM::CredentialInfo credInfo;
58 credInfo.authSubType = OHOS::UserIAM::UserIDM::AuthSubType(taInfo.authSubType);
59 credInfo.authType = OHOS::UserIAM::UserIDM::AuthType(taInfo.authType);
60 credInfo.credentialId = taInfo.credentialId;
61 credInfo.templateId = taInfo.templateId;
62 credInfos.push_back(credInfo);
63 }
64 } else {
65 USERIDM_HILOGE(MODULE_SERVICE, "vector size is: %{public}zu", vectorSize);
66 }
67 return ret;
68 }
69
GetSecureUid(int32_t userId,uint64_t & secureUid,std::vector<OHOS::UserIAM::UserIDM::EnrolledInfo> & enrolledInfos)70 int32_t UserIDMAdapter::GetSecureUid(int32_t userId, uint64_t& secureUid,
71 std::vector<OHOS::UserIAM::UserIDM::EnrolledInfo>& enrolledInfos)
72 {
73 USERIDM_HILOGI(MODULE_SERVICE, "UserIDMAdapter GetSecureUid start");
74
75 std::vector<OHOS::UserIAM::UserIDM::Hal::EnrolledInfo> taInfos;
76 int32_t ret = OHOS::UserIAM::UserIDM::Hal::GetSecureUid(userId, secureUid, taInfos);
77 if (ret != SUCCESS) {
78 USERIDM_HILOGE(MODULE_SERVICE, "Call TA info: GetSecureUid: %{public}d", ret);
79 return ret;
80 }
81 size_t vectorSize = taInfos.size();
82 if (vectorSize > 0) {
83 for (size_t i = 0; i < vectorSize; i++) {
84 OHOS::UserIAM::UserIDM::EnrolledInfo enrollInfo;
85 enrollInfo.authType = OHOS::UserIAM::UserIDM::AuthType(taInfos[i].authType);
86 enrollInfo.enrolledId = taInfos[i].enrolledId;
87 enrolledInfos.push_back(enrollInfo);
88 }
89 } else {
90 USERIDM_HILOGE(MODULE_SERVICE, "vector size is: %{public}zu", vectorSize);
91 }
92 return ret;
93 }
94
InitSchedulation(std::vector<uint8_t> autoToken,int32_t userId,AuthType authType,AuthSubType authSubType,uint64_t & sessionId)95 int32_t UserIDMAdapter::InitSchedulation(std::vector<uint8_t> autoToken, int32_t userId, AuthType authType,
96 AuthSubType authSubType, uint64_t& sessionId)
97 {
98 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter InitSchedulation start");
99 int32_t ret = OHOS::UserIAM::UserIDM::Hal::InitSchedulation(autoToken, userId, authType, authSubType, sessionId);
100 USERIDM_HILOGI(MODULE_SERVICE, "Call TA info: GetScheduleId: %{public}d", ret);
101 return ret;
102 }
103
DeleteCredential(int32_t userId,uint64_t credentialId,std::vector<uint8_t> authToken,OHOS::UserIAM::UserIDM::CredentialInfo & credInfo)104 int32_t UserIDMAdapter::DeleteCredential(int32_t userId, uint64_t credentialId, std::vector<uint8_t> authToken,
105 OHOS::UserIAM::UserIDM::CredentialInfo& credInfo)
106 {
107 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter DeleteCredential start");
108
109 OHOS::UserIAM::UserIDM::Hal::CredentialInfo taInfo;
110 int32_t ret = OHOS::UserIAM::UserIDM::Hal::DeleteCredential(userId, credentialId, authToken, taInfo);
111 if (ret != SUCCESS) {
112 USERIDM_HILOGE(MODULE_SERVICE, "get TA info error: %{public}d", ret);
113 return ret;
114 }
115 credInfo.authSubType = OHOS::UserIAM::UserIDM::AuthSubType(taInfo.authSubType);
116 credInfo.authType = OHOS::UserIAM::UserIDM::AuthType(taInfo.authType);
117 credInfo.credentialId = taInfo.credentialId;
118 credInfo.templateId = taInfo.templateId;
119 USERIDM_HILOGI(MODULE_SERVICE, "Call TA info: DeleteCredential: %{public}d", ret);
120
121 return ret;
122 }
123
DeleteUser(int32_t userId,std::vector<uint8_t> authToken,std::vector<OHOS::UserIAM::UserIDM::CredentialInfo> & credInfos)124 int32_t UserIDMAdapter::DeleteUser(int32_t userId, std::vector<uint8_t> authToken,
125 std::vector<OHOS::UserIAM::UserIDM::CredentialInfo>& credInfos)
126 {
127 USERIDM_HILOGI(MODULE_SERVICE, "UserIDMAdapter DeleteUser start");
128
129 std::vector<OHOS::UserIAM::UserIDM::Hal::CredentialInfo> taInfos;
130 int32_t ret = OHOS::UserIAM::UserIDM::Hal::DeleteUser(userId, authToken, taInfos);
131 if (ret != SUCCESS) {
132 USERIDM_HILOGE(MODULE_SERVICE, "get TA info error: %{public}d", ret);
133 return ret;
134 }
135 size_t vectorSize = taInfos.size();
136 USERIDM_HILOGI(MODULE_SERVICE, "taInfos.size() %{public}zu", vectorSize);
137 if (vectorSize > 0) {
138 for (size_t i = 0; i < vectorSize; i++) {
139 OHOS::UserIAM::UserIDM::CredentialInfo credInfo;
140 credInfo.authSubType = OHOS::UserIAM::UserIDM::AuthSubType(taInfos[i].authSubType);
141 credInfo.authType = OHOS::UserIAM::UserIDM::AuthType(taInfos[i].authType);
142 credInfo.credentialId = taInfos[i].credentialId;
143 credInfo.templateId = taInfos[i].templateId;
144 credInfos.push_back(credInfo);
145 }
146 } else {
147 USERIDM_HILOGE(MODULE_SERVICE, "vector size is wrong");
148 }
149
150 return ret;
151 }
152
DeleteUserEnforce(int32_t userId,std::vector<OHOS::UserIAM::UserIDM::CredentialInfo> & credInfos)153 int32_t UserIDMAdapter::DeleteUserEnforce(int32_t userId,
154 std::vector<OHOS::UserIAM::UserIDM::CredentialInfo>& credInfos)
155 {
156 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter DeleteUserEnforce start");
157
158 std::vector<OHOS::UserIAM::UserIDM::Hal::CredentialInfo> taInfos;
159 int32_t ret = OHOS::UserIAM::UserIDM::Hal::DeleteUserEnforce(userId, taInfos);
160 if (ret != SUCCESS) {
161 USERIDM_HILOGE(MODULE_SERVICE, "call TA info error: %{public}d", ret);
162 return ret;
163 }
164 size_t vectorSize = taInfos.size();
165 if (vectorSize > 0) {
166 for (size_t i = 0; i < vectorSize; i++) {
167 OHOS::UserIAM::UserIDM::CredentialInfo credInfo;
168 credInfo.authSubType = OHOS::UserIAM::UserIDM::AuthSubType(taInfos[i].authSubType);
169 credInfo.authType = OHOS::UserIAM::UserIDM::AuthType(taInfos[i].authType);
170 credInfo.credentialId = taInfos[i].credentialId;
171 credInfo.templateId = taInfos[i].templateId;
172 credInfos.push_back(credInfo);
173 }
174 } else {
175 USERIDM_HILOGE(MODULE_SERVICE, "vector size is wrong");
176 }
177 return ret;
178 }
179
AddCredential(std::vector<uint8_t> & enrollToken,uint64_t & credentialId)180 int32_t UserIDMAdapter::AddCredential(std::vector<uint8_t>& enrollToken, uint64_t& credentialId)
181 {
182 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter AddCredential start");
183
184 int32_t ret = OHOS::UserIAM::UserIDM::Hal::AddCredential(enrollToken, credentialId);
185 USERIDM_HILOGI(MODULE_SERVICE, "Call TA info: AddCredential: %{public}d", ret);
186
187 return ret;
188 }
189
UpdateCredential(std::vector<uint8_t> enrollToken,uint64_t & credentialId,CredentialInfo & deletedCredential)190 int32_t UserIDMAdapter::UpdateCredential(std::vector<uint8_t> enrollToken, uint64_t &credentialId,
191 CredentialInfo &deletedCredential)
192 {
193 USERIDM_HILOGD(MODULE_SERVICE, "UserIDMAdapter UpdateCredential start");
194
195 OHOS::UserIAM::UserIDM::Hal::CredentialInfo taInfo;
196 int32_t ret = OHOS::UserIAM::UserIDM::Hal::UpdateCredential(enrollToken, credentialId, taInfo);
197 if (ret == SUCCESS) {
198 deletedCredential.authSubType = OHOS::UserIAM::UserIDM::AuthSubType(taInfo.authSubType);
199 deletedCredential.authType = OHOS::UserIAM::UserIDM::AuthType(taInfo.authType);
200 deletedCredential.credentialId = taInfo.credentialId;
201 deletedCredential.templateId = taInfo.templateId;
202 } else {
203 USERIDM_HILOGE(MODULE_SERVICE, "Call TA info: UpdateCredential: %{public}d", ret);
204 }
205
206 return ret;
207 }
208 } // namespace UserIDM
209 } // namespace UserIAM
210 } // namespace OHOS