@regulaforensics/react-native-document-reader-api 6.9.1 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +10 -42
  2. package/RNDocumentReaderApi.podspec +1 -1
  3. package/android/build.gradle +10 -10
  4. package/android/src/main/java/com/regula/documentreader/BluetoothUtil.kt +78 -74
  5. package/android/src/main/java/com/regula/documentreader/Config.kt +692 -0
  6. package/android/src/main/java/com/regula/documentreader/JSONConstructor.kt +2198 -0
  7. package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderModule.kt +535 -0
  8. package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderPackage.kt +11 -0
  9. package/android/src/main/java/com/regula/documentreader/Utils.kt +261 -0
  10. package/example/App.tsx +97 -145
  11. package/example/README.md +37 -0
  12. package/example/android/app/build.gradle +1 -1
  13. package/example/android/app/src/main/java/com/regula/dr/fullrfid/MainApplication.java +0 -1
  14. package/example/android/app/src/main/res/values/styles.xml +1 -2
  15. package/example/android/build.gradle +2 -4
  16. package/example/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  17. package/example/android/gradle.properties +2 -2
  18. package/example/index.js +1 -2
  19. package/example/ios/DocumentReader.xcodeproj/project.pbxproj +8 -4
  20. package/example/ios/Podfile +2 -21
  21. package/example/package-lock.json +3444 -2439
  22. package/example/package.json +28 -28
  23. package/example/react-native.config.js +5 -0
  24. package/index.d.ts +1375 -446
  25. package/index.js +843 -272
  26. package/ios/RGLWConfig.h +48 -0
  27. package/ios/RGLWConfig.m +1312 -0
  28. package/ios/RGLWJSONConstructor.h +173 -69
  29. package/ios/RGLWJSONConstructor.m +1832 -786
  30. package/ios/RNRegulaDocumentReader.h +10 -9
  31. package/ios/RNRegulaDocumentReader.m +388 -587
  32. package/package.json +1 -1
  33. package/android/src/main/java/com/regula/documentreader/Helpers.java +0 -259
  34. package/android/src/main/java/com/regula/documentreader/JSONConstructor.java +0 -1119
  35. package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderModule.java +0 -1153
  36. package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderPackage.java +0 -26
  37. package/android/src/main/java/com/regula/documentreader/RegulaConfig.java +0 -830
  38. package/example/.bundle/config +0 -2
  39. package/example/.eslintrc.js +0 -4
  40. package/example/.prettierrc.js +0 -7
  41. package/example/Gemfile +0 -6
  42. package/example/Gemfile.lock +0 -98
  43. package/example/__tests__/App.test.tsx +0 -17
  44. package/example/app.json +0 -4
  45. package/example/babel.config.js +0 -3
  46. package/example/jest.config.js +0 -3
  47. package/example/tsconfig.json +0 -3
  48. package/ios/RGLWRegulaConfig.h +0 -26
  49. package/ios/RGLWRegulaConfig.m +0 -1152
  50. package/ios/RNRegulaDocumentReader.xcodeproj/project.pbxproj +0 -304
  51. package/ios/RNRegulaDocumentReader.xcworkspace/contents.xcworkspacedata +0 -9
@@ -1,1153 +0,0 @@
1
- package com.regula.documentreader;
2
-
3
- import static com.regula.documentreader.api.DocumentReader.Instance;
4
- import static com.regula.documentreader.Helpers.*;
5
- import static com.regula.documentreader.JSONConstructor.*;
6
-
7
- import android.annotation.SuppressLint;
8
- import android.app.Activity;
9
- import android.app.LocaleManager;
10
- import android.app.PendingIntent;
11
- import android.content.Context;
12
- import android.content.Intent;
13
- import android.content.IntentFilter;
14
- import android.content.res.Configuration;
15
- import android.content.res.Resources;
16
- import android.graphics.Bitmap;
17
- import android.nfc.NfcAdapter;
18
- import android.nfc.tech.IsoDep;
19
- import android.os.Build;
20
- import android.os.LocaleList;
21
- import android.util.Base64;
22
-
23
- import androidx.annotation.NonNull;
24
- import androidx.annotation.Nullable;
25
-
26
- import com.facebook.react.bridge.ActivityEventListener;
27
- import com.facebook.react.bridge.Arguments;
28
- import com.facebook.react.bridge.LifecycleEventListener;
29
- import com.facebook.react.bridge.ReactApplicationContext;
30
- import com.facebook.react.bridge.ReactContext;
31
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
32
- import com.facebook.react.bridge.ReactMethod;
33
- import com.facebook.react.bridge.ReadableArray;
34
- import com.facebook.react.bridge.WritableMap;
35
- import com.facebook.react.modules.core.DeviceEventManagerModule;
36
- import com.regula.documentreader.api.completions.ICheckDatabaseUpdate;
37
- import com.regula.documentreader.api.completions.IDocumentReaderCompletion;
38
- import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion;
39
- import com.regula.documentreader.api.completions.IDocumentReaderPrepareCompletion;
40
- import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion;
41
- import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion;
42
- import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest;
43
- import com.regula.documentreader.api.completions.rfid.IRfidTASignatureCompletion;
44
- import com.regula.documentreader.api.completions.rfid.ITccParamsCompletion;
45
- import com.regula.documentreader.api.enums.DocReaderAction;
46
- import com.regula.documentreader.api.errors.DocReaderRfidException;
47
- import com.regula.documentreader.api.errors.DocumentReaderException;
48
- import com.regula.documentreader.api.internal.core.CoreScenarioUtil;
49
- import com.regula.documentreader.api.internal.params.ImageInputParam;
50
- import com.regula.documentreader.api.internal.parser.DocReaderResultsJsonParser;
51
- import com.regula.documentreader.api.params.BleDeviceConfig;
52
- import com.regula.documentreader.api.params.DocReaderConfig;
53
- import com.regula.documentreader.api.params.ImageInputData;
54
- import com.regula.documentreader.api.params.rfid.PKDCertificate;
55
- import com.regula.documentreader.api.params.rfid.authorization.PAResourcesIssuer;
56
- import com.regula.documentreader.api.params.rfid.authorization.TAChallenge;
57
- import com.regula.documentreader.api.results.DocumentReaderGraphicField;
58
- import com.regula.documentreader.api.results.DocumentReaderNotification;
59
- import com.regula.documentreader.api.results.DocumentReaderResults;
60
- import com.regula.documentreader.api.results.DocumentReaderTextField;
61
-
62
- import org.json.JSONArray;
63
- import org.json.JSONException;
64
- import org.json.JSONObject;
65
-
66
- import java.io.IOException;
67
- import java.io.InputStream;
68
- import java.util.ArrayList;
69
- import java.util.List;
70
- import java.util.Locale;
71
-
72
- @SuppressWarnings({"ConstantConditions", "RedundantSuppression", "MissingPermission", "deprecation"})
73
- public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule implements ActivityEventListener, LifecycleEventListener {
74
- private final static String eventDatabaseProgress = "prepareDatabaseProgressChangeEvent";
75
- private final static String eventCompletion = "completionEvent";
76
-
77
- private final static String rfidOnProgressEvent = "rfidNotificationCompletionEvent";
78
- private final static String rfidOnChipDetectedEvent = "rfidOnChipDetectedEvent";
79
- private final static String rfidOnRetryReadChipEvent = "rfidOnRetryReadChipEvent";
80
-
81
- private final static String eventPACertificateCompletion = "paCertificateCompletionEvent";
82
- private final static String eventTACertificateCompletion = "taCertificateCompletionEvent";
83
- private final static String eventTASignatureCompletion = "taSignatureCompletionEvent";
84
-
85
- private final static String bleOnServiceConnectedEvent = "bleOnServiceConnectedEvent";
86
- private final static String bleOnServiceDisconnectedEvent = "bleOnServiceDisconnectedEvent";
87
- private final static String bleOnDeviceReadyEvent = "bleOnDeviceReadyEvent";
88
-
89
- private final static String eventVideoEncoderCompletion = "videoEncoderCompletionEvent";
90
- private final static String onCustomButtonTappedEvent = "onCustomButtonTappedEvent";
91
-
92
- private static int databaseDownloadProgress = 0;
93
- JSONArray data;
94
- private final ReactContext reactContext;
95
- private boolean backgroundRFIDEnabled = false;
96
- private IRfidPKDCertificateCompletion paCertificateCompletion;
97
- private IRfidPKDCertificateCompletion taCertificateCompletion;
98
- private IRfidTASignatureCompletion taSignatureCompletion;
99
-
100
- public RNRegulaDocumentReaderModule(ReactApplicationContext reactContext) {
101
- super(reactContext);
102
- this.reactContext = reactContext;
103
- reactContext.addActivityEventListener(this);
104
- reactContext.addLifecycleEventListener(this);
105
- }
106
-
107
- @Override
108
- @SuppressWarnings("NullableProblems")
109
- public String getName() {
110
- return "RNRegulaDocumentReader";
111
- }
112
-
113
- @ReactMethod
114
- @SuppressWarnings("unused")
115
- public void addListener(String eventName) {
116
- }
117
-
118
- @ReactMethod
119
- @SuppressWarnings("unused")
120
- public void removeListeners(Integer count) {
121
- }
122
-
123
-
124
- private Context getContext() {
125
- return reactContext.getCurrentActivity();
126
- }
127
-
128
- private Activity getActivity() {
129
- return getCurrentActivity();
130
- }
131
-
132
- @Override
133
- public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
134
- }
135
-
136
- @Override
137
- public void onNewIntent(Intent intent) {
138
- if (intent.getAction() != null && intent.getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED) && backgroundRFIDEnabled)
139
- Instance().readRFID(IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)), getRfidReaderCompletion());
140
- }
141
-
142
- @Override
143
- public void onHostResume() {
144
- if (backgroundRFIDEnabled)
145
- startForegroundDispatch(getActivity());
146
- }
147
-
148
- @Override
149
- public void onHostPause() {
150
- if (backgroundRFIDEnabled)
151
- NfcAdapter.getDefaultAdapter(getActivity()).disableForegroundDispatch(getActivity());
152
- }
153
-
154
- @Override
155
- public void onHostDestroy() {
156
- }
157
-
158
- @SuppressWarnings({"WrapperTypeMayBePrimitive", "unchecked"})
159
- private <T> T args(int index) throws JSONException {
160
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
161
- // Rewrite it according to react native documentation!!!
162
- // the is no int or double in js so all ints are sent as double by default
163
- Object value = data.get(index);
164
- if (value instanceof Double)
165
- if ((Double) value % 1 == 0) {
166
- Integer intValue = ((Double) value).intValue();
167
- return (T) intValue;
168
- }
169
- //noinspection unchecked
170
- return (T) data.get(index);
171
- }
172
-
173
- private void sendEvent(String event, Object data) {
174
- WritableMap map = Arguments.createMap();
175
- String result;
176
- if (data instanceof JSONObject || data instanceof JSONArray)
177
- result = data.toString();
178
- else
179
- result = (String) data;
180
- map.putString("msg", result);
181
- reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(event, map);
182
- }
183
-
184
- private interface Callback {
185
- void success(Object o);
186
-
187
- void error(String s);
188
-
189
- default void success() {
190
- success("");
191
- }
192
- }
193
-
194
- @ReactMethod
195
- @SuppressWarnings("unused")
196
- public void exec(String moduleName, String action, ReadableArray args, com.facebook.react.bridge.Callback successCallback, com.facebook.react.bridge.Callback errorCallback) {
197
- data = new JSONArray(args.toArrayList());
198
- Callback callback = new Callback() {
199
- @Override
200
- public void success(Object o) {
201
- if (o instanceof Integer)
202
- successCallback.invoke(o);
203
- else if (o instanceof Boolean)
204
- successCallback.invoke((boolean) o ? "true" : "");
205
- else
206
- successCallback.invoke(o);
207
- }
208
-
209
- @Override
210
- public void error(String s) {
211
- errorCallback.invoke(s);
212
- }
213
- };
214
- try {
215
- switch (action) {
216
- case "initializeReaderAutomatically":
217
- initializeReaderAutomatically(callback);
218
- break;
219
- case "isBlePermissionsGranted":
220
- isBlePermissionsGranted(callback);
221
- break;
222
- case "startBluetoothService":
223
- startBluetoothService(callback);
224
- break;
225
- case "initializeReaderBleDeviceConfig":
226
- initializeReaderBleDeviceConfig(callback);
227
- break;
228
- case "getTag":
229
- getTag(callback);
230
- break;
231
- case "getAPIVersion":
232
- getAPIVersion(callback);
233
- break;
234
- case "getAvailableScenarios":
235
- getAvailableScenarios(callback);
236
- break;
237
- case "isRFIDAvailableForUse":
238
- isRFIDAvailableForUse(callback);
239
- break;
240
- case "getCoreMode":
241
- getCoreMode(callback);
242
- break;
243
- case "getCoreVersion":
244
- getCoreVersion(callback);
245
- break;
246
- case "getDatabaseDate":
247
- getDatabaseDate(callback);
248
- break;
249
- case "getDatabaseID":
250
- getDatabaseID(callback);
251
- break;
252
- case "getDatabaseVersion":
253
- getDatabaseVersion(callback);
254
- break;
255
- case "getDocumentReaderIsReady":
256
- getDocumentReaderIsReady(callback);
257
- break;
258
- case "getDocumentReaderStatus":
259
- getDocumentReaderStatus(callback);
260
- break;
261
- case "getDatabaseCountriesNumber":
262
- getDatabaseCountriesNumber(callback);
263
- break;
264
- case "getDatabaseDocumentsNumber":
265
- getDatabaseDocumentsNumber(callback);
266
- break;
267
- case "selectedScenario":
268
- selectedScenario(callback);
269
- break;
270
- case "getSessionLogFolder":
271
- getSessionLogFolder(callback);
272
- break;
273
- case "getDatabaseDescription":
274
- getDatabaseDescription(callback);
275
- break;
276
- case "showScanner":
277
- showScanner(callback);
278
- break;
279
- case "startNewPage":
280
- startNewPage(callback);
281
- break;
282
- case "startNewSession":
283
- startNewSession(callback);
284
- break;
285
- case "startRFIDReader":
286
- startRFIDReader(callback);
287
- break;
288
- case "stopRFIDReader":
289
- stopRFIDReader(callback);
290
- break;
291
- case "stopRFIDReaderWithErrorMessage":
292
- stopRFIDReaderWithErrorMessage(callback, args(0));
293
- break;
294
- case "stopScanner":
295
- stopScanner(callback);
296
- break;
297
- case "deinitializeReader":
298
- deinitializeReader(callback);
299
- break;
300
- case "isAuthenticatorAvailableForUse":
301
- isAuthenticatorAvailableForUse(callback);
302
- break;
303
- case "getConfig":
304
- getConfig(callback);
305
- break;
306
- case "getRfidScenario":
307
- getRfidScenario(callback);
308
- break;
309
- case "getLicenseExpiryDate":
310
- getLicenseExpiryDate(callback);
311
- break;
312
- case "getLicenseCountryFilter":
313
- getLicenseCountryFilter(callback);
314
- break;
315
- case "licenseIsRfidAvailable":
316
- licenseIsRfidAvailable(callback);
317
- break;
318
- case "getCameraSessionIsPaused":
319
- getCameraSessionIsPaused(callback);
320
- break;
321
- case "removeDatabase":
322
- removeDatabase(callback);
323
- break;
324
- case "cancelDBUpdate":
325
- cancelDBUpdate(callback);
326
- break;
327
- case "resetConfiguration":
328
- resetConfiguration(callback);
329
- break;
330
- case "clearPKDCertificates":
331
- clearPKDCertificates(callback);
332
- break;
333
- case "readRFID":
334
- readRFID(callback);
335
- break;
336
- case "getRfidSessionStatus":
337
- getRfidSessionStatus(callback);
338
- break;
339
- case "setRfidDelegate":
340
- setRfidDelegate(callback, args(0));
341
- break;
342
- case "setEnableCoreLogs":
343
- setEnableCoreLogs(callback, args(0));
344
- break;
345
- case "addPKDCertificates":
346
- addPKDCertificates(callback, args(0));
347
- break;
348
- case "setCameraSessionIsPaused":
349
- setCameraSessionIsPaused(callback, args(0));
350
- break;
351
- case "setTag":
352
- setTag(callback, args(0));
353
- break;
354
- case "checkDatabaseUpdate":
355
- checkDatabaseUpdate(callback, args(0));
356
- break;
357
- case "scan":
358
- scan(callback, args(0));
359
- break;
360
- case "recognize":
361
- recognize(callback, args(0));
362
- break;
363
- case "recognizeImages":
364
- recognizeImages(callback, args(0));
365
- break;
366
- case "showScannerWithCameraID":
367
- showScannerWithCameraID(callback, args(0));
368
- break;
369
- case "runAutoUpdate":
370
- runAutoUpdate(callback, args(0));
371
- break;
372
- case "setConfig":
373
- setConfig(callback, args(0));
374
- break;
375
- case "setRfidScenario":
376
- setRfidScenario(callback, args(0));
377
- break;
378
- case "initializeReader":
379
- initializeReader(callback, args(0));
380
- break;
381
- case "prepareDatabase":
382
- prepareDatabase(callback, args(0));
383
- break;
384
- case "recognizeImage":
385
- recognizeImage(callback, args(0));
386
- break;
387
- case "recognizeData":
388
- recognizeData(callback, args(0));
389
- break;
390
- case "setRfidSessionStatus":
391
- setRfidSessionStatus(callback, args(0));
392
- break;
393
- case "providePACertificates":
394
- providePACertificates(callback, args(0));
395
- break;
396
- case "provideTACertificates":
397
- provideTACertificates(callback, args(0));
398
- break;
399
- case "provideTASignature":
400
- provideTASignature(callback, args(0));
401
- break;
402
- case "parseCoreResults":
403
- parseCoreResults(callback, args(0));
404
- break;
405
- case "setTCCParams":
406
- setTCCParams(callback, args(0));
407
- break;
408
- case "recognizeImageWithOpts":
409
- recognizeImageWithOpts(callback, args(0), args(1));
410
- break;
411
- case "recognizeVideoFrame":
412
- recognizeVideoFrame(callback, args(0), args(1));
413
- break;
414
- case "showScannerWithCameraIDAndOpts":
415
- showScannerWithCameraIDAndOpts(callback, args(0), args(1));
416
- break;
417
- case "recognizeImageWithCameraMode":
418
- recognizeImageWithCameraMode(callback, args(0), args(1));
419
- break;
420
- case "recognizeImagesWithImageInputs":
421
- recognizeImagesWithImageInputs(callback, args(0));
422
- break;
423
- case "setLanguage":
424
- setLanguage(callback, args(0));
425
- break;
426
- case "textFieldValueByType":
427
- textFieldValueByType(callback, args(0), args(1));
428
- break;
429
- case "textFieldValueByTypeLcid":
430
- textFieldValueByTypeLcid(callback, args(0), args(1), args(2));
431
- break;
432
- case "textFieldValueByTypeSource":
433
- textFieldValueByTypeSource(callback, args(0), args(1), args(2));
434
- break;
435
- case "textFieldValueByTypeLcidSource":
436
- textFieldValueByTypeLcidSource(callback, args(0), args(1), args(2), args(3));
437
- break;
438
- case "textFieldValueByTypeSourceOriginal":
439
- textFieldValueByTypeSourceOriginal(callback, args(0), args(1), args(2), args(3));
440
- break;
441
- case "textFieldValueByTypeLcidSourceOriginal":
442
- textFieldValueByTypeLcidSourceOriginal(callback, args(0), args(1), args(2), args(3), args(4));
443
- break;
444
- case "textFieldByType":
445
- textFieldByType(callback, args(0), args(1));
446
- break;
447
- case "textFieldByTypeLcid":
448
- textFieldByTypeLcid(callback, args(0), args(1), args(2));
449
- break;
450
- case "graphicFieldByTypeSource":
451
- graphicFieldByTypeSource(callback, args(0), args(1), args(2));
452
- break;
453
- case "graphicFieldByTypeSourcePageIndex":
454
- graphicFieldByTypeSourcePageIndex(callback, args(0), args(1), args(2), args(3));
455
- break;
456
- case "graphicFieldByTypeSourcePageIndexLight":
457
- graphicFieldByTypeSourcePageIndexLight(callback, args(0), args(1), args(2), args(3), args(4));
458
- break;
459
- case "graphicFieldImageByType":
460
- graphicFieldImageByType(callback, args(0), args(1));
461
- break;
462
- case "graphicFieldImageByTypeSource":
463
- graphicFieldImageByTypeSource(callback, args(0), args(1), args(2));
464
- break;
465
- case "graphicFieldImageByTypeSourcePageIndex":
466
- graphicFieldImageByTypeSourcePageIndex(callback, args(0), args(1), args(2), args(3));
467
- break;
468
- case "graphicFieldImageByTypeSourcePageIndexLight":
469
- graphicFieldImageByTypeSourcePageIndexLight(callback, args(0), args(1), args(2), args(3), args(4));
470
- break;
471
- case "containers":
472
- containers(callback, args(0), args(1));
473
- break;
474
- case "encryptedContainers":
475
- encryptedContainers(callback, args(0));
476
- break;
477
- }
478
- } catch (Exception e) {
479
- e.printStackTrace();
480
- }
481
- }
482
-
483
- private void startForegroundDispatch(final Activity activity) {
484
- IntentFilter[] filters = new IntentFilter[1];
485
- filters[0] = new IntentFilter();
486
- filters[0].addAction(NfcAdapter.ACTION_TECH_DISCOVERED);
487
- filters[0].addCategory(Intent.CATEGORY_DEFAULT);
488
- String[][] techList = new String[][]{
489
- new String[]{"android.nfc.tech.IsoDep"}
490
- };
491
- Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
492
- int flag = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_MUTABLE : 0;
493
- PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, flag);
494
- NfcAdapter.getDefaultAdapter(getActivity()).enableForegroundDispatch(activity, pendingIntent, filters, techList);
495
- }
496
-
497
- private void stopBackgroundRFID() {
498
- if (!backgroundRFIDEnabled)
499
- return;
500
- NfcAdapter.getDefaultAdapter(getActivity()).disableForegroundDispatch(getActivity());
501
- backgroundRFIDEnabled = false;
502
- }
503
-
504
- private void initializeReaderAutomatically(Callback callback) {
505
- if (!Instance().isReady())
506
- try {
507
- InputStream is = getContext().getAssets().open("regula.license");
508
- byte[] license = new byte[is.available()];
509
- //noinspection ResultOfMethodCallIgnored
510
- is.read(license);
511
- Instance().initializeReader(getContext(), new DocReaderConfig(license), getInitCompletion(callback));
512
- is.close();
513
- } catch (IOException e) {
514
- e.printStackTrace();
515
- callback.error("problem reading license(see logs)");
516
- }
517
- else
518
- callback.success("already initialized");
519
- }
520
-
521
- private void isBlePermissionsGranted(Callback callback) {
522
- callback.success(BluetoothUtil.Companion.isBlePermissionsGranted(getActivity()));
523
- }
524
-
525
- private void startBluetoothService(Callback callback) {
526
- BluetoothUtil.Companion.startBluetoothService(
527
- getActivity(),
528
- isBleManagerConnected -> {
529
- sendEvent(bleOnServiceConnectedEvent, isBleManagerConnected);
530
- return null;
531
- },
532
- () -> {
533
- sendEvent(bleOnServiceDisconnectedEvent, "");
534
- return null;
535
- },
536
- () -> {
537
- sendEvent(bleOnDeviceReadyEvent, "");
538
- return null;
539
- }
540
- );
541
- callback.success();
542
- }
543
-
544
- @SuppressLint("MissingPermission")
545
- private void initializeReaderBleDeviceConfig(Callback callback) {
546
- if (BluetoothUtil.Companion.getBleManager() == null) callback.error("bleManager is null");
547
- if (!Instance().isReady())
548
- Instance().initializeReader(getContext(), new BleDeviceConfig(BluetoothUtil.Companion.getBleManager()), getInitCompletion(callback));
549
- else
550
- callback.success("already initialized");
551
- }
552
-
553
- private void getAvailableScenarios(Callback callback) throws JSONException {
554
- callback.success(generateList(Instance().availableScenarios, JSONConstructor::generateDocumentReaderScenario).toString());
555
- }
556
-
557
- private void parseCoreResults(Callback callback, String json) {
558
- DocumentReaderResults results = (DocumentReaderResults) DocReaderResultsJsonParser.parseCoreResults(json).get("docReaderResults");
559
- callback.success(generateDocumentReaderResults(results, getContext()).toString());
560
- }
561
-
562
- private void getAPIVersion(Callback callback) {
563
- callback.success(Instance().version.api);
564
- }
565
-
566
- private void getCoreVersion(Callback callback) {
567
- callback.success(Instance().version.core);
568
- }
569
-
570
- private void getCoreMode(Callback callback) {
571
- callback.success(Instance().version.coreMode);
572
- }
573
-
574
- private void getDatabaseID(Callback callback) {
575
- callback.success(Instance().version.database.databaseID);
576
- }
577
-
578
- private void getDatabaseVersion(Callback callback) {
579
- callback.success(Instance().version.database.version);
580
- }
581
-
582
- private void getDatabaseDate(Callback callback) {
583
- callback.success(Instance().version.database.date);
584
- }
585
-
586
- private void getDatabaseDescription(Callback callback) {
587
- callback.success(Instance().version.database.databaseDescription);
588
- }
589
-
590
- private void getDatabaseCountriesNumber(Callback callback) {
591
- callback.success(Instance().version.database.countriesNumber);
592
- }
593
-
594
- private void getDatabaseDocumentsNumber(Callback callback) {
595
- callback.success(Instance().version.database.documentsNumber);
596
- }
597
-
598
- private void setTCCParams(Callback callback, final JSONObject params) {
599
- Instance().setTccParams(TCCParamsFromJSON(params), getTCCParamsCompletion(callback));
600
- }
601
-
602
- private void deinitializeReader(Callback callback) {
603
- Instance().deinitializeReader();
604
- callback.success();
605
- }
606
-
607
- private void isAuthenticatorAvailableForUse(Callback callback) {
608
- callback.success(Instance().isAuthenticatorAvailableForUse());
609
- }
610
-
611
- private void getConfig(Callback callback) throws JSONException {
612
- callback.success(RegulaConfig.getConfig(Instance()).toString());
613
- }
614
-
615
- private void getRfidScenario(Callback callback) {
616
- callback.success(Instance().rfidScenario().toJson());
617
- }
618
-
619
- private void selectedScenario(Callback callback) {
620
- callback.success(generateDocumentReaderScenario(CoreScenarioUtil.getScenario(Instance().processParams().getScenario())).toString());
621
- }
622
-
623
- private void getLicenseExpiryDate(Callback callback) {
624
- if (Instance().license().getExpiryDate() == null)
625
- callback.error("null");
626
- else
627
- callback.success(Instance().license().getExpiryDate().toString());
628
- }
629
-
630
- private void getLicenseCountryFilter(Callback callback) {
631
- if (Instance().license().getCountryFilter() == null)
632
- callback.error("null");
633
- else
634
- callback.success(generateList(Instance().license().getCountryFilter()).toString());
635
- }
636
-
637
- private void licenseIsRfidAvailable(Callback callback) {
638
- callback.success(Instance().license().isRfidAvailable());
639
- }
640
-
641
- private void getDocumentReaderIsReady(Callback callback) {
642
- callback.success(Instance().isReady());
643
- }
644
-
645
- private void getDocumentReaderStatus(Callback callback) {
646
- callback.success(Instance().isReady());
647
- }
648
-
649
- private void isRFIDAvailableForUse(Callback callback) {
650
- callback.success(Instance().isRFIDAvailableForUse());
651
- }
652
-
653
- private void initializeReader(Callback callback, JSONObject config) {
654
- if (!Instance().isReady())
655
- Instance().initializeReader(getContext(), DocReaderConfigFromJSON(config), getInitCompletion(callback));
656
- else
657
- callback.success("already initialized");
658
- }
659
-
660
- private void startNewSession(Callback callback) {
661
- Instance().startNewSession();
662
- callback.success();
663
- }
664
-
665
- private void getTag(Callback callback) {
666
- callback.success(Instance().tag);
667
- }
668
-
669
- private void setTag(Callback callback, String tag) {
670
- Instance().tag = tag;
671
- callback.success();
672
- }
673
-
674
- private void checkDatabaseUpdate(Callback callback, String databaseId) {
675
- Instance().checkDatabaseUpdate(getContext(), databaseId, getCheckDatabaseUpdateCompletion(callback));
676
- callback.success();
677
- }
678
-
679
- private void startNewPage(Callback callback) {
680
- Instance().startNewPage();
681
- callback.success();
682
- }
683
-
684
- private void scan(@SuppressWarnings("unused") Callback callback, JSONObject config) {
685
- stopBackgroundRFID();
686
- Instance().showScanner(getContext(), ScannerConfigFromJSON(config), getCompletion());
687
- }
688
-
689
- private void recognize(@SuppressWarnings("unused") Callback callback, JSONObject config) {
690
- stopBackgroundRFID();
691
- Instance().recognize(getContext(), RecognizeConfigFromJSON(config), getCompletion());
692
- }
693
-
694
- private void recognizeImageWithOpts(Callback callback, String base64Image, final JSONObject opts) throws JSONException {
695
- RegulaConfig.setConfig(Instance(), opts, getContext());
696
- recognizeImage(callback, base64Image);
697
- }
698
-
699
- private void recognizeImage(@SuppressWarnings("unused") Callback callback, String base64Image) {
700
- stopBackgroundRFID();
701
- Instance().recognizeImage(Helpers.bitmapFromBase64(base64Image), getCompletion());
702
- }
703
-
704
- private void recognizeData(@SuppressWarnings("unused") Callback callback, Object data) {
705
- stopBackgroundRFID();
706
- Instance().recognizeImage(Base64.decode(data.toString(), Base64.DEFAULT), getCompletion());
707
- }
708
-
709
- private void recognizeImages(@SuppressWarnings("unused") Callback callback, JSONArray base64Images) throws JSONException {
710
- stopBackgroundRFID();
711
- Bitmap[] images = new Bitmap[base64Images.length()];
712
- for (int i = 0; i < images.length; i++)
713
- images[i] = bitmapFromBase64(base64Images.getString(i));
714
- Instance().recognizeImages(images, getCompletion());
715
- }
716
-
717
- private void recognizeImagesWithImageInputs(@SuppressWarnings("unused") Callback callback, JSONArray base64Images) throws JSONException {
718
- stopBackgroundRFID();
719
- ImageInputData[] images = new ImageInputData[base64Images.length()];
720
- for (int i = 0; i < images.length; i++)
721
- images[i] = ImageInputDataFromJSON(base64Images.getJSONObject(i));
722
- Instance().recognizeImages(images, getCompletion());
723
- }
724
-
725
- private void removeDatabase(Callback callback) {
726
- callback.success(Instance().removeDatabase(getContext()));
727
- }
728
-
729
- private void cancelDBUpdate(Callback callback) {
730
- callback.success(Instance().cancelDBUpdate(getContext()));
731
- }
732
-
733
- private void resetConfiguration(Callback callback) {
734
- Instance().resetConfiguration();
735
- callback.success();
736
- }
737
-
738
- private void setEnableCoreLogs(Callback callback, boolean enableLogs) {
739
- Instance().setEnableCoreLogs(enableLogs);
740
- callback.success();
741
- }
742
-
743
- private void addPKDCertificates(Callback callback, JSONArray certificatesJSON) throws JSONException {
744
- List<PKDCertificate> certificates = new ArrayList<>();
745
- for (int i = 0; i < certificatesJSON.length(); i++) {
746
- JSONObject certificate = certificatesJSON.getJSONObject(i);
747
- certificates.add(new PKDCertificate(Base64.decode(certificate.get("binaryData").toString(), Base64.DEFAULT), certificate.getInt("resourceType"), certificate.has("privateKey") ? Base64.decode(certificate.get("privateKey").toString(), Base64.DEFAULT) : null));
748
- }
749
- Instance().addPKDCertificates(certificates);
750
- callback.success();
751
- }
752
-
753
- private void clearPKDCertificates(Callback callback) {
754
- Instance().clearPKDCertificates();
755
- callback.success();
756
- }
757
-
758
- private void recognizeVideoFrame(@SuppressWarnings("unused") Callback callback, String byteString, final JSONObject opts) throws JSONException {
759
- stopBackgroundRFID();
760
- Instance().recognizeVideoFrame(byteString.getBytes(), new ImageInputParam(opts.getInt("width"), opts.getInt("height"), opts.getInt("type")), getCompletion());
761
- }
762
-
763
- private void showScannerWithCameraID(@SuppressWarnings("unused") Callback callback, int cameraID) {
764
- stopBackgroundRFID();
765
- Instance().showScanner(getContext(), cameraID, getCompletion());
766
- }
767
-
768
- private void showScanner(Callback callback) {
769
- showScannerWithCameraID(callback, -1);
770
- }
771
-
772
- private void showScannerWithCameraIDAndOpts(@SuppressWarnings("unused") Callback callback, int cameraID, final JSONObject opts) throws JSONException {
773
- stopBackgroundRFID();
774
- RegulaConfig.setConfig(Instance(), opts, getContext());
775
- Instance().showScanner(getContext(), cameraID, getCompletion());
776
- }
777
-
778
- private void stopScanner(Callback callback) {
779
- Instance().stopScanner(getContext());
780
- callback.success();
781
- }
782
-
783
- private void startRFIDReader(@SuppressWarnings("unused") Callback callback) {
784
- stopBackgroundRFID();
785
- Instance().startRFIDReader(getContext(), getRfidReaderCompletion(), getRfidReaderRequest());
786
- }
787
-
788
- private void stopRFIDReader(Callback callback) {
789
- Instance().stopRFIDReader(getContext());
790
- stopBackgroundRFID();
791
- callback.success();
792
- }
793
-
794
- private void prepareDatabase(Callback callback, String dbID) {
795
- Instance().prepareDatabase(getContext(), dbID, getPrepareCompletion(callback));
796
- }
797
-
798
- private void runAutoUpdate(Callback callback, String dbID) {
799
- Instance().runAutoUpdate(getContext(), dbID, getPrepareCompletion(callback));
800
- }
801
-
802
- private void setRfidScenario(Callback callback, final JSONObject opts) throws JSONException {
803
- RegulaConfig.setRfidScenario(opts);
804
- callback.success();
805
- }
806
-
807
- private void getSessionLogFolder(Callback callback) {
808
- callback.success(Instance().processParams().sessionLogFolder);
809
- }
810
-
811
- private void setConfig(Callback callback, final JSONObject opts) throws JSONException {
812
- RegulaConfig.setConfig(Instance(), opts, getContext());
813
- callback.success();
814
- }
815
-
816
- private void readRFID(@SuppressWarnings("unused") Callback callback) {
817
- backgroundRFIDEnabled = true;
818
- startForegroundDispatch(getActivity());
819
- }
820
-
821
- private void setLanguage(Callback callback, String language) {
822
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
823
- LocaleManager localeManager = (LocaleManager) getContext().getSystemService(Context.LOCALE_SERVICE);
824
- localeManager.setApplicationLocales(new LocaleList(Locale.forLanguageTag(language)));
825
- } else {
826
- Locale locale = new Locale(language);
827
- Locale.setDefault(locale);
828
- Resources resources = getContext().getResources();
829
- Configuration config = resources.getConfiguration();
830
- config.setLocale(locale);
831
- resources.updateConfiguration(config, resources.getDisplayMetrics());
832
- }
833
- callback.success();
834
- }
835
-
836
- private void providePACertificates(Callback callback, JSONArray certificatesJSON) throws JSONException {
837
- if (paCertificateCompletion == null) {
838
- callback.error("paCertificateCompletion is null");
839
- return;
840
- }
841
- PKDCertificate[] certificates = new PKDCertificate[certificatesJSON.length()];
842
- for (int i = 0; i < certificatesJSON.length(); i++) {
843
- JSONObject certificate = certificatesJSON.getJSONObject(i);
844
- certificates[i] = new PKDCertificate(Base64.decode(certificate.get("binaryData").toString(), Base64.DEFAULT), certificate.getInt("resourceType"), certificate.has("privateKey") ? Base64.decode(certificate.get("privateKey").toString(), Base64.DEFAULT) : null);
845
- }
846
- paCertificateCompletion.onCertificatesReceived(certificates);
847
- callback.success();
848
- }
849
-
850
- private void provideTACertificates(Callback callback, JSONArray certificatesJSON) throws JSONException {
851
- if (taCertificateCompletion == null) {
852
- callback.error("taCertificateCompletion is null");
853
- return;
854
- }
855
- PKDCertificate[] certificates = new PKDCertificate[certificatesJSON.length()];
856
- for (int i = 0; i < certificatesJSON.length(); i++) {
857
- JSONObject certificate = certificatesJSON.getJSONObject(i);
858
- certificates[i] = new PKDCertificate(Base64.decode(certificate.get("binaryData").toString(), Base64.DEFAULT), certificate.getInt("resourceType"), certificate.has("privateKey") ? Base64.decode(certificate.get("privateKey").toString(), Base64.DEFAULT) : null);
859
- }
860
- taCertificateCompletion.onCertificatesReceived(certificates);
861
- callback.success();
862
- }
863
-
864
- private void provideTASignature(Callback callback, Object signature) {
865
- if (taSignatureCompletion == null) {
866
- callback.error("taSignatureCompletion is null");
867
- return;
868
- }
869
- taSignatureCompletion.onSignatureReceived(Base64.decode(signature.toString(), Base64.DEFAULT));
870
- callback.success();
871
- }
872
-
873
- private void setRfidDelegate(Callback callback, int delegate) {
874
- rfidDelegate = delegate;
875
- callback.success();
876
- }
877
-
878
- private void textFieldValueByType(Callback callback, String raw, int fieldType) {
879
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
880
- callback.success(results.getTextFieldValueByType(fieldType));
881
- }
882
-
883
- private void textFieldValueByTypeLcid(Callback callback, String raw, int fieldType, int lcid) {
884
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
885
- callback.success(results.getTextFieldValueByType(fieldType, lcid));
886
- }
887
-
888
- private void textFieldValueByTypeSource(Callback callback, String raw, int fieldType, int source) {
889
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
890
- callback.success(results.getTextFieldValueByTypeAndSource(fieldType, source));
891
- }
892
-
893
- private void textFieldValueByTypeLcidSource(Callback callback, String raw, int fieldType, int lcid, int source) {
894
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
895
- callback.success(results.getTextFieldValueByType(fieldType, lcid, source));
896
- }
897
-
898
- private void textFieldValueByTypeSourceOriginal(Callback callback, String raw, int fieldType, int source, boolean original) {
899
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
900
- callback.success(results.getTextFieldValueByTypeAndSource(fieldType, source, original));
901
- }
902
-
903
- private void textFieldValueByTypeLcidSourceOriginal(Callback callback, String raw, int fieldType, int lcid, int source, boolean original) {
904
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
905
- callback.success(results.getTextFieldValueByType(fieldType, lcid, source, original));
906
- }
907
-
908
- private void textFieldByType(Callback callback, String raw, int fieldType) {
909
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
910
- DocumentReaderTextField result = results.getTextFieldByType(fieldType);
911
- if (result == null)
912
- callback.success(null);
913
- else
914
- callback.success(generateDocumentReaderTextField(result, getContext()).toString());
915
- }
916
-
917
- private void textFieldByTypeLcid(Callback callback, String raw, int fieldType, int lcid) {
918
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
919
- DocumentReaderTextField result = results.getTextFieldByType(fieldType, lcid);
920
- if (result == null)
921
- callback.success(null);
922
- else
923
- callback.success(generateDocumentReaderTextField(result, getContext()).toString());
924
- }
925
-
926
- private void graphicFieldByTypeSource(Callback callback, String raw, int fieldType, int source) {
927
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
928
- DocumentReaderGraphicField result = results.getGraphicFieldByType(fieldType, source);
929
- if (result == null)
930
- callback.success(null);
931
- else
932
- callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
933
- }
934
-
935
- private void graphicFieldByTypeSourcePageIndex(Callback callback, String raw, int fieldType, int source, int pageIndex) {
936
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
937
- DocumentReaderGraphicField result = results.getGraphicFieldByType(fieldType, source, pageIndex);
938
- if (result == null)
939
- callback.success(null);
940
- else
941
- callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
942
- }
943
-
944
- private void graphicFieldByTypeSourcePageIndexLight(Callback callback, String raw, int fieldType, int source, int pageIndex, int light) {
945
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
946
- DocumentReaderGraphicField result = results.getGraphicFieldByType(fieldType, source, pageIndex, light);
947
- if (result == null)
948
- callback.success(null);
949
- else
950
- callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
951
- }
952
-
953
- private void graphicFieldImageByType(Callback callback, String raw, int fieldType) {
954
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
955
- callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType)));
956
- }
957
-
958
- private void graphicFieldImageByTypeSource(Callback callback, String raw, int fieldType, int source) {
959
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
960
- callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source)));
961
- }
962
-
963
- private void graphicFieldImageByTypeSourcePageIndex(Callback callback, String raw, int fieldType, int source, int pageIndex) {
964
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
965
- callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source, pageIndex)));
966
- }
967
-
968
- private void graphicFieldImageByTypeSourcePageIndexLight(Callback callback, String raw, int fieldType, int source, int pageIndex, int light) {
969
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
970
- callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source, pageIndex, light)));
971
- }
972
-
973
- @SuppressLint("WrongConstant")
974
- private void containers(Callback callback, String raw, JSONArray resultType) {
975
- try {
976
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
977
- callback.success(results.getContainers(intArrayFromJSON(resultType)));
978
- } catch (JSONException e) {
979
- e.printStackTrace();
980
- callback.error(e.toString());
981
- }
982
- }
983
-
984
- private void encryptedContainers(Callback callback, String raw) {
985
- DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
986
- callback.success(results.getEncryptedContainers());
987
- }
988
-
989
- private void setCameraSessionIsPaused(Callback callback, @SuppressWarnings("unused") boolean ignored) {
990
- callback.error("setCameraSessionIsPaused() is an ios-only method");
991
- }
992
-
993
- private void getCameraSessionIsPaused(Callback callback) {
994
- callback.error("getCameraSessionIsPaused() is an ios-only method");
995
- }
996
-
997
- private void stopRFIDReaderWithErrorMessage(Callback callback, @SuppressWarnings("unused") String message) {
998
- callback.error("stopRFIDReaderWithErrorMessage() is an ios-only method");
999
- }
1000
-
1001
- @SuppressWarnings("unused")
1002
- private void recognizeImageWithCameraMode(Callback callback, String base64, boolean mode) {
1003
- callback.error("recognizeImageWithCameraMode() is an ios-only method");
1004
- }
1005
-
1006
- @SuppressWarnings("unused")
1007
- private void setRfidSessionStatus(Callback callback, String s) {
1008
- callback.error("setRfidSessionStatus() is an ios-only method");
1009
- }
1010
-
1011
- private void getRfidSessionStatus(Callback callback) {
1012
- callback.error("getRfidSessionStatus() is an ios-only method");
1013
- }
1014
-
1015
- private IDocumentReaderCompletion getCompletion() {
1016
- return (action, results, error) -> {
1017
- sendEvent(eventCompletion, generateCompletion(action, results, error, getContext()));
1018
- if (action == DocReaderAction.ERROR || action == DocReaderAction.CANCEL || (action == DocReaderAction.COMPLETE && results != null && results.rfidResult == 1))
1019
- stopBackgroundRFID();
1020
- };
1021
- }
1022
-
1023
- private IRfidReaderCompletion getRfidReaderCompletion() {
1024
- return new IRfidReaderCompletion() {
1025
- @Override
1026
- public void onCompleted(int action, @Nullable DocumentReaderResults results, @Nullable DocumentReaderException error) {
1027
- sendEvent(eventCompletion, generateCompletion(action, results, error, getContext()));
1028
- if (action == DocReaderAction.ERROR || action == DocReaderAction.CANCEL || (action == DocReaderAction.COMPLETE && results != null && results.rfidResult == 1))
1029
- stopBackgroundRFID();
1030
- }
1031
-
1032
- @Override
1033
- public void onChipDetected() {
1034
- sendEvent(rfidOnChipDetectedEvent, "");
1035
- }
1036
-
1037
- @Override
1038
- public void onRetryReadChip(@NonNull DocReaderRfidException error) {
1039
- sendEvent(rfidOnRetryReadChipEvent, generateRegulaException(error));
1040
- }
1041
-
1042
- @Override
1043
- public void onProgress(@Nullable DocumentReaderNotification notification) {
1044
- sendEvent(rfidOnProgressEvent, generateDocumentReaderNotification(notification));
1045
- }
1046
- };
1047
- }
1048
-
1049
- private IDocumentReaderPrepareCompletion getPrepareCompletion(Callback callback) {
1050
- return new IDocumentReaderPrepareCompletion() {
1051
- @Override
1052
- public void onPrepareProgressChanged(int progress) {
1053
- if (progress != databaseDownloadProgress) {
1054
- sendEvent(eventDatabaseProgress, progress + "");
1055
- databaseDownloadProgress = progress;
1056
- }
1057
- }
1058
-
1059
- @Override
1060
- public void onPrepareCompleted(boolean status, @Nullable DocumentReaderException error) {
1061
- if (status)
1062
- callback.success("database prepared");
1063
- else
1064
- callback.error("database preparation failed: " + error.toString());
1065
- }
1066
- };
1067
- }
1068
-
1069
- private IDocumentReaderInitCompletion getInitCompletion(Callback callback) {
1070
- return (success, error) -> {
1071
- if (success) {
1072
- Instance().setVideoEncoderCompletion((sessionId, file) -> sendEvent(eventVideoEncoderCompletion, generateVideoEncoderCompletion(sessionId, file)));
1073
- Instance().setOnClickListener(view -> sendEvent(onCustomButtonTappedEvent, view.getTag()));
1074
- callback.success("init completed");
1075
- } else
1076
- callback.error("Init failed:" + error);
1077
- };
1078
- }
1079
-
1080
- private ICheckDatabaseUpdate getCheckDatabaseUpdateCompletion(Callback callback) {
1081
- return (database) -> callback.success(generateDocReaderDocumentsDatabase(database));
1082
- }
1083
-
1084
- private ITccParamsCompletion getTCCParamsCompletion(Callback callback) {
1085
- return (success, error) -> {
1086
- if (success)
1087
- callback.success("success");
1088
- else
1089
- callback.error("failed: " + error.getMessage());
1090
- };
1091
- }
1092
-
1093
- private IRfidReaderRequest getIRfidReaderRequest() {
1094
- return new IRfidReaderRequest() {
1095
- @Override
1096
- public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, @NonNull IRfidPKDCertificateCompletion completion) {
1097
- paCertificateCompletion = completion;
1098
- sendEvent(eventPACertificateCompletion, generatePACertificateCompletion(serialNumber, issuer));
1099
- }
1100
-
1101
- @Override
1102
- public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
1103
- taCertificateCompletion = completion;
1104
- sendEvent(eventTACertificateCompletion, keyCAR);
1105
- }
1106
-
1107
- @Override
1108
- public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
1109
- taSignatureCompletion = completion;
1110
- sendEvent(eventTASignatureCompletion, generateTAChallenge(challenge));
1111
- }
1112
- };
1113
- }
1114
-
1115
- private IRfidReaderRequest getIRfidReaderRequestNoPA() {
1116
- return new IRfidReaderRequest() {
1117
- @Override
1118
- public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, @NonNull IRfidPKDCertificateCompletion completion) {
1119
- paCertificateCompletion = null;
1120
- completion.onCertificatesReceived(new PKDCertificate[0]);
1121
- }
1122
-
1123
- @Override
1124
- public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
1125
- taCertificateCompletion = completion;
1126
- sendEvent(eventTACertificateCompletion, keyCAR);
1127
- }
1128
-
1129
- @Override
1130
- public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
1131
- taSignatureCompletion = completion;
1132
- sendEvent(eventTASignatureCompletion, generateTAChallenge(challenge));
1133
- }
1134
- };
1135
- }
1136
-
1137
- private IRfidReaderRequest getRfidReaderRequest() {
1138
- IRfidReaderRequest delegate = null;
1139
- if (rfidDelegate == RFIDDelegate.NO_PA)
1140
- delegate = getIRfidReaderRequestNoPA();
1141
- if (rfidDelegate == RFIDDelegate.FULL)
1142
- delegate = getIRfidReaderRequest();
1143
- return delegate;
1144
- }
1145
-
1146
- private static int rfidDelegate = RFIDDelegate.NULL;
1147
-
1148
- private static class RFIDDelegate {
1149
- public static final int NULL = 0;
1150
- public static final int NO_PA = 1;
1151
- public static final int FULL = 2;
1152
- }
1153
- }