CoreExtendedNFC

Swift package for NFC protocol-layer logic on iOS. CoreNFC handles RF transport; CoreExtendedNFC identifies cards, builds commands, models memory, reads passports, and exports dumps.

Capabilities

Install

dependencies: [
    .package(url: "https://github.com/Lakr233/CoreExtendedNFC.git", from: "0.1.0"),
],
targets: [
    .target(name: "App", dependencies: [
        .product(name: "CoreExtendedNFC", package: "CoreExtendedNFC"),
    ]),
]

Quick start

import CoreExtendedNFC

let (card, transport, session) = try await CoreExtendedNFC.scan()
print(card.type.description, card.uid.hexString)
session.invalidate()

let (info, dump) = try await CoreExtendedNFC.scanAndDump()
print(dump.exportHex())

let passport = try await CoreExtendedNFC.readPassport(
    mrzKey: "L898902C<3640812512041598",
    dataGroups: [.dg1, .dg2]
)

Supported cards

FamilyIdentifyReadWriteDump
MIFARE Ultralight / EV1yesyesyesyes
NTAG 213 / 215 / 216yesyesyesyes
MIFARE DESFire EV1-EV3yesyesfree-access filesyes
FeliCa Type 3 NDEFyesyesyespartial
ISO 15693 / Type 5yesyesyesyes
Type 4 NDEF / ISO 7816yesyesyespartial
eMRTD / ePassportyesyesnoworkflow-specific
My Number cardyesyesnotoken data
MIFARE Classic 1K / 4Kyesnonono

MIFARE Classic is identification-only because iOS does not expose Crypto1 parity-bit authentication.

Where next