Passport / eMRTD

Passport reading starts from an MRZ-derived BAC key, enters Secure Messaging, and reads LDS data groups from the eMRTD applet.

Read data groups

let mrzKey = MRZKeyGenerator.computeMRZKey(
    documentNumber: "L898902C3",
    dateOfBirth: "740812",
    dateOfExpiry: "120415"
)

let passport = try await CoreExtendedNFC.readPassport(
    mrzKey: mrzKey,
    dataGroups: [.com, .dg1, .dg2, .dg14, .dg15, .sod],
    performActiveAuth: true
)

Current scope

BAC, Secure Messaging, data-group parsing, Passive Authentication, and Active Authentication are implemented. PACE and Chip Authentication objects are parsed where available, but ECDH key agreement is not yet implemented.