Thread: [Hbci4java-help] PC/SC-Support via javax.smartcardio?
Brought to you by:
kleiner77
From: Olaf W. <hbc...@wi...> - 2011-09-26 10:45:51
|
Hallo Liste, HBCI4Java kann bisher ja nur via CTAPI auf Chipkarten zugreifen. Stefan hatte vor laengerer Zeit mal Support fuer das Opencard-Framework (OCF) als zusaetzlichen HBCIPassport-Typ eingebaut, um da drueber auch PC/SC-Kartenleser anzubinden. 2006 hatte er den Support wieder entfernt, weil das OCF-Projekt eingestellt wurde. Da die CTAPI inzwischen aber scheinbar tatsaechlich von PC/SC verdraengt wird, habe ich mich jetzt auch mal an dem Thema versucht. Denn seit Java 5 gibt es mit der "javax.smartcardio" API eine direkt im JDK enthaltene Unterstuetzung fuer Chipkarten. Externe Bibliotheken wie bei OCF sind also nicht mehr noetig! Java selbst enthaelt alles noetige. javax.smartcardio kann unter Windows sofort genutzt werden, wenn der PC/SC-Treiber des Kartenleser-Herstellers installiert wurde. Unter Linux muss zusaetzlich lediglich pcscd (und ein paar zugehoerige Libs) installiert sein. Wenn HBCI4Java Unterstuetzung fuer javax.smartcardio mitbringen wuerde, waere das aus meiner Sicht eine ueberaus elegante Loesung. Ich habe daher mal in alten HBCI4Java-Releases gekramt, dort noch den alten OCF-Code gefunden, ihn in das aktuelle 2.5.12 gepatcht und auf die neue javax.smartcardio API migriert. Bis zu einer funktionierenden Version fehlt aus meiner Sicht nicht mehr viel. Das Auslesen der Bankdaten (BLZ, Server-Adresse, etc.) von der Karte funktioniert bereits. Lediglich an der PIN-Abfrage scheitere ich bisher. Daher meine Frage in die Runde? Kennt sich hier jemand mit PC/SC aus und koennte da aushelfen? Ich wuerde meinen bisherigen Code dann in meinem HBCI4Java-Branch unter http://cvs.berlios.de/cgi-bin/viewvc.cgi/hibiscus/hbci4java/ einchecken und wuerde mich ueber Patches freuen. Fuer jemanden mit Kenntnis in diesem Thema sollte das in ein paar Stunden loesbar sein. Und wenn alles gut geht, haetten wir anschliessend echten PC/SC-Support in HBCI4Java! Also, Arme hoch! ;) Waer' doch gelacht, wenn wir das nicht hinkriegen. Gruss Olaf |
From: Max G. <max...@gm...> - 2012-01-12 19:18:32
|
Hallo Olaf, hast du den Code schon eingecheckt? Wuerde gerne mal damit rumspielen, da ich hier unter Linux keinen CTAPI Treiber mehr fuer meinen ReinerSCT Lesegeraet finde. Besten Dank und Gruss Max Am 26.09.2011 12:30, schrieb Olaf Willuhn: > Hallo Liste, > > HBCI4Java kann bisher ja nur via CTAPI auf Chipkarten zugreifen. Stefan > hatte vor laengerer Zeit mal Support fuer das Opencard-Framework (OCF) > als zusaetzlichen HBCIPassport-Typ eingebaut, um da drueber auch > PC/SC-Kartenleser anzubinden. 2006 hatte er den Support wieder entfernt, > weil das OCF-Projekt eingestellt wurde. > > Da die CTAPI inzwischen aber scheinbar tatsaechlich von PC/SC verdraengt > wird, habe ich mich jetzt auch mal an dem Thema versucht. > Denn seit Java 5 gibt es mit der "javax.smartcardio" API eine direkt im > JDK enthaltene Unterstuetzung fuer Chipkarten. Externe Bibliotheken wie > bei OCF sind also nicht mehr noetig! Java selbst enthaelt alles noetige. > javax.smartcardio kann unter Windows sofort genutzt werden, wenn der > PC/SC-Treiber des Kartenleser-Herstellers installiert wurde. Unter Linux > muss zusaetzlich lediglich pcscd (und ein paar zugehoerige Libs) > installiert sein. > > Wenn HBCI4Java Unterstuetzung fuer javax.smartcardio mitbringen wuerde, > waere das aus meiner Sicht eine ueberaus elegante Loesung. > > Ich habe daher mal in alten HBCI4Java-Releases gekramt, dort noch den > alten OCF-Code gefunden, ihn in das aktuelle 2.5.12 gepatcht und auf die > neue javax.smartcardio API migriert. Bis zu einer funktionierenden > Version fehlt aus meiner Sicht nicht mehr viel. Das Auslesen der > Bankdaten (BLZ, Server-Adresse, etc.) von der Karte funktioniert > bereits. Lediglich an der PIN-Abfrage scheitere ich bisher. > > Daher meine Frage in die Runde? Kennt sich hier jemand mit PC/SC aus und > koennte da aushelfen? Ich wuerde meinen bisherigen Code dann in meinem > HBCI4Java-Branch unter > > http://cvs.berlios.de/cgi-bin/viewvc.cgi/hibiscus/hbci4java/ > > einchecken und wuerde mich ueber Patches freuen. > > Fuer jemanden mit Kenntnis in diesem Thema sollte das in ein paar > Stunden loesbar sein. Und wenn alles gut geht, haetten wir anschliessend > echten PC/SC-Support in HBCI4Java! Also, Arme hoch! ;) > > Waer' doch gelacht, wenn wir das nicht hinkriegen. > > Gruss > Olaf > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > Hbci4java-help mailing list > Hbc...@li... > https://lists.sourceforge.net/lists/listinfo/hbci4java-help |
From: Olaf W. <hbc...@wi...> - 2012-01-12 21:46:46
|
Hi, > hast du den Code schon eingecheckt? Wuerde gerne mal damit rumspielen, Gerne! Den Code hatte ich am 24.11.2011 eingecheckt. Konkret ist das Patch 34. Unter https://github.com/willuhn/hbci4java/blob/master/log/patches/34-javax.smartcardio.patch kannst du dir anschauen, welche Aenderungen das waren. Das Patch ist auch bereits auf den Code unter https://github.com/willuhn/hbci4java angewendet - also dort bereits integriert. Unter https://github.com/willuhn/hbci4java/blob/master/test/hbci4java/ddv/PCSCTest.java findest du auch etwas Test-Code. Wie gesagt - er ist noch nicht ganz fertig. Insbesondere die PIN-Abfrage funktionierte noch nicht. In der hbci4java-2.5.12.jar in Hibiscus sind die Aenderungen aber noch nicht enthalten. > da ich hier unter Linux keinen CTAPI Treiber mehr fuer meinen ReinerSCT > Lesegeraet finde. Uebergangsweise sollte das auch mit dem pcsc-ctapi-wrapper funktionieren. Im Wiki unter http://www.willuhn.de/wiki/doku.php?id=support:list:kartenleser sollten sich ein paar Anleitungen finden. Gruss Olaf |
From: Max G. <max...@gm...> - 2012-02-14 17:39:07
|
Hallo, habe nun gestern und heute erstmals Zeit zum "rumspielen" gefunden. Hier meine bisherigen Erkenntnisse: 1. Unter OS X scheinen die die Sources fuer javax.smartcardio nicht vorzuliegen: https://discussions.apple.com/thread/3734028?start=0&tstart=0 2. Unter Ubuntu gibt es einen Bug im Zusammenspiel von OpenJDK und PCSC: https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/898689 Workaround in PCSCTest.java Methode beforeCard(): System.setProperty("sun.security.smartcardio.library", "/lib/libpcsclite.so.1.0.0"); 3. Mein Kartenleser (ReinerSCT cyberJack RFID komfort) scheint neuere Features zu unterstuetzen: smartcardio.HBCICardService: UNKNOWN FEATURE 15: 42000dcc Habe die HBCICardService.java erweitert, sonst Exception: private final static String[] FEATURES = new String[] { "NO_FEATURE", "FEATURE_VERIFY_PIN_START", "FEATURE_VERIFY_PIN_FINISH", "FEATURE_MODIFY_PIN_START", "FEATURE_MODIFY_PIN_FINISH", "FEATURE_GET_KEY_PRESSED", "FEATURE_VERIFY_PIN_DIRECT", "FEATURE_MODIFY_PIN_DIRECT", "FEATURE_MCT_READER_DIRECT", "FEATURE_MCT_UNIVERSAL", "FEATURE_IFD_PIN_PROPERTIES", "FEATURE_ABORT", "FEATURE_SET_SPE_MESSAGE", "FEATURE_VERIFY_PIN_DIRECT_APP_ID", "FEATURE_MODIFY_PIN_DIRECT_APP_ID", "FEATURE_WRITE_DISPLAY", "FEATURE_GET_KEY", "FEATURE_IFD_DISPLAY_PROPERTIES", "UNKNOWN FEATURE 1", "UNKNOWN FEATURE 2", "UNKNOWN FEATURE 3", "UNKNOWN FEATURE 4", "UNKNOWN FEATURE 5", "UNKNOWN FEATURE 6", "UNKNOWN FEATURE 7", "UNKNOWN FEATURE 8", "UNKNOWN FEATURE 9", "UNKNOWN FEATURE 10", "UNKNOWN FEATURE 11", "UNKNOWN FEATURE 12", "UNKNOWN FEATURE 13", "UNKNOWN FEATURE 14", "UNKNOWN FEATURE 15", "UNKNOWN FEATURE 16", "UNKNOWN FEATURE 17", "UNKNOWN FEATURE 18" }; 4. Der Test laeuft dann bei mir bis: smartcardio.HBCICardService: init command : 00 A4 04 0C 09 D2 76 00 00 25 48 42 02 00 <INF> [2012.02.14 18:32:41.390] [main/main] smartcardio.HBCICardService: init response: 6A 82 org.kapott.hbci.exceptions.HBCI_Exception: Fehler 6A82: Datei wurde nicht gefunden Ebenfalls in PCSCTest.java Methode beforeCard() habe ich noch einen try/catch Block ergaenzt, um die Fehlermeldungen angezeigt zu bekommen. try{ this.passport = (HBCIPassportDDVPCSC) AbstractHBCIPassport.getInstance("DDVPCSC"); } catch(Exception e){ e.printStackTrace(); } Soweit die bisher magere Ausbeute. Wie weit kommst du/ihr? Gruss Max Am 12.01.2012 22:46, schrieb Olaf Willuhn: > Hi, > >> hast du den Code schon eingecheckt? Wuerde gerne mal damit rumspielen, > Gerne! > Den Code hatte ich am 24.11.2011 eingecheckt. Konkret ist das Patch 34. > Unter > https://github.com/willuhn/hbci4java/blob/master/log/patches/34-javax.smartcardio.patch > kannst du dir anschauen, welche Aenderungen das waren. Das Patch ist > auch bereits auf den Code unter https://github.com/willuhn/hbci4java > angewendet - also dort bereits integriert. Unter > https://github.com/willuhn/hbci4java/blob/master/test/hbci4java/ddv/PCSCTest.java > findest du auch etwas Test-Code. Wie gesagt - er ist noch nicht ganz > fertig. Insbesondere die PIN-Abfrage funktionierte noch nicht. > > In der hbci4java-2.5.12.jar in Hibiscus sind die Aenderungen aber noch > nicht enthalten. > >> da ich hier unter Linux keinen CTAPI Treiber mehr fuer meinen ReinerSCT >> Lesegeraet finde. > Uebergangsweise sollte das auch mit dem pcsc-ctapi-wrapper > funktionieren. Im Wiki unter > http://www.willuhn.de/wiki/doku.php?id=support:list:kartenleser sollten > sich ein paar Anleitungen finden. > > Gruss > Olaf > > > > ------------------------------------------------------------------------------ > RSA(R) Conference 2012 > Mar 27 - Feb 2 > Save $400 by Jan. 27 > Register now! > http://p.sf.net/sfu/rsa-sfdev2dev2 > _______________________________________________ > Hbci4java-help mailing list > Hbc...@li... > https://lists.sourceforge.net/lists/listinfo/hbci4java-help |
From: Olaf W. <hbc...@wi...> - 2013-06-22 22:21:32
|
Hi, lang hat's gedauert - aber ich kann Erfolg vermelden! Wir haben experimentellen PC/SC-Support in HBCI4Java! Habs grad in meinem Blog gepostet: http://www.willuhn.de/blog/index.php?/archives/654-Hibiscus-Experimenteller-PCSC-Support!.html Falls ihr direkt mit HBCI4Java testen wollt, die Verwendung ist ziemlich simpel. Ich habe den Passport-Typ von HBCIPassportDDV abgeleitet. Eine Instanze kann mit HBCIPassport p = AbstractHBCIPassport.getInstance("DDVPCSC"); erstellt werden. Die Rest ist identisch mit dem Passport-Typ "DDV". Mit dem Unterschied, dass einige CTAPI-spezifische Parameter hier nicht benoetigt werden. Konkret werden bei PCSC *nicht* benoetigt: "client.passport.DDV.libname.ddv" (geht ja bei PCSC mit Java-Bordmitteln) "client.passport.DDV.libname.ctapi" (extra Treiber nicht noetig) "client.passport.DDV.ctnumber" "client.passport.DDV.port" Viel Spass beim Testen ;) Gruss Olaf On Monday 26 September 2011 12:30:36 Olaf Willuhn wrote: > Hallo Liste, > > HBCI4Java kann bisher ja nur via CTAPI auf Chipkarten zugreifen. Stefan > hatte vor laengerer Zeit mal Support fuer das Opencard-Framework (OCF) > als zusaetzlichen HBCIPassport-Typ eingebaut, um da drueber auch > PC/SC-Kartenleser anzubinden. 2006 hatte er den Support wieder entfernt, > weil das OCF-Projekt eingestellt wurde. > > Da die CTAPI inzwischen aber scheinbar tatsaechlich von PC/SC verdraengt > wird, habe ich mich jetzt auch mal an dem Thema versucht. > Denn seit Java 5 gibt es mit der "javax.smartcardio" API eine direkt im > JDK enthaltene Unterstuetzung fuer Chipkarten. Externe Bibliotheken wie > bei OCF sind also nicht mehr noetig! Java selbst enthaelt alles noetige. > javax.smartcardio kann unter Windows sofort genutzt werden, wenn der > PC/SC-Treiber des Kartenleser-Herstellers installiert wurde. Unter Linux > muss zusaetzlich lediglich pcscd (und ein paar zugehoerige Libs) > installiert sein. > > Wenn HBCI4Java Unterstuetzung fuer javax.smartcardio mitbringen wuerde, > waere das aus meiner Sicht eine ueberaus elegante Loesung. > > Ich habe daher mal in alten HBCI4Java-Releases gekramt, dort noch den > alten OCF-Code gefunden, ihn in das aktuelle 2.5.12 gepatcht und auf die > neue javax.smartcardio API migriert. Bis zu einer funktionierenden > Version fehlt aus meiner Sicht nicht mehr viel. Das Auslesen der > Bankdaten (BLZ, Server-Adresse, etc.) von der Karte funktioniert > bereits. Lediglich an der PIN-Abfrage scheitere ich bisher. > > Daher meine Frage in die Runde? Kennt sich hier jemand mit PC/SC aus und > koennte da aushelfen? Ich wuerde meinen bisherigen Code dann in meinem > HBCI4Java-Branch unter > > http://cvs.berlios.de/cgi-bin/viewvc.cgi/hibiscus/hbci4java/ > > einchecken und wuerde mich ueber Patches freuen. > > Fuer jemanden mit Kenntnis in diesem Thema sollte das in ein paar > Stunden loesbar sein. Und wenn alles gut geht, haetten wir anschliessend > echten PC/SC-Support in HBCI4Java! Also, Arme hoch! ;) > > Waer' doch gelacht, wenn wir das nicht hinkriegen. > > Gruss > Olaf |