nfcios13javacardcontactless-smartcardcore-nfc

iOS 13 NFC Core - Reading NDEF Tags (e.g. ISO 14443 Type A JavaCard)


Can I read an NDEF tag on a javacard using an applet like https://github.com/OpenJavaCard/openjavacard-ndef with an iPhone 7 or above (with Core NFC support)? It seems like NFC was particularly enhanced for iOS 13. The documentation https://developer.apple.com/documentation/corenfc indicates cards adhering to the ISO 7816 or ISO 15693 standard can be read with the iPhone. Can anyone confirm this?

I have two javacards available:

I've installed the app on both cards and can't read it from the iPhone.

I've tested with https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app - it can detect my Yubikey, but not a JavaCard running NDEF applet. What sorts of NFC tags can be read from the iPhone?


Solution

  • I believe that iOS can read the Standard NFC Type plus with iOS 13 it can read additional Tag AId's (Aplication Id) of Type 4 cards (This is just from reading the Documentation).

    Also having read the Spec of the NFC Type 4 Cards http://apps4android.org/nfc-specifications/NFCForum-TS-Type-4-Tag_2.0.pdf which is for the non manufacturer specific type of Tags that work with Tag AId's

    I noticed that the applet might not be using the right AId?
    The Spec (Section 5.4.2) says the AId for NDEF is D2760000850101h

    The Applet https://github.com/OpenJavaCard/openjavacard-ndef/blob/master/applet-full/build.gradle seems to be using aid = '0xD2:0x76:0x00:0x01:0x77:0x10:0x02:0x11:0x01:0x00:0x01'

    This is a guess but might be worth a try using the AId the NFC spec says

    Which on further reading is what https://github.com/OpenJavaCard/openjavacard-ndef/issues/4 is on about.

    The default applet AId they are using as default is one of their Self Assigned ones (see https://openjavacard.org/resources/aid-now.html and not the NFC Spec one)

    Note that with iOS 13 you could write your own programs to read this Different Aid now. Using https://developer.apple.com/documentation/corenfc/nfciso7816tag with the right AId

    Also https://developer.apple.com/documentation/corenfc/nfctagreadersession (which also say the AId for Standard NDEF is D2760000850101 )