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 "authface_userIDM_helper.h"
17 #include <iremote_broker.h>
18 #include "useridm_info.h"
19 #include "useridm_hilog_wrapper.h"
20 #include "useridentity_manager.h"
21
22 namespace OHOS {
23 namespace UserIAM {
24 namespace UserIDM {
UserIdentityManagerConstructor(napi_env env,napi_callback_info info)25 napi_value UserIdentityManagerConstructor(napi_env env, napi_callback_info info)
26 {
27 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
28 UserIdentityManager *userIdentityManager = new (std::nothrow) UserIdentityManager();
29 if (userIdentityManager == nullptr) {
30 USERIDM_HILOGE(MODULE_JS_NAPI, "%{public}s, get nullptr", __func__);
31 return nullptr;
32 }
33
34 napi_value thisVar = nullptr;
35 size_t argc = 1;
36 napi_value argv[1] = {nullptr};
37 NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
38 NAPI_CALL(env, napi_wrap(
39 env, thisVar, userIdentityManager,
40 [](napi_env env, void *data, void *hint) {
41 UserIdentityManager *userIdentityManager = static_cast<UserIdentityManager *>(data);
42 if (userIdentityManager != nullptr) {
43 delete userIdentityManager;
44 }
45 },
46 nullptr, nullptr));
47 return thisVar;
48 }
49
OpenSession(napi_env env,napi_callback_info info)50 napi_value OpenSession(napi_env env, napi_callback_info info)
51 {
52 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
53 napi_value thisVar = nullptr;
54 size_t argcAsync = 0;
55 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
56 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
57 UserIdentityManager *userIdentityManager = nullptr;
58 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
59 if (userIdentityManager == nullptr) {
60 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper OpenSession error");
61 return nullptr;
62 }
63
64 return userIdentityManager->NAPI_OpenSession(env, info);
65 }
66
AddCredential(napi_env env,napi_callback_info info)67 napi_value AddCredential(napi_env env, napi_callback_info info)
68 {
69 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
70 napi_value thisVar = nullptr;
71 size_t argcAsync = 0;
72 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
73 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
74 UserIdentityManager *userIdentityManager = nullptr;
75 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
76 if (userIdentityManager == nullptr) {
77 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper AddCredential error");
78 return nullptr;
79 }
80
81 return userIdentityManager->NAPI_AddCredential(env, info);
82 }
83
UpdateCredential(napi_env env,napi_callback_info info)84 napi_value UpdateCredential(napi_env env, napi_callback_info info)
85 {
86 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
87 napi_value thisVar = nullptr;
88 size_t argcAsync = 0;
89 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
90 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
91 UserIdentityManager *userIdentityManager = nullptr;
92 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
93 if (userIdentityManager == nullptr) {
94 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper UpdateCredential error");
95 return nullptr;
96 }
97
98 return userIdentityManager->NAPI_UpdateCredential(env, info);
99 }
100
CloseSession(napi_env env,napi_callback_info info)101 napi_value CloseSession(napi_env env, napi_callback_info info)
102 {
103 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
104 napi_value thisVar = nullptr;
105 size_t argcAsync = 0;
106 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
107 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
108 UserIdentityManager *userIdentityManager = nullptr;
109 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
110 if (userIdentityManager == nullptr) {
111 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper CloseSession error");
112 return nullptr;
113 }
114
115 return userIdentityManager->NAPI_CloseSession(env, info);
116 }
117
Cancel(napi_env env,napi_callback_info info)118 napi_value Cancel(napi_env env, napi_callback_info info)
119 {
120 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
121 napi_value thisVar = nullptr;
122 size_t argcAsync = 0;
123 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
124 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
125 UserIdentityManager *userIdentityManager = nullptr;
126 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
127 if (userIdentityManager == nullptr) {
128 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper Cancel error");
129 return nullptr;
130 }
131
132 return userIdentityManager->NAPI_Cancel(env, info);
133 }
134
DelUser(napi_env env,napi_callback_info info)135 napi_value DelUser(napi_env env, napi_callback_info info)
136 {
137 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
138 napi_value thisVar = nullptr;
139 size_t argcAsync = 0;
140 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
141 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
142 UserIdentityManager *userIdentityManager = nullptr;
143 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
144 if (userIdentityManager == nullptr) {
145 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper DelUser error");
146 return nullptr;
147 }
148
149 return userIdentityManager->NAPI_DelUser(env, info);
150 }
151
DelCred(napi_env env,napi_callback_info info)152 napi_value DelCred(napi_env env, napi_callback_info info)
153 {
154 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
155 napi_value thisVar = nullptr;
156 size_t argcAsync = 0;
157 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
158 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
159 UserIdentityManager *userIdentityManager = nullptr;
160 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
161 if (userIdentityManager == nullptr) {
162 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper DelCred error");
163 return nullptr;
164 }
165
166 return userIdentityManager->NAPI_DelCred(env, info);
167 }
168
GetAuthInfo(napi_env env,napi_callback_info info)169 napi_value GetAuthInfo(napi_env env, napi_callback_info info)
170 {
171 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
172 napi_value thisVar = nullptr;
173 size_t argcAsync = 0;
174 napi_value argv[ARGS_MAX_COUNT] = {nullptr};
175 NAPI_CALL(env, napi_get_cb_info(env, info, &argcAsync, argv, &thisVar, nullptr));
176 UserIdentityManager *userIdentityManager = nullptr;
177 NAPI_CALL(env, napi_unwrap(env, thisVar, (void **)&userIdentityManager));
178 if (userIdentityManager == nullptr) {
179 USERIDM_HILOGE(MODULE_JS_NAPI, "userIDM_helper GetAuthInfo error");
180 return nullptr;
181 }
182
183 return userIdentityManager->NAPI_GetAuthInfo(env, info);
184 }
185
AuthFaceInit(napi_env env,napi_value exports)186 napi_value AuthFaceInit(napi_env env, napi_value exports)
187 {
188 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
189 napi_status status = napi_set_named_property(env, exports, "UserIdentityManager", GetCtor(env));
190 if (status != napi_ok) {
191 USERIDM_HILOGE(MODULE_JS_NAPI, "napi_set_named_property failed");
192 }
193 return exports;
194 }
195
AuthTypeConstructor(napi_env env)196 napi_value AuthTypeConstructor(napi_env env)
197 {
198 napi_value authType = nullptr;
199 napi_value pin = nullptr;
200 napi_value face = nullptr;
201 NAPI_CALL(env, napi_create_object(env, &authType));
202 NAPI_CALL(env, napi_create_int32(env, AuthType::PIN, &pin));
203 NAPI_CALL(env, napi_create_int32(env, AuthType::FACE, &face));
204 NAPI_CALL(env, napi_set_named_property(env, authType, "PIN", pin));
205 NAPI_CALL(env, napi_set_named_property(env, authType, "FACE", face));
206 return authType;
207 }
208
AuthSubTypeConstructor(napi_env env)209 napi_value AuthSubTypeConstructor(napi_env env)
210 {
211 napi_value authSubType = nullptr;
212 napi_value pinSix = nullptr;
213 napi_value pinNumber = nullptr;
214 napi_value pinMixed = nullptr;
215 napi_value face2d = nullptr;
216 napi_value face3d = nullptr;
217 NAPI_CALL(env, napi_create_object(env, &authSubType));
218 NAPI_CALL(env, napi_create_int32(env, AuthSubType::PIN_SIX, &pinSix));
219 NAPI_CALL(env, napi_create_int32(env, AuthSubType::PIN_NUMBER, &pinNumber));
220 NAPI_CALL(env, napi_create_int32(env, AuthSubType::PIN_MIXED, &pinMixed));
221 NAPI_CALL(env, napi_create_int32(env, AuthSubType::FACE_2D, &face2d));
222 NAPI_CALL(env, napi_create_int32(env, AuthSubType::FACE_3D, &face3d));
223 NAPI_CALL(env, napi_set_named_property(env, authSubType, "PIN_SIX", pinSix));
224 NAPI_CALL(env, napi_set_named_property(env, authSubType, "PIN_NUMBER", pinNumber));
225 NAPI_CALL(env, napi_set_named_property(env, authSubType, "PIN_MIXED", pinMixed));
226 NAPI_CALL(env, napi_set_named_property(env, authSubType, "FACE_2D", face2d));
227 NAPI_CALL(env, napi_set_named_property(env, authSubType, "FACE_3D", face3d));
228 return authSubType;
229 }
230
EnumExport(napi_env env,napi_value exports)231 napi_value EnumExport(napi_env env, napi_value exports)
232 {
233 napi_property_descriptor descriptors[] = {
234 DECLARE_NAPI_PROPERTY("AuthType", AuthTypeConstructor(env)),
235 DECLARE_NAPI_PROPERTY("AuthSubType", AuthSubTypeConstructor(env)),
236 };
237 napi_define_properties(env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors);
238 return exports;
239 }
240
GetCtor(napi_env env)241 napi_value GetCtor(napi_env env)
242 {
243 USERIDM_HILOGI(MODULE_JS_NAPI, "%{public}s, start", __func__);
244 napi_value cons;
245 napi_property_descriptor clzDes[] = {
246 DECLARE_NAPI_FUNCTION("openSession", OpenSession),
247 DECLARE_NAPI_FUNCTION("addCredential", AddCredential),
248 DECLARE_NAPI_FUNCTION("updateCredential", UpdateCredential),
249 DECLARE_NAPI_FUNCTION("closeSession", CloseSession),
250 DECLARE_NAPI_FUNCTION("cancel", Cancel),
251 DECLARE_NAPI_FUNCTION("delUser", DelUser),
252 DECLARE_NAPI_FUNCTION("delCred", DelCred),
253 DECLARE_NAPI_FUNCTION("getAuthInfo", GetAuthInfo),
254 };
255 NAPI_CALL(env, napi_define_class(env, "UserIdentityManager", NAPI_AUTO_LENGTH, UserIdentityManagerConstructor,
256 nullptr, sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &cons));
257 return cons;
258 }
259 } // namespace UserIDM
260 } // namespace UserIAM
261 } // namespace OHOS
262