1c5e268c6Sopenharmony_ci/*
2c5e268c6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3c5e268c6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c5e268c6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c5e268c6Sopenharmony_ci * You may obtain a copy of the License at
6c5e268c6Sopenharmony_ci *
7c5e268c6Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c5e268c6Sopenharmony_ci *
9c5e268c6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c5e268c6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c5e268c6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c5e268c6Sopenharmony_ci * See the License for the specific language governing permissions and
13c5e268c6Sopenharmony_ci * limitations under the License.
14c5e268c6Sopenharmony_ci */
15c5e268c6Sopenharmony_ci
16c5e268c6Sopenharmony_ci/**
17c5e268c6Sopenharmony_ci * @addtogroup HdfUserAuth
18c5e268c6Sopenharmony_ci * @{
19c5e268c6Sopenharmony_ci *
20c5e268c6Sopenharmony_ci * @brief Provides APIs for the user_auth driver.
21c5e268c6Sopenharmony_ci *
22c5e268c6Sopenharmony_ci * The user_auth driver provides a unified interface for the user_auth service to access the user_auth driver.
23c5e268c6Sopenharmony_ci * After obtaining the user_auth driver proxy, the service can call related APIs to register executors,
24c5e268c6Sopenharmony_ci * manage credentials, and complete password and biometric authentication.
25c5e268c6Sopenharmony_ci * @since 3.2
26c5e268c6Sopenharmony_ci * @version 1.0
27c5e268c6Sopenharmony_ci */
28c5e268c6Sopenharmony_ci
29c5e268c6Sopenharmony_ci/**
30c5e268c6Sopenharmony_ci * @file IUserAuthInterface.idl
31c5e268c6Sopenharmony_ci *
32c5e268c6Sopenharmony_ci * @brief Declares the user_auth driver APIs, which can be used to register executors,
33c5e268c6Sopenharmony_ci * manage credentials, and complete password and biometric authentication.
34c5e268c6Sopenharmony_ci *
35c5e268c6Sopenharmony_ci * @since 3.2
36c5e268c6Sopenharmony_ci * @version 1.0
37c5e268c6Sopenharmony_ci */
38c5e268c6Sopenharmony_ci
39c5e268c6Sopenharmony_cipackage ohos.hdi.user_auth.v2_0;
40c5e268c6Sopenharmony_ci
41c5e268c6Sopenharmony_ciimport ohos.hdi.user_auth.v2_0.UserAuthTypes;
42c5e268c6Sopenharmony_ciimport ohos.hdi.user_auth.v2_0.IMessageCallback;
43c5e268c6Sopenharmony_ci
44c5e268c6Sopenharmony_ci/**
45c5e268c6Sopenharmony_ci * @brief Declares the APIs of the user_auth driver.
46c5e268c6Sopenharmony_ci *
47c5e268c6Sopenharmony_ci * @since 3.2
48c5e268c6Sopenharmony_ci * @version 1.0
49c5e268c6Sopenharmony_ci */
50c5e268c6Sopenharmony_ciinterface IUserAuthInterface {
51c5e268c6Sopenharmony_ci    /**
52c5e268c6Sopenharmony_ci     * @brief Initializes the cache information of the user_auth driver.
53c5e268c6Sopenharmony_ci     *
54c5e268c6Sopenharmony_ci     * @param deviceUdid Indicates the device udid.
55c5e268c6Sopenharmony_ci     *
56c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
57c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
58c5e268c6Sopenharmony_ci     *
59c5e268c6Sopenharmony_ci     * @since 3.2
60c5e268c6Sopenharmony_ci     * @version 2.0
61c5e268c6Sopenharmony_ci     */
62c5e268c6Sopenharmony_ci    Init([in] String deviceUdid);
63c5e268c6Sopenharmony_ci    /**
64c5e268c6Sopenharmony_ci     * @brief Adds an authentication executor to obtain the authentication capability.
65c5e268c6Sopenharmony_ci     *
66c5e268c6Sopenharmony_ci     * @param info Indicates executor registration information. See {@link ExecutorRegisterInfo}.
67c5e268c6Sopenharmony_ci     * @param index Indicates the executor index under the authentication framework.
68c5e268c6Sopenharmony_ci     * @param publicKey Indicates the public key of the authentication framework.
69c5e268c6Sopenharmony_ci     * @param templateIds Indicates template IDs enrolled by the executors.
70c5e268c6Sopenharmony_ci     *
71c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
72c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
73c5e268c6Sopenharmony_ci     *
74c5e268c6Sopenharmony_ci     * @since 3.2
75c5e268c6Sopenharmony_ci     * @version 1.0
76c5e268c6Sopenharmony_ci     */
77c5e268c6Sopenharmony_ci    AddExecutor([in] struct ExecutorRegisterInfo info, [out] unsigned long index,
78c5e268c6Sopenharmony_ci        [out] unsigned char[] publicKey, [out] unsigned long[] templateIds);
79c5e268c6Sopenharmony_ci    /**
80c5e268c6Sopenharmony_ci     * @brief Deletes an executor.
81c5e268c6Sopenharmony_ci     *
82c5e268c6Sopenharmony_ci     * @param index Indicates the executor index under the authentication framework.
83c5e268c6Sopenharmony_ci     *
84c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
85c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
86c5e268c6Sopenharmony_ci     *
87c5e268c6Sopenharmony_ci     * @since 3.2
88c5e268c6Sopenharmony_ci     * @version 1.0
89c5e268c6Sopenharmony_ci     */
90c5e268c6Sopenharmony_ci    DeleteExecutor([in] unsigned long index);
91c5e268c6Sopenharmony_ci    /**
92c5e268c6Sopenharmony_ci     * @brief Opens a session for authentication credential management.
93c5e268c6Sopenharmony_ci     *
94c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
95c5e268c6Sopenharmony_ci     * @param challenge Indicates the random number, which is used to generate an authentication token.
96c5e268c6Sopenharmony_ci     *
97c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
98c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
99c5e268c6Sopenharmony_ci     *
100c5e268c6Sopenharmony_ci     * @since 3.2
101c5e268c6Sopenharmony_ci     * @version 1.0
102c5e268c6Sopenharmony_ci     */
103c5e268c6Sopenharmony_ci    OpenSession([in] int userId, [out] unsigned char[] challenge);
104c5e268c6Sopenharmony_ci    /**
105c5e268c6Sopenharmony_ci     * @brief Closes the authentication credential management session.
106c5e268c6Sopenharmony_ci     *
107c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
108c5e268c6Sopenharmony_ci     *
109c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
110c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
111c5e268c6Sopenharmony_ci     *
112c5e268c6Sopenharmony_ci     * @since 3.2
113c5e268c6Sopenharmony_ci     * @version 1.0
114c5e268c6Sopenharmony_ci     */
115c5e268c6Sopenharmony_ci    CloseSession([in] int userId);
116c5e268c6Sopenharmony_ci    /**
117c5e268c6Sopenharmony_ci     * @brief Updates the enrollment result and completes the enrollment.
118c5e268c6Sopenharmony_ci     *
119c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
120c5e268c6Sopenharmony_ci     * @param scheduleResult Indicates the enrollment result issued by the executor.
121c5e268c6Sopenharmony_ci     * @param info Indicates the enrollment result. See {@link EnrollResultInfo}.
122c5e268c6Sopenharmony_ci     *
123c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
124c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
125c5e268c6Sopenharmony_ci     *
126c5e268c6Sopenharmony_ci     * @since 3.2
127c5e268c6Sopenharmony_ci     * @version 1.0
128c5e268c6Sopenharmony_ci     */
129c5e268c6Sopenharmony_ci    UpdateEnrollmentResult([in] int userId, [in] unsigned char[] scheduleResult, [out] struct EnrollResultInfo info);
130c5e268c6Sopenharmony_ci    /**
131c5e268c6Sopenharmony_ci     * @brief Cancels an enrollment.
132c5e268c6Sopenharmony_ci     *
133c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
134c5e268c6Sopenharmony_ci     *
135c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
136c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
137c5e268c6Sopenharmony_ci     *
138c5e268c6Sopenharmony_ci     * @since 3.2
139c5e268c6Sopenharmony_ci     * @version 1.0
140c5e268c6Sopenharmony_ci     */
141c5e268c6Sopenharmony_ci    CancelEnrollment([in] int userId);
142c5e268c6Sopenharmony_ci    /**
143c5e268c6Sopenharmony_ci     * @brief Deletes credential information.
144c5e268c6Sopenharmony_ci     *
145c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
146c5e268c6Sopenharmony_ci     * @param credentialId Indicates the credential index.
147c5e268c6Sopenharmony_ci     * @param authToken Indicates the authentication token of the user password.
148c5e268c6Sopenharmony_ci     * @param info Indicates the credential information to delete. See {@link CredentialInfo}.
149c5e268c6Sopenharmony_ci     *
150c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
151c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
152c5e268c6Sopenharmony_ci     *
153c5e268c6Sopenharmony_ci     * @since 3.2
154c5e268c6Sopenharmony_ci     * @version 1.0
155c5e268c6Sopenharmony_ci     */
156c5e268c6Sopenharmony_ci    DeleteCredential([in] int userId, [in] unsigned long credentialId, [in] unsigned char[] authToken,
157c5e268c6Sopenharmony_ci        [out] struct CredentialInfo info);
158c5e268c6Sopenharmony_ci    /**
159c5e268c6Sopenharmony_ci     * @brief Obtains credential information.
160c5e268c6Sopenharmony_ci     *
161c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
162c5e268c6Sopenharmony_ci     * @param authType Indicates the authentication type. See {@link AuthType}.
163c5e268c6Sopenharmony_ci     * @param infos Indicates credential information. See {@link CredentialInfo}.
164c5e268c6Sopenharmony_ci     *
165c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
166c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
167c5e268c6Sopenharmony_ci     *
168c5e268c6Sopenharmony_ci     * @since 3.2
169c5e268c6Sopenharmony_ci     * @version 2.0
170c5e268c6Sopenharmony_ci     */
171c5e268c6Sopenharmony_ci    GetCredential([in] int userId, [in] int authType, [out] struct CredentialInfo[] infos);
172c5e268c6Sopenharmony_ci    /**
173c5e268c6Sopenharmony_ci     * @brief Obtains user information.
174c5e268c6Sopenharmony_ci     *
175c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
176c5e268c6Sopenharmony_ci     * @param secureUid Indicates the secure user ID.
177c5e268c6Sopenharmony_ci     * @param pinSubType Indicates the sub type of PIN authentication. See {@link PinSubType}.
178c5e268c6Sopenharmony_ci     * @param infos Indicates enrolled information. See {@link EnrolledInfo}.
179c5e268c6Sopenharmony_ci     *
180c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
181c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
182c5e268c6Sopenharmony_ci     *
183c5e268c6Sopenharmony_ci     * @since 3.2
184c5e268c6Sopenharmony_ci     * @version 2.0
185c5e268c6Sopenharmony_ci     */
186c5e268c6Sopenharmony_ci    GetUserInfo([in] int userId, [out] unsigned long secureUid, [out] int pinSubType,
187c5e268c6Sopenharmony_ci        [out] struct EnrolledInfo[] infos);
188c5e268c6Sopenharmony_ci    /**
189c5e268c6Sopenharmony_ci     * @brief Deletes a pin and a user from the IAM subsystem.
190c5e268c6Sopenharmony_ci     *
191c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
192c5e268c6Sopenharmony_ci     * @param authToken Indicates the authentication token of the user password.
193c5e268c6Sopenharmony_ci     * @param deletedInfos Indicates the credential information to delete. See {@link CredentialInfo}.
194c5e268c6Sopenharmony_ci     * @param rootSecret protection key for the user file key.
195c5e268c6Sopenharmony_ci     *
196c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
197c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
198c5e268c6Sopenharmony_ci     *
199c5e268c6Sopenharmony_ci     * @since 3.2
200c5e268c6Sopenharmony_ci     * @version 2.0
201c5e268c6Sopenharmony_ci     */
202c5e268c6Sopenharmony_ci    DeleteUser([in] int userId, [in] unsigned char[] authToken, [out] struct CredentialInfo[] deletedInfos,
203c5e268c6Sopenharmony_ci        [out] unsigned char[] rootSecret);
204c5e268c6Sopenharmony_ci    /**
205c5e268c6Sopenharmony_ci     * @brief Forcibly deletes a user.
206c5e268c6Sopenharmony_ci     *
207c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
208c5e268c6Sopenharmony_ci     * @param deletedInfos Indicates the credential information to delete. See {@link CredentialInfo}.
209c5e268c6Sopenharmony_ci     *
210c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
211c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
212c5e268c6Sopenharmony_ci     *
213c5e268c6Sopenharmony_ci     * @since 3.2
214c5e268c6Sopenharmony_ci     * @version 1.0
215c5e268c6Sopenharmony_ci     */
216c5e268c6Sopenharmony_ci    EnforceDeleteUser([in] int userId, [out] struct CredentialInfo[] deletedInfos);
217c5e268c6Sopenharmony_ci    /**
218c5e268c6Sopenharmony_ci     * @brief Updates the authentication result, and evaluates the result of the authentication solution.
219c5e268c6Sopenharmony_ci     *
220c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
221c5e268c6Sopenharmony_ci     * @param scheduleResult Indicates the authentication result issued by the executor.
222c5e268c6Sopenharmony_ci     * @param info Indicates authentication result information. See {@link AuthResultInfo}.
223c5e268c6Sopenharmony_ci     * @param enrolledState EnrolledID information.
224c5e268c6Sopenharmony_ci     *
225c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
226c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
227c5e268c6Sopenharmony_ci     *
228c5e268c6Sopenharmony_ci     * @since 3.2
229c5e268c6Sopenharmony_ci     * @version 2.0
230c5e268c6Sopenharmony_ci     */
231c5e268c6Sopenharmony_ci    UpdateAuthenticationResult([in] unsigned long contextId, [in] unsigned char[] scheduleResult,
232c5e268c6Sopenharmony_ci        [out] struct AuthResultInfo info, [out] EnrolledState enrolledState);
233c5e268c6Sopenharmony_ci    /**
234c5e268c6Sopenharmony_ci     * @brief Cancels authentication.
235c5e268c6Sopenharmony_ci     *
236c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
237c5e268c6Sopenharmony_ci     *
238c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
239c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
240c5e268c6Sopenharmony_ci     *
241c5e268c6Sopenharmony_ci     * @since 3.2
242c5e268c6Sopenharmony_ci     * @version 1.0
243c5e268c6Sopenharmony_ci     */
244c5e268c6Sopenharmony_ci    CancelAuthentication([in] unsigned long contextId);
245c5e268c6Sopenharmony_ci    /**
246c5e268c6Sopenharmony_ci     * @brief Updates the identification result, and evaluates the result of the identification solution.
247c5e268c6Sopenharmony_ci     *
248c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
249c5e268c6Sopenharmony_ci     * @param scheduleResult Indicates the identification result issued by the executor.
250c5e268c6Sopenharmony_ci     * @param info Indicates identification result information. See {@link IdentifyResultInfo}.
251c5e268c6Sopenharmony_ci     *
252c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
253c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
254c5e268c6Sopenharmony_ci     *
255c5e268c6Sopenharmony_ci     * @since 3.2
256c5e268c6Sopenharmony_ci     * @version 1.0
257c5e268c6Sopenharmony_ci     */
258c5e268c6Sopenharmony_ci    UpdateIdentificationResult([in] unsigned long contextId, [in] unsigned char[] scheduleResult,
259c5e268c6Sopenharmony_ci        [out] struct IdentifyResultInfo info);
260c5e268c6Sopenharmony_ci    /**
261c5e268c6Sopenharmony_ci     * @brief Cancels identification.
262c5e268c6Sopenharmony_ci     *
263c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
264c5e268c6Sopenharmony_ci     *
265c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
266c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
267c5e268c6Sopenharmony_ci     *
268c5e268c6Sopenharmony_ci     * @since 3.2
269c5e268c6Sopenharmony_ci     * @version 1.0
270c5e268c6Sopenharmony_ci     */
271c5e268c6Sopenharmony_ci    CancelIdentification([in] unsigned long contextId);
272c5e268c6Sopenharmony_ci    /**
273c5e268c6Sopenharmony_ci     * @brief Check whether the authentication capability is avaliable.
274c5e268c6Sopenharmony_ci     *
275c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
276c5e268c6Sopenharmony_ci     * @param authType Indicates the authentication type. See {@link AuthType}.
277c5e268c6Sopenharmony_ci     * @param authTrustLevel Indicates the authentication trust level.
278c5e268c6Sopenharmony_ci     * @param checkResult Indicates check result.
279c5e268c6Sopenharmony_ci     *
280c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
281c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
282c5e268c6Sopenharmony_ci     *
283c5e268c6Sopenharmony_ci     * @since 5.0
284c5e268c6Sopenharmony_ci     * @version 1.0
285c5e268c6Sopenharmony_ci     */
286c5e268c6Sopenharmony_ci    GetAvailableStatus([in] int userId, [in] int authType, [in] unsigned int authTrustLevel, [out] int checkResult);
287c5e268c6Sopenharmony_ci    /**
288c5e268c6Sopenharmony_ci     * @brief Obtains the valid authentication methods under the current authentication trust level.
289c5e268c6Sopenharmony_ci     *
290c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
291c5e268c6Sopenharmony_ci     * @param authTypes Indicates the authentication types to be filtered. See {@link AuthType}.
292c5e268c6Sopenharmony_ci     * @param authTrustLevel Indicates the authentication trust level.
293c5e268c6Sopenharmony_ci     * @param validTypes Indicates the valid authentication types. See {@link AuthType}.
294c5e268c6Sopenharmony_ci     *
295c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
296c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
297c5e268c6Sopenharmony_ci     *
298c5e268c6Sopenharmony_ci     * @since 3.2
299c5e268c6Sopenharmony_ci     * @version 2.0
300c5e268c6Sopenharmony_ci     */
301c5e268c6Sopenharmony_ci    GetValidSolution([in] int userId, [in] int[] authTypes, [in] unsigned int authTrustLevel,
302c5e268c6Sopenharmony_ci        [out] int[] validTypes);
303c5e268c6Sopenharmony_ci    /**
304c5e268c6Sopenharmony_ci     * @brief Begins authentication, and generates the authentication solution.
305c5e268c6Sopenharmony_ci     *
306c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
307c5e268c6Sopenharmony_ci     * @param param Indicates input parameters. See {@link AuthParam}.
308c5e268c6Sopenharmony_ci     * @param scheduleInfos Indicates scheduling information. See {@link ScheduleInfo}.
309c5e268c6Sopenharmony_ci     *
310c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
311c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
312c5e268c6Sopenharmony_ci     *
313c5e268c6Sopenharmony_ci     * @since 3.2
314c5e268c6Sopenharmony_ci     * @version 2.0
315c5e268c6Sopenharmony_ci     */
316c5e268c6Sopenharmony_ci    BeginAuthentication([in] unsigned long contextId, [in] struct AuthParam param,
317c5e268c6Sopenharmony_ci        [out] struct ScheduleInfo[] scheduleInfos);
318c5e268c6Sopenharmony_ci    /**
319c5e268c6Sopenharmony_ci     * @brief Begins the enrollment of authentication credentials.
320c5e268c6Sopenharmony_ci     * If the authentication type is PIN, this method updates the existing PIN credential.
321c5e268c6Sopenharmony_ci     *
322c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
323c5e268c6Sopenharmony_ci     * @param authToken Indicates the authentication token of the user password.
324c5e268c6Sopenharmony_ci     * @param param Indicates input parameters. See {@link EnrollParam}.
325c5e268c6Sopenharmony_ci     * @param info Indicates scheduling information. See {@link ScheduleInfo}.
326c5e268c6Sopenharmony_ci     *
327c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
328c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
329c5e268c6Sopenharmony_ci     *
330c5e268c6Sopenharmony_ci     * @since 3.2
331c5e268c6Sopenharmony_ci     * @version 2.0
332c5e268c6Sopenharmony_ci     */
333c5e268c6Sopenharmony_ci    BeginEnrollment([in] unsigned char[] authToken, [in] struct EnrollParam param,
334c5e268c6Sopenharmony_ci        [out] struct ScheduleInfo info);
335c5e268c6Sopenharmony_ci    /**
336c5e268c6Sopenharmony_ci     * @brief Begins identification, and generates the identification solution.
337c5e268c6Sopenharmony_ci     *
338c5e268c6Sopenharmony_ci     * @param contextId Indicates the context index.
339c5e268c6Sopenharmony_ci     * @param authType Indicates the identification type. See @{AuthType}.
340c5e268c6Sopenharmony_ci     * @param challenge Indicates the identification challenge.
341c5e268c6Sopenharmony_ci     * @param executorSensorHint Indicates the executor sensor hint.
342c5e268c6Sopenharmony_ci     * The value <b>0</b> indicates that no value is specified.
343c5e268c6Sopenharmony_ci     * @param scheduleInfo Indicates scheduling information. See {@link ScheduleInfo}.
344c5e268c6Sopenharmony_ci     *
345c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
346c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
347c5e268c6Sopenharmony_ci     *
348c5e268c6Sopenharmony_ci     * @since 3.2
349c5e268c6Sopenharmony_ci     * @version 2.0
350c5e268c6Sopenharmony_ci     */
351c5e268c6Sopenharmony_ci    BeginIdentification([in] unsigned long contextId, [in] int authType, [in] unsigned char[] challenge,
352c5e268c6Sopenharmony_ci        [in] unsigned int executorSensorHint, [out] struct ScheduleInfo scheduleInfo);
353c5e268c6Sopenharmony_ci    /**
354c5e268c6Sopenharmony_ci     * @brief Get all enrolled user information.
355c5e268c6Sopenharmony_ci     *
356c5e268c6Sopenharmony_ci     * @param userInfos List of all userInfo. See @{UserInfo}.
357c5e268c6Sopenharmony_ci     *
358c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
359c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
360c5e268c6Sopenharmony_ci     *
361c5e268c6Sopenharmony_ci     * @since 4.0
362c5e268c6Sopenharmony_ci     * @version 1.0
363c5e268c6Sopenharmony_ci     */
364c5e268c6Sopenharmony_ci    GetAllUserInfo([out] UserInfo[] userInfos);
365c5e268c6Sopenharmony_ci    /**
366c5e268c6Sopenharmony_ci     * @brief Get all credential of enrolled users.
367c5e268c6Sopenharmony_ci     *
368c5e268c6Sopenharmony_ci     * @param userInfos List of all users. See @{ExtUserInfo}.
369c5e268c6Sopenharmony_ci     *
370c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
371c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
372c5e268c6Sopenharmony_ci     *
373c5e268c6Sopenharmony_ci     * @since 4.0
374c5e268c6Sopenharmony_ci     * @version 1.0
375c5e268c6Sopenharmony_ci     */
376c5e268c6Sopenharmony_ci    GetAllExtUserInfo([out] ExtUserInfo[] userInfos);
377c5e268c6Sopenharmony_ci
378c5e268c6Sopenharmony_ci    /**
379c5e268c6Sopenharmony_ci     * @brief Querying EnrolledId information.
380c5e268c6Sopenharmony_ci     *
381c5e268c6Sopenharmony_ci     * @param userId Indicates the user ID.
382c5e268c6Sopenharmony_ci     * @param authType Indicates the identification type. See @{AuthType}.
383c5e268c6Sopenharmony_ci     * @param enrolledState Enrolled state.
384c5e268c6Sopenharmony_ci     *
385c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
386c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
387c5e268c6Sopenharmony_ci     *
388c5e268c6Sopenharmony_ci     * @since 5.0
389c5e268c6Sopenharmony_ci     * @version 1.0
390c5e268c6Sopenharmony_ci     */
391c5e268c6Sopenharmony_ci    GetEnrolledState([in] int userId, [in] int authType, [out] struct EnrolledState enrolledState);
392c5e268c6Sopenharmony_ci
393c5e268c6Sopenharmony_ci    /**
394c5e268c6Sopenharmony_ci     * @brief Check if unlock result can be reused and return token.
395c5e268c6Sopenharmony_ci     *
396c5e268c6Sopenharmony_ci     * @param info Request information of reused unLock result. See {@link ReuseUnlockParam}.
397c5e268c6Sopenharmony_ci     * @param reuseInfo Reuse unlock info. See {@link ReuseUnlockInfo}.
398c5e268c6Sopenharmony_ci     *
399c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
400c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
401c5e268c6Sopenharmony_ci     *
402c5e268c6Sopenharmony_ci     * @since 5.0
403c5e268c6Sopenharmony_ci     * @version 1.0
404c5e268c6Sopenharmony_ci     */
405c5e268c6Sopenharmony_ci    CheckReuseUnlockResult([in] struct ReuseUnlockParam reuseParam, [out] ReuseUnlockInfo reuseInfo);
406c5e268c6Sopenharmony_ci    /**
407c5e268c6Sopenharmony_ci     * @brief Send message.
408c5e268c6Sopenharmony_ci     *
409c5e268c6Sopenharmony_ci     * @param scheduleId Indicates the schedule ID of the message.
410c5e268c6Sopenharmony_ci     * @param srcRole is the role of source. See {@link ExecutorRole}.
411c5e268c6Sopenharmony_ci     * @param msg is the message content.
412c5e268c6Sopenharmony_ci     *
413c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
414c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
415c5e268c6Sopenharmony_ci     *
416c5e268c6Sopenharmony_ci     * @since 5.0
417c5e268c6Sopenharmony_ci     * @version 1.0
418c5e268c6Sopenharmony_ci     */
419c5e268c6Sopenharmony_ci    SendMessage([in] unsigned long scheduleId, [in] int srcRole, [in] unsigned char[] msg);
420c5e268c6Sopenharmony_ci    /**
421c5e268c6Sopenharmony_ci     * @brief Register message callback.
422c5e268c6Sopenharmony_ci     *
423c5e268c6Sopenharmony_ci     * @param messageCallback Indicates the message callback. See {@link IMessageCallback}.
424c5e268c6Sopenharmony_ci     *
425c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
426c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
427c5e268c6Sopenharmony_ci     *
428c5e268c6Sopenharmony_ci     * @since 5.0
429c5e268c6Sopenharmony_ci     * @version 1.0
430c5e268c6Sopenharmony_ci     */
431c5e268c6Sopenharmony_ci    RegisterMessageCallback([in] IMessageCallback messageCallback);
432c5e268c6Sopenharmony_ci    /**
433c5e268c6Sopenharmony_ci     * @brief Prepare remote auth.
434c5e268c6Sopenharmony_ci     *
435c5e268c6Sopenharmony_ci     * @param remoteUdid Indicates the remote device udid.
436c5e268c6Sopenharmony_ci     *
437c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
438c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
439c5e268c6Sopenharmony_ci     *
440c5e268c6Sopenharmony_ci     * @since 5.0
441c5e268c6Sopenharmony_ci     * @version 1.0
442c5e268c6Sopenharmony_ci     */
443c5e268c6Sopenharmony_ci    PrepareRemoteAuth([in] String remoteUdid);
444c5e268c6Sopenharmony_ci    /**
445c5e268c6Sopenharmony_ci     * @brief Get local schedule from message.
446c5e268c6Sopenharmony_ci     *
447c5e268c6Sopenharmony_ci     * @param remoteUdid Indicates the remote device udid.
448c5e268c6Sopenharmony_ci     * @param message is message received.
449c5e268c6Sopenharmony_ci     * @param scheduleInfo is schedule info. See {@link ScheduleInfo}.
450c5e268c6Sopenharmony_ci     *
451c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
452c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
453c5e268c6Sopenharmony_ci     *
454c5e268c6Sopenharmony_ci     * @since 5.0
455c5e268c6Sopenharmony_ci     * @version 1.0
456c5e268c6Sopenharmony_ci     */
457c5e268c6Sopenharmony_ci    GetLocalScheduleFromMessage([in] String remoteUdid, [in] unsigned char[] message, [out] ScheduleInfo scheduleInfo);
458c5e268c6Sopenharmony_ci    /**
459c5e268c6Sopenharmony_ci     * @brief Get signed executor info.
460c5e268c6Sopenharmony_ci     *
461c5e268c6Sopenharmony_ci     * @param authTypes Indicates the auth types. See @{AuthType}.
462c5e268c6Sopenharmony_ci     * @param executorRole Indicates the role of executor. See {@link ExecutorRole}.
463c5e268c6Sopenharmony_ci     * @param remoteUdid Indicates the remote device udid.
464c5e268c6Sopenharmony_ci     * @param signedExecutorInfo Indicates the signed executor info.
465c5e268c6Sopenharmony_ci     *
466c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
467c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
468c5e268c6Sopenharmony_ci     *
469c5e268c6Sopenharmony_ci     * @since 5.0
470c5e268c6Sopenharmony_ci     * @version 1.0
471c5e268c6Sopenharmony_ci     */
472c5e268c6Sopenharmony_ci    GetSignedExecutorInfo([in] int[] authTypes, [in] int executorRole, [in] String remoteUdid,
473c5e268c6Sopenharmony_ci        [out] unsigned char[] signedExecutorInfo);
474c5e268c6Sopenharmony_ci    /**
475c5e268c6Sopenharmony_ci     * @brief Get auth result from message.
476c5e268c6Sopenharmony_ci     *
477c5e268c6Sopenharmony_ci     * @param remoteUdid Indicates the remote device udid.
478c5e268c6Sopenharmony_ci     * @param message is message received.
479c5e268c6Sopenharmony_ci     * @param authResultInfo Indicates authentication result information. See {@link AuthResultInfo}.
480c5e268c6Sopenharmony_ci     *
481c5e268c6Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
482c5e268c6Sopenharmony_ci     * @return Returns a non-zero value if the operation fails.
483c5e268c6Sopenharmony_ci     *
484c5e268c6Sopenharmony_ci     * @since 5.0
485c5e268c6Sopenharmony_ci     * @version 1.0
486c5e268c6Sopenharmony_ci     */
487c5e268c6Sopenharmony_ci     GetAuthResultFromMessage([in] String remoteUdid, [in] unsigned char[] message, [out] struct AuthResultInfo authResultInfo);
488c5e268c6Sopenharmony_ci    /**
489c5e268c6Sopenharmony_ci     * @brief Set global config param.
490c5e268c6Sopenharmony_ci     *
491c5e268c6Sopenharmony_ci     * @param param The value of global config parameter. See @{GlobalConfigParam}.
492c5e268c6Sopenharmony_ci     * @return Return set result(0:success; other:failed).
493c5e268c6Sopenharmony_ci     *
494c5e268c6Sopenharmony_ci     * @since 5.0
495c5e268c6Sopenharmony_ci     * @version 1.0
496c5e268c6Sopenharmony_ci     */
497c5e268c6Sopenharmony_ci    SetGlobalConfigParam([in] GlobalConfigParam param);
498c5e268c6Sopenharmony_ci}
499c5e268c6Sopenharmony_ci/** @} */
500