NFC SDK Release Notes

NFC SDK v1.4

Sizing

The table below contains the universal binary sizes based on building a basic application with a specific feature supported.

The basic application size without frameworks is 27 KB when compressed and 112 KB when uncompressed.

Component

Compressed

Uncompressed

NFC

488 KB

1.3 MB

NFC SDK 1.4.20

Preview

November 2026

Overview

This release improves ePassport compatibility, scan performance, authentication error reporting, and NFC-session recovery. It also added clearer progress feedback in the native NFC dialog and more reliable cancellation handling.

Document-authenticity verification was strengthened with explicit trust-backed verdicts, expanded certificate configuration, and optional Chip Authentication.

Improvements

Broader ePassport Compatibility

Improved BAC/PACE authentication, secure messaging, document-signature parsing, and certificate handling across a wider range of ePassports. The reader evaluates supported PACE configurations advertised by the document rather than relying on a single entry, including compatible entries with nonstandard version metadata. RSA and ECDSA Active Authentication support was also expanded.

More Reliable Connection Recovery

Added bounded recovery when a document moved out of range or an NFC session became inactive, with positioning guidance and fresh authentication before reading resumed. Cancellation and session timeouts stopped recovery, and unsuccessful recovery preserved the final error for the host application.

Optional Chip Authentication

Added standalone Chip Authentication through IXNFCPassportParameters.set(chipAuthentication:), with support, status and outcome information in the passport result. This capability is disabled by default. Failed attempts were reported as document issues, with BAC/PACE access restored before reading continued where recovery was possible.

Expanded MRZ Support

Added TD2 MRZ support alongside TD1 and TD3, improved handling of extended document numbers and lowercase ASCII input, and aligned optional check-digit handling with Android. Invalid access fields were rejected before authentication rather than being reported as a chip/MRZ mismatch.

Improved Finnish Passport Compatibility

Addressed chip-command compatibility and authentication-recovery issues affecting Finnish passport reads. Improved handling of rejected authentication commands and response-length differences, while keeping Active Authentication verification failures separate from otherwise successful document capture.

Faster Scans and Broader Portrait-image Compatibility

Reduced PACE cryptographic overhead and unnecessary memory copies during portrait parsing. Added support for additional valid JPEG variants and preserved photo orientation. Avoided repeated chip reads and re-authentication when a failure originated in local data parsing rather than NFC communication.

Accurate SDK Version Reporting

Updated version reporting to use the NFC SDK's compiled release and build values. This prevented the host application's version from being reported as the NFC SDK version, including when the framework was statically linked.

Clearer Progress in the Native NFC Dialog

Added visible feedback during BAC/PACE authentication, authentication retries, and data-group reading. Users receive meaningful progress messages instead of seeing the initial positioning instruction throughout these stages.

Stronger Document-authenticity Verdicts

Added isPassiveAuthenticationVerified and isChipAuthentic to report document-data verification and chip authenticity separately. Document verification requires valid signatures, matching hashes for the requested data groups and a trusted issuing-country certificate supplied by the application. Chip authenticity additionally requires a successful chip-key proof. Without a configured trust certificate, these results remain false even when reading and individual cryptographic checks succeed. A false result means verification was not established; it does not, by itself, indicate a fraudulent document.

Expand Certificate Trust Configuration

Expanded certificate configuration to support country signing-key changes and passports that omit their document-signer certificate. Applications can verify certificate trust during or after a scan. Certificate validity is checked against the current date by default; applications with an approved historical-validation policy can explicitly select another date. Document-signer and supporting certificates are not automatically trusted. Verification uses application-supplied trust certificates and does not fetch certificates or perform revocation checks.

Bug Fixes

Key

Description

OBM-4735

Updated the sample app's consent screen to remove its cancel button and avoid a transient loading spinner when terms were rejected.

OBM-4690

Stopped SDK reads and pending recovery after cancellation, discarded late command results and prevented retries from restarting a cancelled scan.

OBM-4597

Corrected misleading success indications in the native NFC dialog when a scan failed.

OBM-4554

Corrected incomplete or missing Active Authentication responses after BAC or PACE. Improved response-length handling and expanded RSA/ECDSA verification compatibility. Verification failures were reported as document issues rather than discarding a completed capture.

OBM-4504

Improved cancellation handling to prevent the NFC flow from remaining indefinitely on a processing screen.

OBM-4412

Corrected authentication error classification so connection and protocol failures were not incorrectly reported as MRZ mismatch error 2582. Added bounded recovery and more detailed authentication diagnostics.

OBM-1942

Improved NFC-session startup recovery after cancellation or returning from the background. iOS-controlled dialog delays can still occur.

Known Issues

Cancelling an in-progress NFC scan can take several seconds — in some cases 15 to 20 seconds — before the host application receives the cancellation callback. This behavior is not new in this release; it is present in earlier releases, including v1.4.15. Time was spent investigating during development of this patch. The delay is introduced by iOS, not by the Daon NFC SDK, and is therefore not something this release can correct.

The root cause is an intermittent long read of the first PACE command (the encrypted-nonce exchange). On affected scans that command can take 10 or more seconds to return. If the user taps Cancel while it is still outstanding, iOS waits for the command to complete before notifying the SDK that the session was cancelled. The SDK forwards the cancellation to the host application as soon as iOS reports it, with no additional delay. After analysis of lower-level system logs, and by reproducing the issue in third-party NFC SDKs, Daon have confirmed it is an issue in the native NFC layer and not in our SDK. It has been observed intermittently on newer iOS versions. Daon will continue to monitor the issue as new OS releases become available.

NFC SDK 1.4.11

July 2026

Improvements

Added Retry Logic for Passport Chip Data Mismatch

  • Resolved an issue where passport chip data mismatch errors (error 2582) were treated as terminal. The SDK now retries the scan once when this error is encountered, allowing transient failures to recover rather than immediately ending the session.

Support for Passports Advertising Multiple PACE Protocol Entries

  • Added support for passports that advertise multiple PACE protocol candidates in EF.CardAccess. Previously, the SDK attempted only the first advertised PACEInfo entry; if that entry described parameters the SDK could not execute — such as an unsupported elliptic curve or mapping type — the SDK would fall back to BAC or fail entirely under PACE-only mode. The SDK now iterates all available PACEInfo candidates in order, skipping entries with unsupported parameters, and establishes a secure channel using the first compatible entry. This improves compatibility with a broader range of travel documents.

Updated Default Authentication Strategy to PACE-then-BAC

  • Updated the default authentication strategy to PACE-then-BAC. When no authentication type is explicitly configured, the SDK now attempts PACE first and falls back to BAC automatically. This aligns the default behavior with the recommended ICAO authentication sequence, ensuring the most secure available protocol is used whenever the chip supports it.

Extended Passive Authentication Support for French, Belgian, and Netherlands Passports

  • Added support for additional LDS Security Object content-type OIDs used by French, Belgian, and Netherlands passports. Previously, documents from these countries could complete an NFC scan without correctly populating data group hash values, silently bypassing passive authentication integrity checks. The SDK now recognizes all relevant OID variants and performs passive authentication correctly for these document types.

Bug Fixes

Key

Description

OBM-4417

Resolved an issue with unreliable progress percentage updates while scanning passports with a chip that supports extended-length APDUs.

OBM-4418

Resolved an issue with intermittent "SM data objects incorrect" errors during DG2 and DG14 reads of UK and Irish passports.

OBM-4419

Fixed an issue where DateFormatter was missing locale potentially causes BAC/PACE authentication failures on devices with non-Latin digit locales.

OBM-4439

Fixed a bug where performing multiple rapid scan interruptions triggered a system resource unavailable error.

NFC SDK 1.4.8

April 2026

Improvements

Improved German Passport Support

  • Fixed an issue where reading large data groups (SOD, DG2, DG14) from German passports could fail with "SM data objects incorrect" errors. The SDK now correctly uses extended-length APDU encoding when the expected response exceeds short-form capacity, and properly parses chip capability information (EF.ATR/INFO) from passports that return it with an end-of-file warning status.

Bug Fixes

Key

Description

OBM-4267

Resolved an issue where scanning was failing on German passports. See the Improvements section above for more information.

NFC SDK 1.4.6

April 2026

Improvements

Improved PACE Authentication Compatibility

  • Fixed PACE authentication failures on passports that use stronger cipher suites, such as UK passports.

Chinese Passport Support

  • Added support for Chinese passports, including handling larger authentication signatures and varying response length requirements specific to Chinese-issued travel documents.

Faster NFC Data Reading

  • Improved NFC read performance on passports that advertise their maximum response length. The SDK now reads EF.ATR/INFO before authentication to determine the chip's supported expected response length (Le), allowing it to request larger data chunks per NFC command and reducing the number of round trips needed to read each data group. This benefits both BAC and PACE sessions equally. A maximum read size cap of 2,000 bytes was also added to prevent contactless transport timeouts that could occur when requesting oversized data blocks from certain NFC chips.

Bug Fixes

Key

Description

OBM-4094

Resolved an issue where overwhelming the app would trigger a system resource error.

OBM-4189

Fixed memory leaks during PACE authentication.

OBM-4209

Resolved NFC read errors for Chinese passports during identity verification.

OBM-4211

Resolved an issue where the app would crush immediately without displaying content after launch.

OBM-4213

Fixed a bug where PACE authentication was previously not working for UK passports