@@ -19,13 +19,13 @@ import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion
1919import com.regula.documentreader.api.completions.IDocumentReaderPrepareDbCompletion
2020import com.regula.documentreader.api.completions.IVideoEncoderCompletion
2121import 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
2224import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion
2325import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion
2426import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest
2527import 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
2929import com.regula.documentreader.api.enums.DocReaderAction
3030import com.regula.documentreader.api.enums.LCID
3131import com.regula.documentreader.api.enums.eImageQualityCheckType
@@ -39,6 +39,8 @@ import com.regula.documentreader.api.errors.DocReaderRfidException
3939import com.regula.documentreader.api.errors.DocumentReaderException
4040import com.regula.documentreader.api.internal.core.CoreScenarioUtil
4141import 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
4244import com.regula.documentreader.api.results.DocumentReaderNotification
4345import com.regula.documentreader.api.results.DocumentReaderResults
4446import 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"
150154const val paCertificateCompletionEvent = " pa_certificate_completion"
151155const val taCertificateCompletionEvent = " ta_certificate_completion"
152156const val taSignatureCompletionEvent = " ta_signature_completion"
157+ const val paceProtocolCompletionEvent = " paceProtocolCompletionEvent"
158+ const val caProtocolCompletionEvent = " caProtocolCompletionEvent"
153159
154160const val videoEncoderCompletionEvent = " video_encoder_completion"
155161const val onCustomButtonTappedEvent = " onCustomButtonTappedEvent"
@@ -248,22 +254,13 @@ fun startNewPage() = Instance().startNewPage()
248254
249255fun 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+
287292fun 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
545550lateinit var paCertificateCompletion: IRfidPKDCertificateCompletion
546551lateinit var taCertificateCompletion: IRfidPKDCertificateCompletion
547552lateinit 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" )
586589fun 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 }
0 commit comments