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