eMRTD Reading SDK for Android

Read and verify the chip of an eMRTD (electronic machine readable travel document).

This is a fully functional sample app. Just load it with Android Studio, compile and install it on a device and follow the on-screen instructions.

Important: In order to read an eMRTD chip, you need to give either a PIN or a document number, the date of birth and the date of expiry. These values are required for authentication.

Setup

Before calling CardReader.read(), it's required to call CardReader.init():

CardReader.init(context, new String[]{...});

This has to happen only once.

The second argument new String[]{...} can either be null or must be a list of CSCA Master List files available in app/src/main/assets.

Important: To check document certificates, at least one CSCA Master List must be provided.

Reading the Chip

After acquiring an IsoDep object from Android, call CardReader.read() to start reading the chip:

CardData cardData = CardReader.read(
		isoDep,
		null, // PIN, can be null if not available
		documentNumber,
		dateOfBirth,
		dateOfExpiry,
		true, // if you want to verify the chip
		null // CardReaderListener to listen for events while reading
);

If successful, a parcelable CardData object is returned that contains the following public final data members:

org.jmrtd.lds.icao.MRZInfo mrzInfo;
org.jmrtd.lds.icao.DG11 personalDetails;
org.jmrtd.lds.icao.DG12 documentDetails;
android.graphics.Bitmap photo;

If the chip should be verified (see above), these members are set accordingly:

CardData.CheckResult chipAuthentication;
CardData.CheckResult activeAuthentication;
boolean isConsistent;
boolean hashsValid;
boolean signatureValid;
boolean signerVerified;

Open Source Licenses