Jul 13, 2011

JMRTD for Android

JMRTD, the Java library that I (together with others) maintain to access and interpret ePassport content, has been ported to Android by Max G√ľnther. To demonstrate this, Max has developed an app (see the screenshot) for Nexus S (and other NFC Android handsets). We're not the first ePassport project on Android or NFC, but we try to be the most usable one!

The contactless technology in ePassports, ISO-14443, is fully compatible with NFC. Essentially this means that an NFC device in reader mode will be able to read ePassports. That is, of course, if the device has sufficient access privileges (i.e. Basic Access Control BAC, and Extended Access Control EAC). Max's app demonstrates how the essential passport holder details (aka datagroup 1) and the passport holder's facial image (aka datagroup 2) can be displayed.

The latter is actually non-trivial since that image is encoded in JPEG 2000 by some issuing countries, a format that is not supported in Android by default (thankfully there's jj2000). Another challenge that we encountered is the presence of a crippled version of Bouncy Castle in Android 2.3 which prevents inclusion of the full version (thankfully there's Spongy Castle). In general we've made many changes to JMRTD and SCUBA to make these libraries easier to port to other platforms.

We're working hard on making the app more robust and usable. Max and Claude Heyman are currently the main developers looking at Android NFC. We're trying to get MRZ OCR scanning to work (perhaps based on the Java OCR project). In its current form the app is not doing document validation or access to EAC protected data, but JMRTD allows this, in principle. We hope to publish the proof-of-concept app via the Android market soon. If you own a Nexus S (and an ePassport) we're definitely interested in your feedback.

Update: Max published the app on the market.

12 comments:

  1. This comment has been removed by a blog administrator.

    ReplyDelete
  2. Very cool idea. I'm trying to use it with my HTC One X. Slightly more feedback when working would be cool. The app makes a lot of sounds, but I' not sure what it does. Didn't manage to read my card yet...working on it.

    ReplyDelete
  3. BTW: We're working on a new version of this app. It's using the current SVN versions of JMRTD (and dependencies) via the excellent jarjar (http://code.google.com/p/jarjar/) ant task.

    ReplyDelete
  4. Thanks alot
    Whating for the new update on this app
    Its working great but not all epassport I try it on more than 15 defrent nationality e passports
    Best of luck
    Khalid
    Dubai

    ReplyDelete
    Replies
    1. Thanks for testing (and sorry for responding late, I should revisit my posts more often). If you're still interested, go check out our new app which uses the bleeding edge JMRTD version. https://play.google.com/store/apps/details?id=nl.novay.nfcpassportreader.

      Delete
  5. I've installed the bjmrtd app and I've been able to read out DG1 for the sample eID document that I have, but I have had no luck reading DG2. Any advice on how I can get JPEG 2000 recognition working? I'm currently testing on a Samsung SGH-i777 - with a custom AOKP based ROM running Android 4.1.1. Thanks!

    ReplyDelete
    Replies
    1. Thanks for testing (and sorry for responding late, I should revisit my posts more often). If you're still interested, go check out our new app which uses the bleeding edge JMRTD version. https://play.google.com/store/apps/details?id=nl.novay.nfcpassportreader.

      Delete
  6. Hi Martijn Oostdijk,
    Thanks for sharing and giving complete source codes how to work with ePassport. Do you have a way to make a testing kit for mimicking an epassport. Because currently, I don't have a e-passport, but I wish to try your stuff

    Thank you

    ReplyDelete
  7. This comment has been removed by a blog administrator.

    ReplyDelete
    Replies
    1. Hello, please could you help me out in solving my minor issue, Just let me know does this app supports Windows phone?

      Delete
  8. This comment has been removed by a blog administrator.

    ReplyDelete
  9. hi martijn i have some probleme with nfc 011 smart card reader icant reade epassport why
    i wonder if there is some special configuration or the probleme is in the reader ??????????

    ReplyDelete