Moin,

es gibt in gnucash's bugzilla seit längerem den Eintrag 
http://bugzilla.gnome.org/show_bug.cgi?id=342743 , dass nämlich bei einer 
falschen eingegebenen PIN in PIN/TAN einerseits 1. keine passende 
Fehlermeldung kommt und andererseits 2. die PIN auch fälschlicherweise im 
cache gehalten wird.

Nun hab ich das endlich mal versucht zu reproduzieren. Was ich sehe ist dann 
doch nicht ganz soo schlimm: Der Auftrag flutscht nach Eingabe der falschen 
PIN erstmal irgendwie durch und ich sehe erstmal nicht so deutlich, was 
eigentlich passiert ist (auf der console sieht man jobqueue.c:  867: Bad 
pin). Insofern ist bugreport #1 schon korrekt und sollte verbessert werden. 

Anschließend, beim zweiten Anlauf des gleichen Jobs, wird die PIN 
offensichtlich doch aus dem cache geholt, aber in aqbanking intern gleich als 
"bad" erkannt, so dass man dann die Rückmeldung bekommt "The PIN was wrong", 
und man wird zu einer erneuten PIN-Eingabe aufgefordert. Also auch nicht ganz 
optimal - die PIN hätte schon gar nicht mehr im cache sein dürfen, aber 
andererseits auch nicht wirklich schlimm, da die PIN ja gar nicht abgeschickt 
worden ist.

Ach ja, beim keyfile läuft das ganze dagegen noch wesentlich unkritischer; mit 
dem commit von mir in r1063 wird nun auch sofort ein Rückmeldungs-Dialog 
angezeigt, aber auch schon vorher wurde korrekt erneut nachgefragt, wenn die 
PIN falsch war.

Damit bleibt für PIN/TAN IMHO zu verbessern: 
1. Bei falscher PIN sollte *sofort* ein entsprechender Rückmeldungs-Dialog 
kommen, und 
2. die falsche PIN sollte sofort aus dem cache rausgeworfen werden. Anbei ist 
ein Vorschlag, wie man das machen könnte.

Meinungen?

Christian
Index: src/plugins/backends/aqhbci/plugin/joblayer/jobqueue.c
===================================================================
--- src/plugins/backends/aqhbci/plugin/joblayer/jobqueue.c	(Revision 1067)
+++ src/plugins/backends/aqhbci/plugin/joblayer/jobqueue.c	(Arbeitskopie)
@@ -868,10 +868,21 @@
                 m=AH_User_GetMedium(jq->user);
                 assert(m);
                 if (AH_User_GetCryptMode(jq->user)==AH_CryptMode_Pintan) {
+		  AB_BANKING *ab = AB_User_GetBanking (jq->user);
                   DBG_INFO(AQHBCI_LOGDOMAIN, "Marking pin as bad");
                   AH_Medium_SetPinStatus(m,
                                          jq->usedPin,
                                          AB_Banking_PinStatusBad);
+		  /* At this point we need to 1. notify the user of
+		     the bad PIN, and 2. make sure it is removed from
+		     the cache. Maybe like this: */
+		  AB_Banking_MessageBox(ab,
+					AB_BANKING_MSG_FLAGS_TYPE_ERROR |
+					AB_BANKING_MSG_FLAGS_SEVERITY_NORMAL,
+					I18N("Error"),
+					I18N("The job was refused by the bank because the PIN was wrong. Please start this job again and enter the correct PIN."),
+					I18N("Ok"), 0, 0);
+		  AB_Banking_SetPinCacheEnabled(ab, 0);
                 }
               }
             }
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Aqbanking-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to