An iOS library for reading NFC-enabled passports using CoreNFC APIs, supporting BAC, PACE, and multiple data groups.
NFCPassportReader is an open-source iOS library that allows developers to read and authenticate NFC-enabled passports using Apple's CoreNFC APIs. It solves the problem of securely extracting and verifying e-passport data such as MRZ information, biometric images, and cryptographic signatures directly on iOS devices. The library supports modern authentication protocols like BAC, PACE, and Chip Authentication.
iOS developers building applications that require secure passport reading, such as identity verification apps, travel solutions, or government services. It's aimed at those needing ICAO-compliant e-passport handling on iOS.
Developers choose NFCPassportReader because it provides a comprehensive, Swift-native implementation of e-passport standards with async/await support, eliminating the need for low-level NFC handling. Its modular design and active maintenance make it a reliable alternative to building such functionality from scratch.
NFCPassportReader for iOS 13
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Swift's concurrency model for streamlined NFC communication, as version 2 prioritizes this over older callback patterns, making code cleaner and more efficient.
Reads multiple ICAO data groups including MRZ, biometric images (DG2), and cryptographic signatures, supporting DG1, DG2, DG7, DG11, DG12, DG14, and DG15 for thorough passport data access.
Implements BAC, secure messaging, and authentication methods like Passive, Active, and Chip Authentication, adhering to e-passport standards for secure communication and verification.
Allows extended mode reads for larger data chunks and custom session messages, providing flexibility to handle different passport types and improve user interaction.
PACE support is limited to Generic Mapping, with IM and CAM modes still on the to-do list, reducing compatibility with some advanced passport security protocols.
The author admits 'rough edges' and bugs, warning that mileage may vary, which can lead to unreliable behavior and require extra debugging in real-world scenarios.
JPEG2000 images are unsupported, forcing developers to handle raw data manually if passports use this format, adding complexity for biometric extraction.
CocoaPods support is deprecated and unsupported, with plans to phase it out by end of 2026, pushing teams to migrate to Swift Package Manager or risk compatibility issues.