This project contains an application capable of reading an EU ID card via NFC using a smartphone.
The project was inspired by hufon/cnie-python-tools and its code was used as a reference in some places.
Or download the APK from the latest release.
- The app does not have access to any biometrics data deemed sensitive by the issuer of your document, such as your fingerprints.
- The app does not extract any data to any server; in fact, it doesn't even have permission to connect to the Internet.
- The app does not store any of the data from your document on your device.
- All data exchanges with your document use standard and public communication described in the referenced documents; it doesn't do any weird magic, just (admittedly weird) math.
- The password of your document (e.g. the CAN) is stored at rest encrypted by the Android Keystore with a strong encryption key.
- French CNIe (issued April 2024)
- Samsung Z Flip6 (Android 16)
All the business logic is contained within the shared module. The androidApp module only
contains the minimal required entry points. The project is build with Kotlin and Compose
Multiplatform.
- Android ✅
- iOS ✅ (not published for now)
An AI agent was used here and there to perform some grunt work or help me when I was stuck, e.g. for the last exchanges of the PACE algorithm. The architectural decisions, implementation details, research work, and the rest of the actual implementation were performed by me. Some code documentation was auto-generated as well.

