@pagopa/io-react-native-cie 1.2.2 → 1.2.3

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.
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
16
16
  s.source_files = "ios/**/*.{h,m,mm,swift}"
17
17
 
18
18
  # CieSDK dependency
19
- s.dependency "CieSDK", "~> 0.1.13"
19
+ s.dependency "CieSDK", "~> 0.1.15"
20
20
 
21
21
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
22
22
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
package/README.md CHANGED
@@ -323,6 +323,7 @@ List of error event that may be emitted during CIE reading process
323
323
  | APDU_ERROR | Protocol error or not supported |
324
324
  | CARD_BLOCKED | Too many PIN attempts, card is blocked |
325
325
  | WRONG_PIN | Wrong PIN |
326
+ | WRONG_CAN | Wrong CAN |
326
327
  | NO_INTERNET_CONNECTION | Missing internet connection |
327
328
  | CERTIFICATE_EXPIRED | CIE expired |
328
329
  | CERTIFICATE_REVOKED | CIE revoked |
@@ -78,6 +78,6 @@ dependencies {
78
78
  implementation "com.facebook.react:react-android"
79
79
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
80
80
  // CIE SDK
81
- implementation "it.pagopa.io.app.cie:cie:0.1.7"
81
+ implementation "it.pagopa.io.app.cie:cie:0.1.9"
82
82
  }
83
83
 
@@ -12,6 +12,7 @@ import it.pagopa.io.app.cie.CieLogger
12
12
  import it.pagopa.io.app.cie.CieSDK
13
13
  import it.pagopa.io.app.cie.IntAuthMRTDResponse
14
14
  import it.pagopa.io.app.cie.NisAndPaceCallback
15
+ import it.pagopa.io.app.cie.cie.CertificateData
15
16
  import it.pagopa.io.app.cie.cie.CieAtrCallback
16
17
  import it.pagopa.io.app.cie.cie.NfcError
17
18
  import it.pagopa.io.app.cie.cie.NfcEvent
@@ -23,6 +24,7 @@ import it.pagopa.io.app.cie.nis.NisCallback
23
24
  import it.pagopa.io.app.cie.pace.MRTDResponse
24
25
  import it.pagopa.io.app.cie.pace.PaceCallback
25
26
  import it.pagopa.io.app.cie.toHex
27
+ import it.pagopa.io.app.cie.cie.CieCertificateDataCallback
26
28
  import java.net.URL
27
29
 
28
30
  class IoReactNativeCieModule(reactContext: ReactApplicationContext) :
@@ -407,6 +409,66 @@ class IoReactNativeCieModule(reactContext: ReactApplicationContext) :
407
409
  }
408
410
  }
409
411
 
412
+ @Suppress("unused")
413
+ @ReactMethod
414
+ fun startReadingCertificate(
415
+ pin: String,
416
+ timeout: Int = 10000,
417
+ promise: Promise,
418
+ ) {
419
+ try {
420
+ cieSdk.setPin(pin)
421
+ } catch (e: Exception) {
422
+ promise.reject(ModuleException.PIN_REGEX_NOT_VALID, e.message, e)
423
+ return
424
+ }
425
+
426
+ try {
427
+ cieSdk.startReadingCertificate(timeout, object : NfcEvents {
428
+ override fun event(event: NfcEvent) {
429
+ this@IoReactNativeCieModule.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
430
+ .emit(EventType.EVENT.value, WritableNativeMap().apply {
431
+ putString("name", event.name)
432
+ putDouble(
433
+ "progress", (event.numerator.toDouble() / NfcEvent.totalNumeratorEvent.toDouble())
434
+ )
435
+ })
436
+ }
437
+
438
+ override fun error(error: NfcError) {
439
+ this@IoReactNativeCieModule.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
440
+ .emit(EventType.ERROR.value, WritableNativeMap().apply {
441
+ putString("name", mapNfcError(error).name)
442
+ error.msg?.let { putString("msg", it) }
443
+ error.numberOfAttempts?.let { putInt("attemptsLeft", it) }
444
+ })
445
+
446
+ }
447
+ }, object : CieCertificateDataCallback {
448
+ override fun onSuccess(data: CertificateData) {
449
+ this@IoReactNativeCieModule.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
450
+ .emit(EventType.CERTIFICATE_SUCCESS.value, WritableNativeMap().apply {
451
+ putString("name", data.name)
452
+ putString("surname", data.surname)
453
+ putString("fiscalCode", data.fiscalCode)
454
+ putString("docSerialNumber", data.docSerialNumber)
455
+ })
456
+ }
457
+
458
+ override fun onError(error: NfcError) {
459
+ this@IoReactNativeCieModule.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
460
+ .emit(EventType.ERROR.value, WritableNativeMap().apply {
461
+ putString("name", mapNfcError(error).name)
462
+ error.msg?.let { putString("message", it) }
463
+ })
464
+ }
465
+ })
466
+ promise.resolve(null)
467
+ } catch (e: Exception) {
468
+ promise.reject(ModuleException.UNKNOWN_EXCEPTION, e.message, e)
469
+ }
470
+ }
471
+
410
472
  @Suppress("unused")
411
473
  @ReactMethod
412
474
  fun stopReading() {
@@ -420,6 +482,7 @@ class IoReactNativeCieModule(reactContext: ReactApplicationContext) :
420
482
  NfcError.APDU_ERROR -> ErrorType.APDU_ERROR
421
483
  NfcError.EXTENDED_APDU_NOT_SUPPORTED -> ErrorType.APDU_ERROR
422
484
  NfcError.WRONG_PIN -> ErrorType.WRONG_PIN
485
+ NfcError.WRONG_CAN -> ErrorType.WRONG_CAN
423
486
  NfcError.PIN_BLOCKED -> ErrorType.CARD_BLOCKED
424
487
  else -> ErrorType.GENERIC_ERROR
425
488
  }
@@ -468,7 +531,8 @@ class IoReactNativeCieModule(reactContext: ReactApplicationContext) :
468
531
  INTERNAL_AUTHENTICATION_SUCCESS("onInternalAuthenticationSuccess"),
469
532
  MRTD_WITH_PACE_SUCCESS("onMRTDWithPaceSuccess"),
470
533
  INTERNAL_AUTH_AND_MRTD_WITH_PACE_SUCCESS("onInternalAuthAndMRTDWithPaceSuccess"),
471
- SUCCESS("onSuccess")
534
+ SUCCESS("onSuccess"),
535
+ CERTIFICATE_SUCCESS("onCertificateSuccess")
472
536
  }
473
537
 
474
538
  enum class ErrorType {
@@ -476,6 +540,7 @@ class IoReactNativeCieModule(reactContext: ReactApplicationContext) :
476
540
  TAG_LOST,
477
541
  APDU_ERROR,
478
542
  WRONG_PIN,
543
+ WRONG_CAN,
479
544
  CARD_BLOCKED,
480
545
  NO_INTERNET_CONNECTION,
481
546
  CERTIFICATE_EXPIRED,
@@ -54,6 +54,11 @@ RCT_EXTERN_METHOD(startReading: (NSString)pin
54
54
  withResolver: (RCTPromiseResolveBlock)resolve
55
55
  withRejecter: (RCTPromiseRejectBlock)reject)
56
56
 
57
+ RCT_EXTERN_METHOD(startReadingCertificate: (NSString)pin
58
+ withTimeout: (NSNumber)timeout
59
+ withResolver: (RCTPromiseResolveBlock)resolve
60
+ withRejecter: (RCTPromiseRejectBlock)reject)
61
+
57
62
  + (BOOL)requiresMainQueueSetup
58
63
  {
59
64
  return NO;
@@ -260,6 +260,38 @@ class IoReactNativeCie: RCTEventEmitter {
260
260
  }
261
261
  }
262
262
 
263
+ @objc func startReadingCertificate(
264
+ _ pin: String,
265
+ withTimeout timeout: Int,
266
+ withResolver resolve: @escaping RCTPromiseResolveBlock,
267
+ withRejecter reject: @escaping RCTPromiseRejectBlock
268
+ ) {
269
+ Task { [weak self] in
270
+ guard let self = self else {
271
+ reject(ModuleException.threadingError.rawValue, "Failed to perform background operation, self was deallocated", nil)
272
+ return
273
+ }
274
+
275
+ guard pin.count == 8, pin.allSatisfy(\.isNumber) else {
276
+ reject(ModuleException.invalidPin.rawValue, "Pin must be exactly 8 digits", nil)
277
+ return
278
+ }
279
+
280
+ do {
281
+ let data = try await self.cieSdk.performCertificate(withPin: pin, handleReadEvent)
282
+ self.sendEvent(
283
+ withName: EventType.onCertificateSuccess.rawValue, body: ["name": data.name, "surname": data.surname, "docSerialNumber": data.docSerialNumber, "fiscalCode": data.fiscalCode])
284
+ } catch {
285
+ guard let nfcDigitalIdError = error as? NfcDigitalIdError else {
286
+ reject(ModuleException.unexpected.rawValue, error.localizedDescription, error)
287
+ return
288
+ }
289
+ handleReadError(nfcDigitalIdError)
290
+ resolve(nil)
291
+ }
292
+ }
293
+ }
294
+
263
295
  func handleReadEvent(event: CieSDK.CieDigitalIdEvent, progress: Float) {
264
296
  let payload: NSDictionary = ["name": "\(event)", "progress": progress]
265
297
  self.sendEvent(withName: EventType.onEvent.rawValue, body: payload)
@@ -284,6 +316,8 @@ class IoReactNativeCie: RCTEventEmitter {
284
316
  payload = [ "name": ErrorType.APDU_ERROR.rawValue, "message": error.description ]
285
317
  case .wrongPin(let attemptsLeft):
286
318
  payload = [ "name":ErrorType.WRONG_PIN.rawValue, "message": error.description, "attemptsLeft": attemptsLeft ]
319
+ case .wrongCan:
320
+ payload = [ "name":ErrorType.WRONG_CAN.rawValue, "message": error.description ]
287
321
  case .cardBlocked:
288
322
  payload = [ "name": ErrorType.CARD_BLOCKED.rawValue, "message": error.description ]
289
323
  case .sslError:
@@ -303,6 +337,7 @@ class IoReactNativeCie: RCTEventEmitter {
303
337
  case onMRTDWithPaceSuccess
304
338
  case onInternalAuthAndMRTDWithPaceSuccess
305
339
  case onSuccess
340
+ case onCertificateSuccess
306
341
  }
307
342
 
308
343
  private enum ErrorType: String, CaseIterable {
@@ -311,6 +346,7 @@ class IoReactNativeCie: RCTEventEmitter {
311
346
  case CANCELLED_BY_USER
312
347
  case APDU_ERROR
313
348
  case WRONG_PIN
349
+ case WRONG_CAN
314
350
  case CARD_BLOCKED
315
351
  case NO_INTERNET_CONNECTION
316
352
  case CERTIFICATE_EXPIRED
@@ -241,6 +241,26 @@ const startReading = async (pin, authenticationUrl, timeout = DEFAULT_TIMEOUT) =
241
241
  return IoReactNativeCie.startReading(pin, authenticationUrl, timeout);
242
242
  };
243
243
 
244
+ /**
245
+ * Starts the CIE certificate reading process.
246
+ * This method extracts the data from the CIE card certificate.
247
+ * Upon success, the `onCertificateSuccess` event is emitted with the certificate data.
248
+ *
249
+ * @param pin - The CIE card PIN code
250
+ * @param timeout - Optional timeout in milliseconds (default: 10000) (**Note**: Android only)
251
+ * @returns Promise<void>
252
+ * @throws {CieError} If could not start reading for authentication
253
+ * @example
254
+ * ```typescript
255
+ * await CieManager.startReadingCertificate('12345678');
256
+ * // or with custom timeout
257
+ * await CieManager.startReadingCertificate('12345678', 20000);
258
+ * ```
259
+ */
260
+ const startReadingCertificate = async (pin, timeout = DEFAULT_TIMEOUT) => {
261
+ return IoReactNativeCie.startReadingCertificate(pin, timeout);
262
+ };
263
+
244
264
  /**
245
265
  * Stops any ongoing CIE reading process.
246
266
  *
@@ -256,5 +276,5 @@ const startReading = async (pin, authenticationUrl, timeout = DEFAULT_TIMEOUT) =
256
276
  const stopReading = async () => {
257
277
  return IoReactNativeCie.stopReading();
258
278
  };
259
- export { addListener, removeListener, removeAllListeners, setCustomIdpUrl, startReadingAttributes, startInternalAuthentication, startMRTDReading, startInternalAuthAndMRTDReading, startReading, stopReading };
279
+ export { addListener, removeListener, removeAllListeners, setCustomIdpUrl, startReadingAttributes, startInternalAuthentication, startMRTDReading, startInternalAuthAndMRTDReading, startReading, startReadingCertificate, stopReading };
260
280
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","IoReactNativeCie","getDefaultIdpUrl","DEFAULT_TIMEOUT","eventEmitter","addListener","event","listener","subscription","remove","removeListener","removeAllListeners","setCustomIdpUrl","url","setAlertMessage","key","value","setCurrentAlertMessage","startInternalAuthentication","challenge","resultEncoding","timeout","startMRTDReading","can","startInternalAuthAndMRTDReading","startReadingAttributes","startReading","pin","authenticationUrl","stopReading"],"sourceRoot":"../../../src","sources":["manager/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,SAASC,gBAAgB,QAAQ,cAAW;AAO5C,SAASC,gBAAgB,QAAQ,YAAS;AAE1C,MAAMC,eAAe,GAAG,KAAK;AAE7B,MAAMC,YAAY,GAAG,IAAIJ,kBAAkB,CAACC,gBAAgB,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,WAAW,GAAGA,CAClBC,KAAQ,EACRC,QAA6B,KAC1B;EACH,MAAMC,YAAY,GAAGJ,YAAY,CAACC,WAAW,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC9D,OAAOC,YAAY,CAACC,MAAM;AAC5B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAIJ,KAAe,IAAK;EAC1CF,YAAY,CAACO,kBAAkB,CAACL,KAAK,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,kBAAkB,GAAGA,CAAA,KAAM;EAC/BP,YAAY,CAACO,kBAAkB,CAAC,SAAS,CAAC;EAC1CP,YAAY,CAACO,kBAAkB,CAAC,SAAS,CAAC;EAC1CP,YAAY,CAACO,kBAAkB,CAAC,qBAAqB,CAAC;EACtDP,YAAY,CAACO,kBAAkB,CAAC,WAAW,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAIC,GAAuB,IAAK;EACnDZ,gBAAgB,CAACW,eAAe,CAACC,GAAG,IAAIX,gBAAgB,CAAC,CAAC,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMY,eAAe,GAAGA,CAACC,GAAoB,EAAEC,KAAa,KAAK;EACtEf,gBAAgB,CAACa,eAAe,CAACC,GAAG,EAAEC,KAAK,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAID,KAAa,IAAK;EACvDf,gBAAgB,CAACgB,sBAAsB,CAACD,KAAK,CAAC;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,2BAA2B,GAAG,MAAAA,CAClCC,SAAiB,EACjBC,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACiB,2BAA2B,CACjDC,SAAS,EACTC,cAAc,EACdC,OACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,MAAAA,CACvBC,GAAW,EACXH,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACqB,gBAAgB,CAACC,GAAG,EAAEH,cAAc,EAAEC,OAAO,CAAC;AACxE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,+BAA+B,GAAG,MAAAA,CACtCD,GAAW,EACXJ,SAAiB,EACjBC,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACuB,+BAA+B,CACrDD,GAAG,EACHJ,SAAS,EACTC,cAAc,EACdC,OACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,sBAAsB,GAAG,MAAAA,CAC7BJ,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACwB,sBAAsB,CAACJ,OAAO,CAAC;AACzD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,YAAY,GAAG,MAAAA,CACnBC,GAAW,EACXC,iBAAyB,EACzBP,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACyB,YAAY,CAACC,GAAG,EAAEC,iBAAiB,EAAEP,OAAO,CAAC;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,WAAW,GAAG,MAAAA,CAAA,KAA2B;EAC7C,OAAO5B,gBAAgB,CAAC4B,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SACExB,WAAW,EACXK,cAAc,EACdC,kBAAkB,EAClBC,eAAe,EACfa,sBAAsB,EACtBP,2BAA2B,EAC3BI,gBAAgB,EAChBE,+BAA+B,EAC/BE,YAAY,EACZG,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","IoReactNativeCie","getDefaultIdpUrl","DEFAULT_TIMEOUT","eventEmitter","addListener","event","listener","subscription","remove","removeListener","removeAllListeners","setCustomIdpUrl","url","setAlertMessage","key","value","setCurrentAlertMessage","startInternalAuthentication","challenge","resultEncoding","timeout","startMRTDReading","can","startInternalAuthAndMRTDReading","startReadingAttributes","startReading","pin","authenticationUrl","startReadingCertificate","stopReading"],"sourceRoot":"../../../src","sources":["manager/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,SAASC,gBAAgB,QAAQ,cAAW;AAO5C,SAASC,gBAAgB,QAAQ,YAAS;AAE1C,MAAMC,eAAe,GAAG,KAAK;AAE7B,MAAMC,YAAY,GAAG,IAAIJ,kBAAkB,CAACC,gBAAgB,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,WAAW,GAAGA,CAClBC,KAAQ,EACRC,QAA6B,KAC1B;EACH,MAAMC,YAAY,GAAGJ,YAAY,CAACC,WAAW,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC9D,OAAOC,YAAY,CAACC,MAAM;AAC5B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAIJ,KAAe,IAAK;EAC1CF,YAAY,CAACO,kBAAkB,CAACL,KAAK,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,kBAAkB,GAAGA,CAAA,KAAM;EAC/BP,YAAY,CAACO,kBAAkB,CAAC,SAAS,CAAC;EAC1CP,YAAY,CAACO,kBAAkB,CAAC,SAAS,CAAC;EAC1CP,YAAY,CAACO,kBAAkB,CAAC,qBAAqB,CAAC;EACtDP,YAAY,CAACO,kBAAkB,CAAC,WAAW,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAIC,GAAuB,IAAK;EACnDZ,gBAAgB,CAACW,eAAe,CAACC,GAAG,IAAIX,gBAAgB,CAAC,CAAC,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMY,eAAe,GAAGA,CAACC,GAAoB,EAAEC,KAAa,KAAK;EACtEf,gBAAgB,CAACa,eAAe,CAACC,GAAG,EAAEC,KAAK,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAID,KAAa,IAAK;EACvDf,gBAAgB,CAACgB,sBAAsB,CAACD,KAAK,CAAC;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,2BAA2B,GAAG,MAAAA,CAClCC,SAAiB,EACjBC,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACiB,2BAA2B,CACjDC,SAAS,EACTC,cAAc,EACdC,OACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,MAAAA,CACvBC,GAAW,EACXH,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACqB,gBAAgB,CAACC,GAAG,EAAEH,cAAc,EAAEC,OAAO,CAAC;AACxE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,+BAA+B,GAAG,MAAAA,CACtCD,GAAW,EACXJ,SAAiB,EACjBC,cAA8B,GAAG,QAAQ,EACzCC,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACuB,+BAA+B,CACrDD,GAAG,EACHJ,SAAS,EACTC,cAAc,EACdC,OACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,sBAAsB,GAAG,MAAAA,CAC7BJ,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACwB,sBAAsB,CAACJ,OAAO,CAAC;AACzD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,YAAY,GAAG,MAAAA,CACnBC,GAAW,EACXC,iBAAyB,EACzBP,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAACyB,YAAY,CAACC,GAAG,EAAEC,iBAAiB,EAAEP,OAAO,CAAC;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,uBAAuB,GAAG,MAAAA,CAC9BF,GAAW,EACXN,OAAe,GAAGlB,eAAe,KACf;EAClB,OAAOF,gBAAgB,CAAC4B,uBAAuB,CAACF,GAAG,EAAEN,OAAO,CAAC;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMS,WAAW,GAAG,MAAAA,CAAA,KAA2B;EAC7C,OAAO7B,gBAAgB,CAAC6B,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SACEzB,WAAW,EACXK,cAAc,EACdC,kBAAkB,EAClBC,eAAe,EACfa,sBAAsB,EACtBP,2BAA2B,EAC3BI,gBAAgB,EAChBE,+BAA+B,EAC/BE,YAAY,EACZG,uBAAuB,EACvBC,WAAW","ignoreList":[]}
@@ -19,7 +19,7 @@ export const NfcEvent = z.object({
19
19
  /**
20
20
  * Name of the error emitted during the CIE reading process
21
21
  */
22
- export const NfcErrorName = z.enum(['NOT_A_CIE', 'TAG_LOST', 'CANCELLED_BY_USER', 'APDU_ERROR', 'WRONG_PIN', 'CARD_BLOCKED', 'NO_INTERNET_CONNECTION', 'CERTIFICATE_EXPIRED', 'CERTIFICATE_REVOKED', 'AUTHENTICATION_ERROR', 'GENERIC_ERROR']);
22
+ export const NfcErrorName = z.enum(['NOT_A_CIE', 'TAG_LOST', 'CANCELLED_BY_USER', 'APDU_ERROR', 'WRONG_PIN', 'WRONG_CAN', 'CARD_BLOCKED', 'NO_INTERNET_CONNECTION', 'CERTIFICATE_EXPIRED', 'CERTIFICATE_REVOKED', 'AUTHENTICATION_ERROR', 'GENERIC_ERROR']);
23
23
  /**
24
24
  * Represent an NFC error emitted during the CIE reading process
25
25
  */
@@ -58,17 +58,8 @@ export const MrtdResponseObject = z.object({
58
58
  * All string value are Hex or Base64 encoded
59
59
  */
60
60
  export const InternalAuthAndMrtdResponse = z.object({
61
- nis_data: z.object({
62
- nis: z.string(),
63
- publicKey: z.string(),
64
- sod: z.string(),
65
- signedChallenge: z.string()
66
- }),
67
- mrtd_data: z.object({
68
- dg1: z.string(),
69
- dg11: z.string(),
70
- sod: z.string()
71
- })
61
+ nis_data: InternalAuthResponseObject,
62
+ mrtd_data: MrtdResponseObject
72
63
  });
73
64
  /**
74
65
  * Represent the CIE attributes containing the CIE type
@@ -77,6 +68,12 @@ export const CieAttributes = z.object({
77
68
  type: z.string(),
78
69
  base64: z.string()
79
70
  });
71
+ export const CertificateData = z.object({
72
+ name: z.string().optional(),
73
+ surname: z.string().optional(),
74
+ fiscalCode: z.string().optional(),
75
+ docSerialNumber: z.string().optional()
76
+ });
80
77
 
81
78
  /**
82
79
  * Possible encodings for the CIE reading results
@@ -1 +1 @@
1
- {"version":3,"names":["z","AlertMessageKey","enum","NfcEvent","object","name","string","progress","coerce","number","NfcErrorName","NfcError","union","exclude","message","optional","extract","attemptsLeft","InternalAuthResponseObject","nis","publicKey","sod","signedChallenge","MrtdResponseObject","dg1","dg11","InternalAuthAndMrtdResponse","nis_data","mrtd_data","CieAttributes","type","base64"],"sourceRoot":"../../../src","sources":["manager/types.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["z","AlertMessageKey","enum","NfcEvent","object","name","string","progress","coerce","number","NfcErrorName","NfcError","union","exclude","message","optional","extract","attemptsLeft","InternalAuthResponseObject","nis","publicKey","sod","signedChallenge","MrtdResponseObject","dg1","dg11","InternalAuthAndMrtdResponse","nis_data","mrtd_data","CieAttributes","type","base64","CertificateData","surname","fiscalCode","docSerialNumber"],"sourceRoot":"../../../src","sources":["manager/types.ts"],"mappings":"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","ignoreList":[]}
@@ -197,6 +197,23 @@ declare const startReadingAttributes: (timeout?: number) => Promise<void>;
197
197
  * ```
198
198
  */
199
199
  declare const startReading: (pin: string, authenticationUrl: string, timeout?: number) => Promise<void>;
200
+ /**
201
+ * Starts the CIE certificate reading process.
202
+ * This method extracts the data from the CIE card certificate.
203
+ * Upon success, the `onCertificateSuccess` event is emitted with the certificate data.
204
+ *
205
+ * @param pin - The CIE card PIN code
206
+ * @param timeout - Optional timeout in milliseconds (default: 10000) (**Note**: Android only)
207
+ * @returns Promise<void>
208
+ * @throws {CieError} If could not start reading for authentication
209
+ * @example
210
+ * ```typescript
211
+ * await CieManager.startReadingCertificate('12345678');
212
+ * // or with custom timeout
213
+ * await CieManager.startReadingCertificate('12345678', 20000);
214
+ * ```
215
+ */
216
+ declare const startReadingCertificate: (pin: string, timeout?: number) => Promise<void>;
200
217
  /**
201
218
  * Stops any ongoing CIE reading process.
202
219
  *
@@ -210,5 +227,5 @@ declare const startReading: (pin: string, authenticationUrl: string, timeout?: n
210
227
  * ```
211
228
  */
212
229
  declare const stopReading: () => Promise<void>;
213
- export { addListener, removeListener, removeAllListeners, setCustomIdpUrl, startReadingAttributes, startInternalAuthentication, startMRTDReading, startInternalAuthAndMRTDReading, startReading, stopReading, };
230
+ export { addListener, removeListener, removeAllListeners, setCustomIdpUrl, startReadingAttributes, startInternalAuthentication, startMRTDReading, startInternalAuthAndMRTDReading, startReading, startReadingCertificate, stopReading, };
214
231
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/manager/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EACrC,OAAO,CAAC,EACR,UAAU,gBAAgB,CAAC,CAAC,CAAC,eAI9B,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,cAAc,GAAI,OAAO,QAAQ,SAEtC,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,YAKvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,eAAe,GAAI,KAAK,MAAM,GAAG,SAAS,SAE/C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,eAAe,EAAE,OAAO,MAAM,SAElE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,SAEnD,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,GAC/B,WAAW,MAAM,EACjB,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,QAAA,MAAM,gBAAgB,GACpB,KAAK,MAAM,EACX,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,QAAA,MAAM,+BAA+B,GACnC,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,sBAAsB,GAC1B,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,YAAY,GAChB,KAAK,MAAM,EACX,mBAAmB,MAAM,EACzB,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAEzC,CAAC;AAEF,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,+BAA+B,EAC/B,YAAY,EACZ,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/manager/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EACrC,OAAO,CAAC,EACR,UAAU,gBAAgB,CAAC,CAAC,CAAC,eAI9B,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,cAAc,GAAI,OAAO,QAAQ,SAEtC,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,YAKvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,eAAe,GAAI,KAAK,MAAM,GAAG,SAAS,SAE/C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,eAAe,EAAE,OAAO,MAAM,SAElE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,SAEnD,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,GAC/B,WAAW,MAAM,EACjB,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,QAAA,MAAM,gBAAgB,GACpB,KAAK,MAAM,EACX,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,QAAA,MAAM,+BAA+B,GACnC,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,iBAAgB,cAAyB,EACzC,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,sBAAsB,GAC1B,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,YAAY,GAChB,KAAK,MAAM,EACX,mBAAmB,MAAM,EACzB,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,uBAAuB,GAC3B,KAAK,MAAM,EACX,UAAS,MAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAEzC,CAAC;AAEF,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,+BAA+B,EAC/B,YAAY,EACZ,uBAAuB,EACvB,WAAW,GACZ,CAAC"}
@@ -24,19 +24,19 @@ export type NfcEvent = z.infer<typeof NfcEvent>;
24
24
  /**
25
25
  * Name of the error emitted during the CIE reading process
26
26
  */
27
- export declare const NfcErrorName: z.ZodEnum<["NOT_A_CIE", "TAG_LOST", "CANCELLED_BY_USER", "APDU_ERROR", "WRONG_PIN", "CARD_BLOCKED", "NO_INTERNET_CONNECTION", "CERTIFICATE_EXPIRED", "CERTIFICATE_REVOKED", "AUTHENTICATION_ERROR", "GENERIC_ERROR"]>;
27
+ export declare const NfcErrorName: z.ZodEnum<["NOT_A_CIE", "TAG_LOST", "CANCELLED_BY_USER", "APDU_ERROR", "WRONG_PIN", "WRONG_CAN", "CARD_BLOCKED", "NO_INTERNET_CONNECTION", "CERTIFICATE_EXPIRED", "CERTIFICATE_REVOKED", "AUTHENTICATION_ERROR", "GENERIC_ERROR"]>;
28
28
  export type NfcErrorName = z.infer<typeof NfcErrorName>;
29
29
  /**
30
30
  * Represent an NFC error emitted during the CIE reading process
31
31
  */
32
32
  export declare const NfcError: z.ZodUnion<[z.ZodObject<{
33
- name: z.ZodEnum<["NOT_A_CIE", "TAG_LOST", "CANCELLED_BY_USER", "APDU_ERROR", "CARD_BLOCKED", "NO_INTERNET_CONNECTION", "CERTIFICATE_EXPIRED", "CERTIFICATE_REVOKED", "AUTHENTICATION_ERROR", "GENERIC_ERROR"]>;
33
+ name: z.ZodEnum<["NOT_A_CIE", "TAG_LOST", "CANCELLED_BY_USER", "APDU_ERROR", "WRONG_CAN", "CARD_BLOCKED", "NO_INTERNET_CONNECTION", "CERTIFICATE_EXPIRED", "CERTIFICATE_REVOKED", "AUTHENTICATION_ERROR", "GENERIC_ERROR"]>;
34
34
  message: z.ZodOptional<z.ZodString>;
35
35
  }, "strip", z.ZodTypeAny, {
36
- name: "NOT_A_CIE" | "TAG_LOST" | "CANCELLED_BY_USER" | "APDU_ERROR" | "CARD_BLOCKED" | "NO_INTERNET_CONNECTION" | "CERTIFICATE_EXPIRED" | "CERTIFICATE_REVOKED" | "AUTHENTICATION_ERROR" | "GENERIC_ERROR";
36
+ name: "NOT_A_CIE" | "TAG_LOST" | "CANCELLED_BY_USER" | "APDU_ERROR" | "WRONG_CAN" | "CARD_BLOCKED" | "NO_INTERNET_CONNECTION" | "CERTIFICATE_EXPIRED" | "CERTIFICATE_REVOKED" | "AUTHENTICATION_ERROR" | "GENERIC_ERROR";
37
37
  message?: string | undefined;
38
38
  }, {
39
- name: "NOT_A_CIE" | "TAG_LOST" | "CANCELLED_BY_USER" | "APDU_ERROR" | "CARD_BLOCKED" | "NO_INTERNET_CONNECTION" | "CERTIFICATE_EXPIRED" | "CERTIFICATE_REVOKED" | "AUTHENTICATION_ERROR" | "GENERIC_ERROR";
39
+ name: "NOT_A_CIE" | "TAG_LOST" | "CANCELLED_BY_USER" | "APDU_ERROR" | "WRONG_CAN" | "CARD_BLOCKED" | "NO_INTERNET_CONNECTION" | "CERTIFICATE_EXPIRED" | "CERTIFICATE_REVOKED" | "AUTHENTICATION_ERROR" | "GENERIC_ERROR";
40
40
  message?: string | undefined;
41
41
  }>, z.ZodObject<{
42
42
  name: z.ZodEnum<["WRONG_PIN"]>;
@@ -166,6 +166,23 @@ export declare const CieAttributes: z.ZodObject<{
166
166
  base64: string;
167
167
  }>;
168
168
  export type CieAttributes = z.infer<typeof CieAttributes>;
169
+ export declare const CertificateData: z.ZodObject<{
170
+ name: z.ZodOptional<z.ZodString>;
171
+ surname: z.ZodOptional<z.ZodString>;
172
+ fiscalCode: z.ZodOptional<z.ZodString>;
173
+ docSerialNumber: z.ZodOptional<z.ZodString>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ name?: string | undefined;
176
+ surname?: string | undefined;
177
+ fiscalCode?: string | undefined;
178
+ docSerialNumber?: string | undefined;
179
+ }, {
180
+ name?: string | undefined;
181
+ surname?: string | undefined;
182
+ fiscalCode?: string | undefined;
183
+ docSerialNumber?: string | undefined;
184
+ }>;
185
+ export type CertificateData = z.infer<typeof CertificateData>;
169
186
  /**
170
187
  * Possible encodings for the CIE reading results
171
188
  */
@@ -181,6 +198,7 @@ export type CieEventHandlers = {
181
198
  onInternalAuthAndMRTDWithPaceSuccess: (internalAuthAndMrtdResponse: InternalAuthAndMrtdResponse) => void;
182
199
  onAttributesSuccess: (attributes: CieAttributes) => void;
183
200
  onSuccess: (uri: string) => void;
201
+ onCertificateSuccess: (certificateData: CertificateData) => void;
184
202
  };
185
203
  /**
186
204
  * Possible events that can be listened to
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/manager/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,eAAe,+LAW1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;EAGnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,YAAY,uNAYvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;IAWnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAKrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,2BAA2B,CACnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,+BAA+B,EAAE,CAC/B,oBAAoB,EAAE,oBAAoB,KACvC,IAAI,CAAC;IACV,qBAAqB,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D,oCAAoC,EAAE,CACpC,2BAA2B,EAAE,2BAA2B,KACrD,IAAI,CAAC;IACV,mBAAmB,EAAE,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/manager/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,eAAe,+LAW1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;EAGnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,YAAY,oOAavB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;IAWnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAKrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,2BAA2B,CACnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,+BAA+B,EAAE,CAC/B,oBAAoB,EAAE,oBAAoB,KACvC,IAAI,CAAC;IACV,qBAAqB,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D,oCAAoC,EAAE,CACpC,2BAA2B,EAAE,2BAA2B,KACrD,IAAI,CAAC;IACV,mBAAmB,EAAE,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,oBAAoB,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-cie",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Native support for CIE",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
@@ -278,6 +278,29 @@ const startReading = async (
278
278
  return IoReactNativeCie.startReading(pin, authenticationUrl, timeout);
279
279
  };
280
280
 
281
+ /**
282
+ * Starts the CIE certificate reading process.
283
+ * This method extracts the data from the CIE card certificate.
284
+ * Upon success, the `onCertificateSuccess` event is emitted with the certificate data.
285
+ *
286
+ * @param pin - The CIE card PIN code
287
+ * @param timeout - Optional timeout in milliseconds (default: 10000) (**Note**: Android only)
288
+ * @returns Promise<void>
289
+ * @throws {CieError} If could not start reading for authentication
290
+ * @example
291
+ * ```typescript
292
+ * await CieManager.startReadingCertificate('12345678');
293
+ * // or with custom timeout
294
+ * await CieManager.startReadingCertificate('12345678', 20000);
295
+ * ```
296
+ */
297
+ const startReadingCertificate = async (
298
+ pin: string,
299
+ timeout: number = DEFAULT_TIMEOUT
300
+ ): Promise<void> => {
301
+ return IoReactNativeCie.startReadingCertificate(pin, timeout);
302
+ };
303
+
281
304
  /**
282
305
  * Stops any ongoing CIE reading process.
283
306
  *
@@ -304,5 +327,6 @@ export {
304
327
  startMRTDReading,
305
328
  startInternalAuthAndMRTDReading,
306
329
  startReading,
330
+ startReadingCertificate,
307
331
  stopReading,
308
332
  };
@@ -40,6 +40,7 @@ export const NfcErrorName = z.enum([
40
40
  'CANCELLED_BY_USER',
41
41
  'APDU_ERROR',
42
42
  'WRONG_PIN',
43
+ 'WRONG_CAN',
43
44
  'CARD_BLOCKED',
44
45
  'NO_INTERNET_CONNECTION',
45
46
  'CERTIFICATE_EXPIRED',
@@ -99,17 +100,8 @@ export type MrtdResponse = z.infer<typeof MrtdResponseObject>;
99
100
  * All string value are Hex or Base64 encoded
100
101
  */
101
102
  export const InternalAuthAndMrtdResponse = z.object({
102
- nis_data: z.object({
103
- nis: z.string(),
104
- publicKey: z.string(),
105
- sod: z.string(),
106
- signedChallenge: z.string(),
107
- }),
108
- mrtd_data: z.object({
109
- dg1: z.string(),
110
- dg11: z.string(),
111
- sod: z.string(),
112
- }),
103
+ nis_data: InternalAuthResponseObject,
104
+ mrtd_data: MrtdResponseObject,
113
105
  });
114
106
 
115
107
  export type InternalAuthAndMrtdResponse = z.infer<
@@ -126,6 +118,15 @@ export const CieAttributes = z.object({
126
118
 
127
119
  export type CieAttributes = z.infer<typeof CieAttributes>;
128
120
 
121
+ export const CertificateData = z.object({
122
+ name: z.string().optional(),
123
+ surname: z.string().optional(),
124
+ fiscalCode: z.string().optional(),
125
+ docSerialNumber: z.string().optional(),
126
+ });
127
+
128
+ export type CertificateData = z.infer<typeof CertificateData>;
129
+
129
130
  /**
130
131
  * Possible encodings for the CIE reading results
131
132
  */
@@ -146,6 +147,7 @@ export type CieEventHandlers = {
146
147
  ) => void;
147
148
  onAttributesSuccess: (attributes: CieAttributes) => void;
148
149
  onSuccess: (uri: string) => void;
150
+ onCertificateSuccess: (certificateData: CertificateData) => void;
149
151
  };
150
152
 
151
153
  /**