@regulaforensics/document-reader 9.4.717-rc → 9.4.720-nightly

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 (36) hide show
  1. package/RNDocumentReader.podspec +2 -2
  2. package/android/build.gradle +2 -2
  3. package/android/cordova.gradle +2 -2
  4. package/android/src/main/java/com/regula/plugin/documentreader/JSONConstructor.kt +36 -0
  5. package/android/src/main/java/com/regula/plugin/documentreader/Main.kt +46 -43
  6. package/examples/capacitor/package-lock.json +15 -15
  7. package/examples/capacitor/package.json +1 -1
  8. package/examples/ionic/package-lock.json +208 -235
  9. package/examples/ionic/package.json +3 -2
  10. package/examples/react_native/package-lock.json +33 -30
  11. package/examples/react_native/package.json +1 -1
  12. package/ios/RGLWJSONConstructor.h +4 -0
  13. package/ios/RGLWJSONConstructor.m +93 -47
  14. package/ios/RGLWMain.h +2 -4
  15. package/ios/RGLWMain.m +49 -13
  16. package/ios/RNDocumentReader.m +2 -0
  17. package/package.json +1 -1
  18. package/plugin.xml +2 -2
  19. package/test/json.tsx +11 -0
  20. package/test/package-lock.json +1 -1
  21. package/test/test.tsx +4 -2
  22. package/www/capacitor/config/RFIDConfig.js +14 -0
  23. package/www/capacitor/index.js +9 -7
  24. package/www/capacitor/internal/bridge.js +19 -1
  25. package/www/capacitor/rfid/CAProtocol.js +27 -0
  26. package/www/capacitor/rfid/PACEProtocol.js +24 -0
  27. package/www/cordova.js +152 -29
  28. package/www/react-native/config/RFIDConfig.js +14 -0
  29. package/www/react-native/index.js +9 -7
  30. package/www/react-native/internal/bridge.js +19 -1
  31. package/www/react-native/rfid/CAProtocol.js +27 -0
  32. package/www/react-native/rfid/PACEProtocol.js +24 -0
  33. package/www/types/config/RFIDConfig.d.ts +35 -3
  34. package/www/types/index.d.ts +3 -1
  35. package/www/types/rfid/CAProtocol.d.ts +6 -0
  36. package/www/types/rfid/PACEProtocol.d.ts +5 -0
@@ -5,7 +5,7 @@ source = File.join(__dir__, 'ios')
5
5
 
6
6
  Pod::Spec.new do |s|
7
7
  s.name = 'RNDocumentReader'
8
- s.version = '9.4.717-rc'
8
+ s.version = '9.4.720-nightly'
9
9
  s.summary = package['description']
10
10
  s.license = package['license']
11
11
 
@@ -16,6 +16,6 @@ Pod::Spec.new do |s|
16
16
  s.ios.deployment_target = '13.0'
17
17
  s.source_files = 'ios/**/*.{h,m}'
18
18
  s.exclude_files = [ 'ios/CVDDocumentReader.h', 'ios/CVDDocumentReader.m' ]
19
- s.dependency 'DocumentReaderStage', '9.4.6188'
19
+ s.dependency 'DocumentReaderNightly', '9.4.6191'
20
20
  s.dependency 'React'
21
21
  end
@@ -20,7 +20,7 @@ android {
20
20
  rootProject.allprojects {
21
21
  repositories {
22
22
  maven {
23
- url "https://maven.regulaforensics.com/RegulaDocumentReader/Stage"
23
+ url "https://maven.regulaforensics.com/RegulaDocumentReader/Nightly"
24
24
  }
25
25
  }
26
26
  }
@@ -29,7 +29,7 @@ dependencies {
29
29
  //noinspection GradleDynamicVersion
30
30
  implementation 'com.facebook.react:react-native:+'
31
31
  //noinspection GradleDependency
32
- implementation('com.regula.documentreader:api:9.3.12716'){
32
+ implementation('com.regula.documentreader:api:9.4.12719'){
33
33
  transitive = true
34
34
  }
35
35
  }
@@ -1,12 +1,12 @@
1
1
  repositories {
2
2
  maven {
3
- url "https://maven.regulaforensics.com/RegulaDocumentReader/Stage"
3
+ url "https://maven.regulaforensics.com/RegulaDocumentReader/Nightly"
4
4
  }
5
5
  }
6
6
 
7
7
  dependencies {
8
8
  //noinspection GradleDependency
9
- implementation('com.regula.documentreader:api:9.3.12716'){
9
+ implementation('com.regula.documentreader:api:9.4.12719'){
10
10
  transitive = true
11
11
  }
12
12
  }
@@ -47,7 +47,9 @@ import com.regula.documentreader.api.params.mdl.DeviceRetrievalMethod
47
47
  import com.regula.documentreader.api.params.mdl.DocumentRequest18013MDL
48
48
  import com.regula.documentreader.api.params.mdl.DocumentRequestMDL
49
49
  import com.regula.documentreader.api.params.mdl.NameSpaceMDL
50
+ import com.regula.documentreader.api.params.rfid.CaProtocol
50
51
  import com.regula.documentreader.api.params.rfid.PKDCertificate
52
+ import com.regula.documentreader.api.params.rfid.PaceProtocol
51
53
  import com.regula.documentreader.api.params.rfid.RFIDParams
52
54
  import com.regula.documentreader.api.params.rfid.TccParams
53
55
  import com.regula.documentreader.api.params.rfid.authorization.PAAttribute
@@ -2138,3 +2140,37 @@ fun generateFinalizeConfig(input: FinalizeConfig?) = input?.let {
2138
2140
  "mdlSession" to it.getPrivateProperty("mdlSession"),
2139
2141
  ).toJson()
2140
2142
  }
2143
+
2144
+ fun paceProtocolFromJSON(input: JSONObject?) = input?.let {
2145
+ PaceProtocol(
2146
+ it.getString("version"),
2147
+ it.getString("stdDomainParams"),
2148
+ it.getString("keyAlgorithm"),
2149
+ )
2150
+ }
2151
+
2152
+ fun generatePaceProtocol(input: PaceProtocol?) = input?.let {
2153
+ mapOf(
2154
+ "version" to it.version,
2155
+ "stdDomainParams" to it.stdDomainParams,
2156
+ "keyAlgorithm" to it.keyAlgorithm,
2157
+ ).toJson()
2158
+ }
2159
+
2160
+ fun caProtocolFromJSON(input: JSONObject?) = input?.let {
2161
+ CaProtocol(
2162
+ it.getString("version"),
2163
+ it.getString("scheme"),
2164
+ it.getString("keyAlgorithm"),
2165
+ it.getBoolean("chipIndividual"),
2166
+ )
2167
+ }
2168
+
2169
+ fun generateCaProtocol(input: CaProtocol?) = input?.let {
2170
+ mapOf(
2171
+ "version" to it.version,
2172
+ "scheme" to it.scheme,
2173
+ "keyAlgorithm" to it.keyAlgorithm,
2174
+ "chipIndividual" to it.isChipIndividual,
2175
+ ).toJson()
2176
+ }
@@ -19,13 +19,13 @@ import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion
19
19
  import com.regula.documentreader.api.completions.IDocumentReaderPrepareDbCompletion
20
20
  import com.regula.documentreader.api.completions.IVideoEncoderCompletion
21
21
  import com.regula.documentreader.api.completions.model.PrepareProgress
22
+ import com.regula.documentreader.api.completions.rfid.ICaProtocolCompletion
23
+ import com.regula.documentreader.api.completions.rfid.IPaceProtocolCompletion
22
24
  import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion
23
25
  import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion
24
26
  import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest
25
27
  import com.regula.documentreader.api.completions.rfid.IRfidTASignatureCompletion
26
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidPACertificates
27
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidTACertificates
28
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidTASignature
28
+ import com.regula.documentreader.api.completions.rfid.certificates.IRfidAccessControl
29
29
  import com.regula.documentreader.api.enums.DocReaderAction
30
30
  import com.regula.documentreader.api.enums.LCID
31
31
  import com.regula.documentreader.api.enums.eImageQualityCheckType
@@ -39,6 +39,8 @@ import com.regula.documentreader.api.errors.DocReaderRfidException
39
39
  import com.regula.documentreader.api.errors.DocumentReaderException
40
40
  import com.regula.documentreader.api.internal.core.CoreScenarioUtil
41
41
  import com.regula.documentreader.api.params.mdl.DataRetrieval
42
+ import com.regula.documentreader.api.params.rfid.CaProtocol
43
+ import com.regula.documentreader.api.params.rfid.PaceProtocol
42
44
  import com.regula.documentreader.api.results.DocumentReaderNotification
43
45
  import com.regula.documentreader.api.results.DocumentReaderResults
44
46
  import com.regula.documentreader.api.results.DocumentReaderResults.fromRawResults
@@ -84,12 +86,14 @@ fun methodCall(method: String, callback: (Any?) -> Unit): Any = when (method) {
84
86
  "recognize" -> recognize(args(0))
85
87
  "startNewPage" -> startNewPage()
86
88
  "stopScanner" -> stopScanner()
87
- "startRFIDReader" -> startRFIDReader(args(0), args(1), args(2))
88
- "readRFID" -> readRFID(args(0), args(1), args(2))
89
+ "startRFIDReader" -> startRFIDReader(argsNullable(0))
90
+ "readRFID" -> readRFID(argsNullable(0))
89
91
  "stopRFIDReader" -> stopRFIDReader()
90
92
  "providePACertificates" -> providePACertificates(argsNullable(0))
91
93
  "provideTACertificates" -> provideTACertificates(argsNullable(0))
92
94
  "provideTASignature" -> provideTASignature(args(0))
95
+ "selectPACEProtocol" -> selectPACEProtocol(args(0))
96
+ "selectCAProtocol" -> selectCAProtocol(args(0))
93
97
  "setTCCParams" -> setTCCParams(callback, args(0))
94
98
  "addPKDCertificates" -> addPKDCertificates(args(0))
95
99
  "clearPKDCertificates" -> clearPKDCertificates()
@@ -150,6 +154,8 @@ const val rfidOnRetryReadChipEvent = "rfidOnRetryReadChipEvent"
150
154
  const val paCertificateCompletionEvent = "pa_certificate_completion"
151
155
  const val taCertificateCompletionEvent = "ta_certificate_completion"
152
156
  const val taSignatureCompletionEvent = "ta_signature_completion"
157
+ const val paceProtocolCompletionEvent = "paceProtocolCompletionEvent"
158
+ const val caProtocolCompletionEvent = "caProtocolCompletionEvent"
153
159
 
154
160
  const val videoEncoderCompletionEvent = "video_encoder_completion"
155
161
  const val onCustomButtonTappedEvent = "onCustomButtonTappedEvent"
@@ -248,22 +254,13 @@ fun startNewPage() = Instance().startNewPage()
248
254
 
249
255
  fun stopScanner() = Instance().stopScanner(context)
250
256
 
251
- fun startRFIDReader(onRequestPACertificates: Boolean, onRequestTACertificates: Boolean, onRequestTASignature: Boolean) {
257
+ fun startRFIDReader(config: JSONObject?) {
252
258
  stopBackgroundRFID()
253
- requestType = RfidReaderRequestType(
254
- onRequestPACertificates,
255
- onRequestTACertificates,
256
- onRequestTASignature
257
- )
258
- Instance().startRFIDReader(activity, rfidReaderCompletion, requestType.getRfidReaderRequest())
259
+ Instance().startRFIDReader(activity, rfidReaderCompletion, getRfidReaderRequest(config))
259
260
  }
260
261
 
261
- fun readRFID(onRequestPACertificates: Boolean, onRequestTACertificates: Boolean, onRequestTASignature: Boolean) {
262
- requestType = RfidReaderRequestType(
263
- onRequestPACertificates,
264
- onRequestTACertificates,
265
- onRequestTASignature
266
- )
262
+ fun readRFID(config: JSONObject?) {
263
+ rfidReaderRequest = getRfidReaderRequest(config)
267
264
  startForegroundDispatch("readRFID")
268
265
  }
269
266
 
@@ -284,6 +281,14 @@ fun provideTASignature(signature: String?) = taSignatureCompletion.onSignatureRe
284
281
  signature.toByteArray()
285
282
  )
286
283
 
284
+ fun selectPACEProtocol(protocol: JSONObject) = paceProtocolCompletion.onPaceProtocolSelected(
285
+ paceProtocolFromJSON(protocol)!!
286
+ )
287
+
288
+ fun selectCAProtocol(protocol: JSONObject) = caProtocolCompletion.onCaProtocolSelected(
289
+ caProtocolFromJSON(protocol)!!
290
+ )
291
+
287
292
  fun setTCCParams(callback: Callback, params: JSONObject) {
288
293
  Instance().setTccParams(tccParamsFromJSON(params)) { success, error ->
289
294
  callback(generateSuccessCompletion(success, error))
@@ -545,49 +550,47 @@ fun initCompletion(callback: Callback) = IDocumentReaderInitCompletion { success
545
550
  lateinit var paCertificateCompletion: IRfidPKDCertificateCompletion
546
551
  lateinit var taCertificateCompletion: IRfidPKDCertificateCompletion
547
552
  lateinit var taSignatureCompletion: IRfidTASignatureCompletion
553
+ lateinit var paceProtocolCompletion: IPaceProtocolCompletion
554
+ lateinit var caProtocolCompletion: ICaProtocolCompletion
555
+
556
+ var rfidReaderRequest = getRfidReaderRequest()
557
+
558
+ fun getRfidReaderRequest(config: JSONObject? = null): IRfidReaderRequest {
559
+ val result = IRfidReaderRequest()
560
+ if (config == null) return result
548
561
 
549
- class RfidReaderRequestType(
550
- val doPACertificates: Boolean,
551
- val doTACertificates: Boolean,
552
- val doTASignature: Boolean
553
- ) {
554
- private val onRequestPACertificates = IRfidPACertificates { serialNumber, issuer, completion ->
562
+ if (config.getBoolean("paCertificates")) result.setPACertificates { serialNumber, issuer, completion ->
555
563
  paCertificateCompletion = completion
556
564
  sendEvent(paCertificateCompletionEvent, generatePACertificateCompletion(serialNumber, issuer))
557
565
  }
558
- private val onRequestTACertificates = IRfidTACertificates { keyCAR, completion ->
566
+ if (config.getBoolean("taCertificates")) result.setTACertificates { keyCAR, completion ->
559
567
  taCertificateCompletion = completion
560
568
  sendEvent(taCertificateCompletionEvent, keyCAR)
561
569
  }
562
- private val onRequestTASignature = IRfidTASignature { challenge, completion ->
570
+ if (config.getBoolean("taSignature")) result.setTASignature { challenge, completion ->
563
571
  taSignatureCompletion = completion
564
572
  sendEvent(taSignatureCompletionEvent, generateTAChallenge(challenge))
565
573
  }
574
+ if (config.getBoolean("paceProtocol") || config.getBoolean("caProtocol")) result.setRfidAccessControl(object : IRfidAccessControl {
575
+ override fun onRequestPaceProtocol(list: List<PaceProtocol?>, completion: IPaceProtocolCompletion) {
576
+ paceProtocolCompletion = completion
577
+ sendEvent(paceProtocolCompletionEvent, list.toJson(::generatePaceProtocol))
578
+ }
579
+ override fun onRequestCaProtocol(list: List<CaProtocol?>, completion: ICaProtocolCompletion) {
580
+ caProtocolCompletion = completion
581
+ sendEvent(caProtocolCompletionEvent, list.toJson(::generateCaProtocol))
582
+ }
583
+ })
566
584
 
567
- fun getRfidReaderRequest(): IRfidReaderRequest? = when {
568
- !doPACertificates && !doTACertificates && doTASignature -> IRfidReaderRequest(onRequestTASignature)
569
- !doPACertificates && doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestTACertificates)
570
- !doPACertificates && doTACertificates && doTASignature -> IRfidReaderRequest(onRequestTACertificates, onRequestTASignature)
571
- doPACertificates && !doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestPACertificates)
572
- doPACertificates && !doTACertificates && doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTASignature)
573
- doPACertificates && doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTACertificates)
574
- doPACertificates && doTACertificates && doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTACertificates, onRequestTASignature)
575
- else -> null
576
- }
585
+ return result
577
586
  }
578
587
 
579
- var requestType = RfidReaderRequestType(
580
- doPACertificates = false,
581
- doTACertificates = false,
582
- doTASignature = false
583
- )
584
-
585
588
  @Suppress("DEPRECATION", "MissingPermission")
586
589
  fun newIntent(intent: Intent): Boolean {
587
590
  if (intent.action != NfcAdapter.ACTION_TECH_DISCOVERED) return false
588
591
  val isoDep = IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG))
589
592
  when (nfcFunction) {
590
- "readRFID" -> Instance().readRFID(isoDep, rfidReaderCompletion, requestType.getRfidReaderRequest())
593
+ "readRFID" -> Instance().readRFID(isoDep, rfidReaderCompletion, rfidReaderRequest)
591
594
  "engageDeviceNFC" -> Instance().engageDeviceNFC(isoDep) { v1, v2 -> engageDeviceNFCCallback(generateDeviceEngagementCompletion(v1, v2)) }
592
595
  "retrieveDataNFC" -> Instance().retrieveDataNFC(isoDep, retrieveDataNFCProp) { v1, v2, v3 -> retrieveDataNFCCallback(generateCompletion(v1, v2, v3)) }
593
596
  }
@@ -1613,9 +1613,9 @@
1613
1613
  }
1614
1614
  },
1615
1615
  "node_modules/@xmldom/xmldom": {
1616
- "version": "0.8.11",
1617
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
1618
- "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
1616
+ "version": "0.8.12",
1617
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz",
1618
+ "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==",
1619
1619
  "license": "MIT",
1620
1620
  "engines": {
1621
1621
  "node": ">=10.0.0"
@@ -1659,9 +1659,9 @@
1659
1659
  }
1660
1660
  },
1661
1661
  "node_modules/anymatch/node_modules/picomatch": {
1662
- "version": "2.3.1",
1663
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1664
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1662
+ "version": "2.3.2",
1663
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
1664
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
1665
1665
  "license": "MIT",
1666
1666
  "engines": {
1667
1667
  "node": ">=8.6"
@@ -1760,9 +1760,9 @@
1760
1760
  }
1761
1761
  },
1762
1762
  "node_modules/brace-expansion": {
1763
- "version": "5.0.4",
1764
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
1765
- "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
1763
+ "version": "5.0.5",
1764
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
1765
+ "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
1766
1766
  "license": "MIT",
1767
1767
  "dependencies": {
1768
1768
  "balanced-match": "^4.0.2"
@@ -2569,9 +2569,9 @@
2569
2569
  "license": "ISC"
2570
2570
  },
2571
2571
  "node_modules/picomatch": {
2572
- "version": "4.0.3",
2573
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
2574
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
2572
+ "version": "4.0.4",
2573
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
2574
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
2575
2575
  "license": "MIT",
2576
2576
  "engines": {
2577
2577
  "node": ">=12"
@@ -2704,9 +2704,9 @@
2704
2704
  }
2705
2705
  },
2706
2706
  "node_modules/readdirp/node_modules/picomatch": {
2707
- "version": "2.3.1",
2708
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2709
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2707
+ "version": "2.3.2",
2708
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
2709
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
2710
2710
  "license": "MIT",
2711
2711
  "engines": {
2712
2712
  "node": ">=8.6"
@@ -6,7 +6,7 @@
6
6
  "android": "scripts/android.sh"
7
7
  },
8
8
  "dependencies": {
9
- "@regulaforensics/document-reader": "9.4.717-rc",
9
+ "@regulaforensics/document-reader": "9.4.720-nightly",
10
10
  "@regulaforensics/document-reader-core-fullauthrfid": "9.3.1817",
11
11
  "@regulaforensics/document-reader-btdevice": "9.1.35",
12
12
  "@awesome-cordova-plugins/file": "^8.1.0",