Android HCE: Gibt es Regeln für AID?
Ich versuche, mit einem ACR122-NFC-Leser eine in einem Nexus 5 emulierte Anwendung mithilfe der Android-Hostkartenemulation auszuwählen. Kleine AIDs werden jedoch nicht erkannt.
Mein Ziel ist es, eine drei Byte lange AID zu verwenden, wie ich es bei einer DESfire-Karte tue. Mein erstes Ziel ist es, nur einen SELECT-Befehl ausführen zu können.
Meine Test-App verwendet die folgende Konfiguration für AIDs:
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_descr"
android:requireDeviceUnlock="false" >
<aid-group
android:category="other"
android:description="@string/aid_descr" >
<aid-filter android:name="A0A1A2" />
<aid-filter android:name="B0B1B2B3" />
<aid-filter android:name="C0C1C2C3C4" />
<aid-filter android:name="D0D1D2D3D4D5" />
<aid-filter android:name="E0E1E2E3E4E5E6" />
</aid-group>
</host-apdu-service>
Wenn ich die folgenden APDUs ausführe:
00 a4 04 00 03 a0 a1 a2 00
00 a4 04 00 04 b0 b1 b2 b3 00
00 a4 04 00 05 c0 c1 c2 c3 c4 00
00 a4 04 00 06 d0 d1 d2 d3 d4 d5 00
00 a4 04 00 07 e0 e1 e2 e3 e4 e5 e6 00
Ich erhalte immer die folgenden Antworten:
=> 00 a4 04 00 03 a0 a1 a2 00
<= 6f 00
=> 00 a4 04 00 04 b0 b1 b2 b3 00
<= 6a 82
=> 00 a4 04 00 05 c0 c1 c2 c3 c4 00
<= 90 00
=> 00 a4 04 00 06 d0 d1 d2 d3 d4 d5 00
<= 90 00
=> 00 a4 04 00 07 e0 e1 e2 e3 e4 e5 e6 00
<= 90 00
So funktionieren nur AIDs mit einer Länge von mehr als 5 Bytes mit Android? Oder mache ich etwas wirklich falsch?