Skip to content

Commit f1de989

Browse files
author
Jenkins
committed
9.4.557
1 parent ab2577b commit f1de989

15 files changed

Lines changed: 432 additions & 170 deletions

RNDocumentReaderApi.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ Pod::Spec.new do |s|
1414
s.source = { :http => 'file:' + __dir__ }
1515
s.ios.deployment_target = '13.0'
1616
s.source_files = "ios/*.{h,m}"
17-
s.dependency 'DocumentReader', '9.3.6250'
17+
s.dependency 'DocumentReader', '9.4.6317'
1818
s.dependency 'React'
1919
end

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dependencies {
2929
//noinspection GradleDynamicVersion
3030
implementation 'com.facebook.react:react-native:+'
3131
//noinspection GradleDependency
32-
implementation('com.regula.documentreader:api:9.3.12771') {
32+
implementation('com.regula.documentreader:api:9.4.12820') {
3333
transitive = true
3434
}
3535
}

android/src/main/java/com/regula/plugin/documentreader/JSONConstructor.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ import com.regula.documentreader.api.params.mdl.DeviceRetrievalMethod
4747
import com.regula.documentreader.api.params.mdl.DocumentRequest18013MDL
4848
import com.regula.documentreader.api.params.mdl.DocumentRequestMDL
4949
import com.regula.documentreader.api.params.mdl.NameSpaceMDL
50+
import com.regula.documentreader.api.params.rfid.CaProtocol
5051
import com.regula.documentreader.api.params.rfid.PKDCertificate
52+
import com.regula.documentreader.api.params.rfid.PaceProtocol
5153
import com.regula.documentreader.api.params.rfid.RFIDParams
5254
import com.regula.documentreader.api.params.rfid.TccParams
5355
import com.regula.documentreader.api.params.rfid.authorization.PAAttribute
@@ -2138,3 +2140,37 @@ fun generateFinalizeConfig(input: FinalizeConfig?) = input?.let {
21382140
"mdlSession" to it.getPrivateProperty("mdlSession"),
21392141
).toJson()
21402142
}
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+
}

android/src/main/java/com/regula/plugin/documentreader/Main.kt

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion
1919
import com.regula.documentreader.api.completions.IDocumentReaderPrepareDbCompletion
2020
import com.regula.documentreader.api.completions.IVideoEncoderCompletion
2121
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
2224
import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion
2325
import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion
2426
import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest
2527
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
2929
import com.regula.documentreader.api.enums.DocReaderAction
3030
import com.regula.documentreader.api.enums.LCID
3131
import com.regula.documentreader.api.enums.eImageQualityCheckType
@@ -39,6 +39,8 @@ import com.regula.documentreader.api.errors.DocReaderRfidException
3939
import com.regula.documentreader.api.errors.DocumentReaderException
4040
import com.regula.documentreader.api.internal.core.CoreScenarioUtil
4141
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
4244
import com.regula.documentreader.api.results.DocumentReaderNotification
4345
import com.regula.documentreader.api.results.DocumentReaderResults
4446
import com.regula.documentreader.api.results.DocumentReaderResults.fromRawResults
@@ -84,12 +86,14 @@ fun methodCall(method: String, callback: (Any?) -> Unit): Any = when (method) {
8486
"recognize" -> recognize(args(0))
8587
"startNewPage" -> startNewPage()
8688
"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))
8991
"stopRFIDReader" -> stopRFIDReader()
9092
"providePACertificates" -> providePACertificates(argsNullable(0))
9193
"provideTACertificates" -> provideTACertificates(argsNullable(0))
9294
"provideTASignature" -> provideTASignature(args(0))
95+
"selectPACEProtocol" -> selectPACEProtocol(args(0))
96+
"selectCAProtocol" -> selectCAProtocol(args(0))
9397
"setTCCParams" -> setTCCParams(callback, args(0))
9498
"addPKDCertificates" -> addPKDCertificates(args(0))
9599
"clearPKDCertificates" -> clearPKDCertificates()
@@ -150,6 +154,8 @@ const val rfidOnRetryReadChipEvent = "rfidOnRetryReadChipEvent"
150154
const val paCertificateCompletionEvent = "pa_certificate_completion"
151155
const val taCertificateCompletionEvent = "ta_certificate_completion"
152156
const val taSignatureCompletionEvent = "ta_signature_completion"
157+
const val paceProtocolCompletionEvent = "paceProtocolCompletionEvent"
158+
const val caProtocolCompletionEvent = "caProtocolCompletionEvent"
153159

154160
const val videoEncoderCompletionEvent = "video_encoder_completion"
155161
const val onCustomButtonTappedEvent = "onCustomButtonTappedEvent"
@@ -248,22 +254,13 @@ fun startNewPage() = Instance().startNewPage()
248254

249255
fun stopScanner() = Instance().stopScanner(context)
250256

251-
fun startRFIDReader(onRequestPACertificates: Boolean, onRequestTACertificates: Boolean, onRequestTASignature: Boolean) {
257+
fun startRFIDReader(config: JSONObject?) {
252258
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))
259260
}
260261

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)
267264
startForegroundDispatch("readRFID")
268265
}
269266

@@ -284,6 +281,14 @@ fun provideTASignature(signature: String?) = taSignatureCompletion.onSignatureRe
284281
signature.toByteArray()
285282
)
286283

284+
fun selectPACEProtocol(protocol: JSONObject) = paceProtocolCompletion.onPaceProtocolSelected(
285+
paceProtocolFromJSON(protocol)!!
286+
)
287+
288+
fun selectCAProtocol(protocol: JSONObject) = caProtocolCompletion.onCaProtocolSelected(
289+
caProtocolFromJSON(protocol)!!
290+
)
291+
287292
fun setTCCParams(callback: Callback, params: JSONObject) {
288293
Instance().setTccParams(tccParamsFromJSON(params)) { success, error ->
289294
callback(generateSuccessCompletion(success, error))
@@ -545,49 +550,47 @@ fun initCompletion(callback: Callback) = IDocumentReaderInitCompletion { success
545550
lateinit var paCertificateCompletion: IRfidPKDCertificateCompletion
546551
lateinit var taCertificateCompletion: IRfidPKDCertificateCompletion
547552
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
548561

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 ->
555563
paCertificateCompletion = completion
556564
sendEvent(paCertificateCompletionEvent, generatePACertificateCompletion(serialNumber, issuer))
557565
}
558-
private val onRequestTACertificates = IRfidTACertificates { keyCAR, completion ->
566+
if (config.getBoolean("taCertificates")) result.setTACertificates { keyCAR, completion ->
559567
taCertificateCompletion = completion
560568
sendEvent(taCertificateCompletionEvent, keyCAR)
561569
}
562-
private val onRequestTASignature = IRfidTASignature { challenge, completion ->
570+
if (config.getBoolean("taSignature")) result.setTASignature { challenge, completion ->
563571
taSignatureCompletion = completion
564572
sendEvent(taSignatureCompletionEvent, generateTAChallenge(challenge))
565573
}
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+
})
566584

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
577586
}
578587

579-
var requestType = RfidReaderRequestType(
580-
doPACertificates = false,
581-
doTACertificates = false,
582-
doTASignature = false
583-
)
584-
585588
@Suppress("DEPRECATION", "MissingPermission")
586589
fun newIntent(intent: Intent): Boolean {
587590
if (intent.action != NfcAdapter.ACTION_TECH_DISCOVERED) return false
588591
val isoDep = IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG))
589592
when (nfcFunction) {
590-
"readRFID" -> Instance().readRFID(isoDep, rfidReaderCompletion, requestType.getRfidReaderRequest())
593+
"readRFID" -> Instance().readRFID(isoDep, rfidReaderCompletion, rfidReaderRequest)
591594
"engageDeviceNFC" -> Instance().engageDeviceNFC(isoDep) { v1, v2 -> engageDeviceNFCCallback(generateDeviceEngagementCompletion(v1, v2)) }
592595
"retrieveDataNFC" -> Instance().retrieveDataNFC(isoDep, retrieveDataNFCProp) { v1, v2, v3 -> retrieveDataNFCCallback(generateCompletion(v1, v2, v3)) }
593596
}

example/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,12 @@ export default class App extends React.Component<IProps, IState> {
210210

211211
customRFID() {
212212
this.showRfidUI()
213-
DocumentReader.readRFID(false, false, false, _ => { }, _ => { })
213+
DocumentReader.readRFID(null, _ => { }, _ => { })
214214
}
215215

216216
usualRFID() {
217217
isReadingRfid = true
218-
DocumentReader.startRFIDReader(false, false, false, _ => { }, _ => { })
218+
DocumentReader.startRFIDReader(null, _ => { }, _ => { })
219219
}
220220

221221
handleResults(results: DocumentReaderResults) {

0 commit comments

Comments
 (0)