emrtd 0.0.2
emrtd: ^0.0.2 copied to clipboard
Read and verify electronic passports and ID cards.
Kinegram eMRTD Connector SDK for Flutter #
The Kinegram eMRTD Connector enables your Flutter app to read and verify electronic passports (eMRTDs) and ID cards.
┌───────────────┐ Results ┌─────────────────┐
│ DocVal Server │────────────────▶│ Your Server │
└───────────────┘ └─────────────────┘
▲
│ WebSocket
▼
┏━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ eMRTD Connector ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┛
▲
│ NFC
▼
┌──────────────┐
│ │
│ PASSPORT │
│ │
│ ID CARD │
│ │
│ │
│ (eMRTD) │
│ │
└──────────────┘
The Kinegram eMRTD Connector enables the Document Validation Server (DocVal) to communicate with the eMRTD through a secure WebSocket connection.
Quick start #
- Add the plugin to your
pubspec.yaml:dependencies: emrtd: ^latest - Import and create an instance in your widget:
import 'package:emrtd/emrtd.dart'; final _emrtd = Emrtd(); - Read and verify the document using either MRZ values or the CAN:
final result = await _emrtd.readAndVerify( clientId: 'your_client_id', validationUri: 'wss://docval.kurzdigital.com/ws2/validate', validationId: 'unique-session-id', documentNumber: 'C01X00000', dateOfBirth: '900101', dateOfExpiry: '300101', ); // Alternatively, use the CAN (Card Access Number). final resultWithCan = await _emrtd.readAndVerifyWithCan( clientId: 'your_client_id', validationUri: 'wss://docval.kurzdigital.com/ws2/validate', validationId: 'unique-session-id', can: '123456', );
The readAndVerify… calls initiate an NFC session, read the eMRTD chip with
the provided credentials, and send the result to the validator referenced by
validationUri.
iOS requirements #
The native KinegramEmrtdConnector SDK the plugin wraps requires
iOS 15.0+. Ensure your consuming Flutter app sets the same deployment
target in ios/Podfile, ios/Runner.xcodeproj, and
ios/Flutter/AppFrameworkInfo.plist before running pod install or
flutter run on iOS.
1. Enable NFC Capability #
This needed entitlement is added automatically by Xcode when enabling the Near Field Communication Tag Reading capability in the target Signing & Capabilities.
After enabling the capability the *.entitlements file needs to contain
the TAG (Application specific tag, including ISO 7816 Tags) and PACE (Needed for PACE polling support (some ID cards)) format:
...
<dict>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>PACE</string>
<string>TAG</string>
</array>
</dict>
...
2. Info.plist (AID & NFCReaderUsageDescription) #
The app needs to define the list of AIDs it can connect to, in the Info.plist file.
The AID is a way of uniquely identifying an application on a ISO 7816 tag.
eMRTDS use the AIDs A0000002471001 and A0000002472001.
Your Info.plist entry should look like this:
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
<string>A0000002472001</string>
</array>
- Additionally set the
NFCReaderUsageDescriptionkey:
<key>NFCReaderUsageDescription</key>
<string>This app uses NFC to verify passports</string>