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 |