2016-04-25 7 views
1

Wir entwickeln eine App basierend auf Android HCE. Wir haben festgestellt, dass HCE einen AID-basierten Mechanismus verwendet, um die Kommunikation an bestimmte Apps weiterzuleiten. Das bedeutet, dass der erste Befehl ein SELECT by name-Befehl sein muss, wenn ich meine App auslösen möchte.Android HCE unterstützt MF-Befehl nicht auswählen?

Dies ist eine sehr große Einschränkung der Transportdomäne. Beim Transport senden viele POSs keinen Befehl SELECT by name als ersten Befehl. Stattdessen würden sie einen Befehl SELECT MF (00A40000023F00) als ersten Befehl senden. Daher kann HCE in diesem Fall nicht funktionieren.

Gibt es einen Plan zum Hinzufügen von Standardauswahlfunktion? Oder haben wir eine andere Lösung, um diesen Anwendungsfall zu unterstützen?

Antwort

1

Android verwendet einen AID-basierten Routing-Mechanismus, um die Kommunikation im Kartenemulationsmodus an bestimmte Anwendungen (HCE-Anwendungen oder SE-Applets) zu senden. Dies ist auch das, was das NFC-Forum als primäres Mittel zur Unterstützung mehrerer unabhängiger Kartenemulationsanwendungen auf einem einzelnen NFC-Gerät konzipiert hat.

AID-based Routing erfordert den ersten Befehl ein SELECT (DF von Namen/AID) Befehl sein:

00 A4 0400 <Lc> <AID> [<Le>]

Dies ist erforderlich, um zwischen verschiedenen Anwendungen zu unterscheiden. Andernfalls wäre Android nicht in der Lage, die Kommunikation an den richtigen HCE-Dienst zu senden.

Dies verhindert jedoch auch die Emulation von allem, was einer erfolgreichen Anwendungsauswahl vorausgeht (z. B. Auswählen einer Masterdatei mit einem SELECT-Befehl (nach Dateiname usw.)). Wenn dies erlaubt wäre, hätte Android keine Möglichkeit zu wissen, welche HCE-Anwendung für die Handhabung dieses Befehls verantwortlich ist. Folglich wäre es unmöglich, mehrere HCE-Anwendungen zu hosten, die alle eine Master-Datei auf einem Gerät benötigen. Daher erwarte ich nicht, dass dies in absehbarer Zeit unterstützt wird.

Auf anderen Multi-Anwendungsplattformen existiert das gleiche Problem auch. Zum Beispiel haben typische Java-Card-Smartcards auch keine Master-Datei. Auf diesen Plattformen wird das Problem normalerweise dadurch überwunden, dass eine standardmäßig ausgewählte Anwendung zugelassen wird, die die gesamte Kommunikation vor dem ersten SELECT-Befehl (nach DF-Name/AID) verarbeitet. Man kann nur spekulieren, ob solch ein Mechanismus in einer zukünftigen Android-Version kommen würde ... Ich würde nicht darauf zählen.

Wenn gerootete Geräte eine Option sind, können Sie möglicherweise ein Framework wie Xposed verwenden, um den NFC-Systemdienst so anzupassen, dass die Kommunikation an einen Standard-HCE-Dienst gesendet wird.

-1

Für den Transport verwendet Visa seine Anwendung qVSDC App als Offline-Lösung. Es bietet spezielle öffentliche Schlüssel für die Offline-Datenauthentifizierung, um diese Transaktionen auf den Transport zu beschränken. Die Standardauswahl ist A0000000031010 für Visa, keine spezifische AID für den Transport. Aber Visa bietet Multi-AID-Unterstützung, was bedeutet, dass Sie 2. Anwendung für den Transport entwickeln können. Sie müssen Ihre App für den antwortspezifischen Befehl "AID auswählen" personalisieren.

+0

Danke für Ihre Antwort. Aber die Verarbeitungslogik des POS ist sehr schwer zu ändern, der erste POS-Befehl lautet 00A40000023F00.So Android HCE diesen Befehl nicht an meine HCE-App weiterleitet –

+0

Vielleicht können Sie Ihre App-ID auf 3F00 ändern (wenn natürlich erlaubt) –

+0

SELECT AID Befehl ist 00A404XXXXXX SELECT MF-Befehl ist 00A40000023F00 So ändern App-ID zu 3F00 ist nicht funktionieren. –

Verwandte Themen