rn-passport-reader
Read NFC-enabled passports and ID cards using BAC authentication. Extracts face photo, signature, and personal details on iOS & Android.
React NativeExpoNFCPassportBAC
rn-passport-reader
React Native Expo module for reading NFC-enabled passports and ID cards using BAC (Basic Access Control). Extracts all available data including face photo, signature, and personal details.
Features
- BAC (Basic Access Control) authentication
- DG1–DG14 data group extraction
- Face photo & signature as base64 JPEG
- Active & passive authentication status
- Real-time progress tracking events
- Expo Config Plugin for automatic NFC entitlement setup
- iOS: Uses NFCPassportReader (Swift Package)
- Android: Uses JMRTD + Scuba
Data Groups
| Group | Content | Fields |
|---|---|---|
| DG1 | MRZ info | firstName, lastName, gender, nationality, documentNumber, dateOfBirth, expiryDate |
| DG2 | Face photo | faceImageBase64 |
| DG7 | Signature/mark | signatureImageBase64 |
| DG11 | Personal details | placeOfBirth, fullName, personalNumber, telephone, profession |
| DG12 | Document details | issuingAuthority, dateOfIssue, endorsements |
| DG14 | Security info | Used for active authentication |
Installation
npx expo install rn-passport-reader
Usage
import { readPassport, PassportData } from "rn-passport-reader";
try {
const data: PassportData = await readPassport(
"AB1234567", // Document number
"900101", // Date of birth (YYMMDD)
"300101" // Date of expiry (YYMMDD)
);
console.log(data.firstName, data.lastName);
console.log(data.isVerified);
} catch (error) {
console.error("NFC read failed:", error);
}
Requirements
- iOS 15.1+
- Android minSdk 24 (Android 7.0+)
- Expo SDK 51+
- Device with NFC hardware
License
MIT