Une application iOS peut-elle lire l'identifiant d'un tag ?
Oui, mais seulement dans une session de tag : les tags MIFARE, ISO 7816 et ISO 15693 exposent une propriété d'identifiant, et FeliCa son identifiant de fabricant courant. Une session NDEF n'en expose aucun, et de toute façon un identifiant lu en clair ne prouve rien sur l'origine du tag.
Où se trouve l'identifiant
Chaque type de tag qu'une session de tag remet porte sa propre propriété. NFCMiFareTag, NFCISO7816Tag et NFCISO15693Tag exposent identifier, que la référence d'Apple décrit comme l'identifiant matériel unique du tag, en ordre gros boutiste.
FeliCa diffère. NFCFeliCaTag expose currentIDm, l'identifiant de fabricant du système actuellement sélectionné, que la référence dit mis à jour à chaque commande d'interrogation et vide quand la sélection échoue.
Les tags ISO 15693 ajoutent icManufacturerCode et icSerialNumber, et les tags ISO 7816 et MIFARE leurs octets historiques.
Pas dans une session NDEF
NFCNDEFTag, le protocole que remet une session NDEF, expose la disponibilité, l'état et le message, et aucun identifiant. Une application qui en a besoin ouvre une session de tag, avec les déclarations que couvre la page des déclarations.
Gardez la valeur sous forme d'octets, dans l'ordre que donne la référence, avant de la comparer à des identifiants lus ailleurs. Une comparaison de chaînes hexadécimales écrites dans deux ordres différents échoue sur le même tag.
Ce à quoi il sert
Un identifiant distingue deux tags. Il sert un registre de tags déployés, le relevé de ce que porte chaque tag, ou une vérification que le tag en main est bien celui que l'application attend avant d'écrire.
Ce qu'il ne prouve pas
Tout lecteur obtient l'identifiant en clair : il ne peut donc pas montrer qu'un tag est authentique. La page du credential explique pourquoi un système qui s'y fie se laisse tromper, et la page de l'authenticité ce qui prouve vraiment qu'un tag est authentique.
Questions fréquentes
Une session NDEF peut-elle lire l'identifiant ?
Non. NFCNDEFTag n'expose aucun identifiant : ouvrez une session de tag pour le lire.
Dans quel ordre d'octets est l'identifiant ?
En gros boutiste, selon la référence d'Apple pour les tags MIFARE, ISO 7816 et ISO 15693.
Un tag FeliCa a-t-il un identifiant ?
Il expose currentIDm, l'identifiant de fabricant du système sélectionné, qui est vide quand la sélection échoue.
L'identifiant peut-il authentifier un tag ?
Non. Tout lecteur l'obtient en clair : il ne prouve rien sur l'origine du tag, et l'authentification demande une puce qui répond à un défi cryptographique.