• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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