Ich versuche Hostkarten-Emulation auf einem Android-Gerät mit diesem Beispiel mit ACR1281U NFC-Tag-Reader.
Dies ist die Art von Anwendung, die ich machen möchte.
Laut der Android-Dokumentation und dem Beispiel ist es erforderlich, eine AID im Android-Projekt zu registrieren:
%Vor%Woher weiß ich , welche AID ich in meiner Android-Anwendung registrieren muss, damit der Leser die HCE Android App lesen kann?
Hier ist eine weitere Frage, die ich bezüglich des gleichen geschrieben habe: Nein unterstütztes Kartenterminal gefunden ARC1281U nfc Kartenleser
Ich habe auf die folgenden Links verwiesen, aber es gab nicht viel Hilfe:
Bitte helfen Sie, da auf HCE nur sehr wenige Ressourcen verfügbar sind!
Das Beispiel verwendet die AID F0010203040506
im Befehl SELECT (by AID), aber mein ACR128-Lesegerät konnte das HCE-Gerät nicht lesen.
Dann habe ich die AID in F00000000A0101
geändert (was von einer anderen Beispiel-App verwendet wurde) und diese auch im AID-Filter verwendet. Nach dem Wechsel zu dieser AID konnte der ACR-Reader das HCE-Gerät erkennen.
Die AID ist ein "Name", den Sie Ihrer Smartcard-Anwendung zuweisen (im Fall von HCE: die Android-App, die die Kartenanwendung emuliert). Eine Leseanwendung verwendet diesen "Namen", um Ihre Kartenanwendung (HCE) mit einem SELECT-Befehl (nach DF-Name / AID) zu adressieren (siehe ISO / IEC 7816-4). Sie können einen beliebigen Wert verwenden, solange er ISO / IEC 7816-4 entspricht.
In Ihrem speziellen Fall die Reader-Beispielanwendung verwendet die AID F0010203040506
Um mit diesem Beispiel kompatibel zu sein, müssen Sie daher Ihren HCE-Dienst für die AID F0010203040506
registrieren.
Normalerweise definieren Sie zuerst einen "Namen" für Ihre HCE App:
%Vor%Später können Leseranwendungen diesen Namen verwenden, um Ihre HCE-App auszuwählen und dann mit ihr zu kommunizieren (in Java z. B. mit Java Smart Card IO):
%Vor%Dies hängt von Ihrem Anwendungsszenario ab.
In Ihrem Closed-Loop-Szenario, in dem Sie sowohl auf der HCE-Seite als auch auf der Leserseite die volle Kontrolle haben, können Sie ein beliebiges auswählen (beachten Sie, dass dort sind einige Regeln für AIDs ) AID und weisen Sie es Ihrer HCE App zu. Sie können diese AID später in Ihrer Leseranwendung verwenden, um die HCE-App zu adressieren.
In realen HCE-Szenarien entwerfen Sie Ihre HCE-App häufig so, dass sie mit einer vorhandenen Leserinfrastruktur interagieren. Folglich wird Ihre HCE-App bestimmte Spezifikationen implementieren. In diesem Fall bestimmt eine solche Spezifikation die AID (oder AIDs), die Ihre HCE-App verwenden muss, damit sie von der vorhandenen Leserinfrastruktur erkannt werden können. Ein Beispiel für eine solche Spezifikation ist die EMV-Spezifikation für kontaktlose Bezahlsysteme.
Manchmal ist es notwendig, dass eine Anwendung über mehrere "Namen" (AIDs) adressierbar ist. Gründe könnten sein:
Die Regeln für Smartcard-Anwendungs-IDs (AIDs) sind in ISO / IEC 7816-4 definiert. Eine AID hat mindestens 5 Byte und kann aus bis zu 16 Byte bestehen (siehe diese Antwort zu AID-Größenbeschränkungen). Basierend auf den ersten 4 Bits werden AIDs in verschiedene Gruppen unterteilt. Die relevantesten Gruppen, die in ISO / IEC 7816-4 definiert sind, sind:
'A'
: international registrierte AIDs 'D'
: national registrierte AIDs 'F'
: proprietäre AIDs (keine Registrierung) Bei (inter) national registrierten AIDs besteht die AID aus zwei Teilen, einem obligatorischen 5-Byte-RID (registrierter Anwendungsanbieter-Identifikator) und einer optionalen PIX (proprietäre Anwendungsidentifikator-Erweiterung) mit bis zu 11 Byte.
Für proprietäre AIDs ( F...
) können Sie einen beliebigen Wert verwenden.
F00000000A0101
gearbeitet, während F0010203040506
nicht funktioniert hat? Ich weiß es nicht und Sie haben nicht genügend Informationen zur Verfügung gestellt, um dies zu diagnostizieren. Z.B. Wo gibt es irgendwelche Nachrichten in adb-Protokoll, wenn Sie versucht haben, F0010203040506
zu wählen?
Wie auch immer, beide AIDs sind gültig und sollten funktionieren. Eine Möglichkeit könnte sein, dass Sie bereits eine andere HCE-Anwendung auf Ihrem Gerät installiert haben, die sich für diesen AID registriert hat. In diesem Fall hätten zwei Anwendungen auf denselben Namen gehört, was nicht möglich ist.