Hallo Raimund,
ich habe die 30-Tage-Testversion der WinData-Software der GLS-Bank nun mal benutzt, und die hat die Karte initialisiert. Daraufhin wurde das Log von Hibiscus auch gesprächiger:
Code
[18.09.2016 15:26:43] Teste Sicherheits-Medium...
[18.09.2016 15:26:43] open ddv passport
[18.09.2016 15:26:43] pcsc name:
[18.09.2016 15:26:43] soft pin: false
[18.09.2016 15:26:43] entry index: 1
[18.09.2016 15:26:43] passport type: RSA
[18.09.2016 15:26:43] found card terminals:
[18.09.2016 15:26:43] REINER SCT cyberJack RFID standard USB 1
[18.09.2016 15:26:44] using: org.kapott.hbci.smartcardio.RSACardService
[18.09.2016 15:26:44] querying features
[18.09.2016 15:26:44] FEATURE_VERIFY_PIN_DIRECT: 3136c8
[18.09.2016 15:26:44] FEATURE_MODIFY_PIN_DIRECT: 3136cc
[18.09.2016 15:26:44] FEATURE_UNKNOWN: 313730
[18.09.2016 15:26:44] FEATURE_MCT_READER_DIRECT: 3136d0
[18.09.2016 15:26:44] FEATURE_MCT_UNIVERSAL: 3136d4
[18.09.2016 15:26:44] FEATURE_IFD_PIN_PROPERTIES: 3136d8
[18.09.2016 15:26:44] test of passport failed: class org.kapott.hbci.exceptions.HBCI_Exception: card has wrong ATR
[18.09.2016 15:26:44] Fehler beim Testen des Sicherheits-Mediums: card has wrong ATR
[18.09.2016 15:26:44] Aufgetretene Fehlermeldungen:
[18.09.2016 15:26:44] -----------------------------
[18.09.2016 15:26:44] error while opening chipcard; nested exception is:
org.kapott.hbci.exceptions.HBCI_Exception: card has wrong ATR
[18.09.2016 15:26:44] card has wrong ATR
[18.09.2016 15:26:44] -----------------------------
Hilft nur nicht viel
Ich habe dann mal in die Code-Respositories geguckt, nachdem Infoman bzw. Olaf Willuhn ja schrieb, dass der RDH-Code eigentlich nur "so mal eben" integriert wurde, und da wird eigentlich klar, was los ist - die ATR der Chipkarte des Code-Schreibers ist in RSACardService.java hart codiert:
Code
ATR atr = card.getATR();
if (!Arrays.equals(atr.getBytes(), new byte[]{
(byte) 0x3b,
(byte) 0xb7,
(byte) 0x94,
(byte) 0x00,
(byte) 0x81,
(byte) 0x31,
(byte) 0xfe,
(byte) 0x65,
(byte) 0x53,
(byte) 0x50,
(byte) 0x4b,
(byte) 0x32,
(byte) 0x33,
(byte) 0x90,
(byte) 0x00,
(byte) 0xd1
})) {
throw new HBCI_Exception("card has wrong ATR");
}
Anders gesagt - es kann nur mit genau diesem einen Kartentyp des Autors funktionieren... Meine Karte hat einen ATR-Code der mit 3B FF 96... beginnt, und damit fliege ich natürlich raus. Ich kann nicht einschätzen, ob das so sein muss, und meine Java-Fähigkeiten reichen nicht aus, um das auszuprobieren, indem man einfach mal die if-clause rausschmeißt. Es wird damit stehen und fallen, wie universell die sonstigen Daten auf den Karten formatiert sind...
Ist jemand hier, der versierter ist und Lust hätte, diese Modifikation mal umzusetzen? ich biete mich gerne als Tester an!
Viele Grüße
Fuchs