/** * Dialog zur Eingabe des Passworts fuer Schluesseldateien. * * @param passport der HBCI-Passport. * @return eingegebenes Passwort. * @throws Exception */ public static synchronized String getKeyPassword(HBCIPassport passport) throws Exception { HBCI plugin = (HBCI) Application.getPluginLoader().getPlugin(HBCI.class); boolean forceAsk = plugin.getResources().getSettings().getBoolean("hbcicallback.askpassphrase.force", false); boolean secondTry = System.currentTimeMillis() - lastTry < 600l; if (secondTry) { Logger.warn( "cached key seems to be wrong, asking user, passport: " + passport.getClass().getName()); // wir waren grad eben schonmal hier. Das Passwort muss falsch sein. Wir loeschen es aus dem // Cache clearPINCache(passport); } if (!forceAsk && !secondTry) { String pw = getCachedPIN(passport); if (pw != null) { Logger.info("using cached password, passport: " + passport.getClass().getName()); lastTry = System.currentTimeMillis(); return pw; // wir haben ein gecachtes Passwort, das nehmen wir } } lastTry = 0; // Wir haben nichts im Cache oder wurden explizit aufgefordert, nach dem Passwort zu fragen KeyPasswordLoadDialog dialog = new KeyPasswordLoadDialog(passport); String pw = (String) dialog.open(); if (!forceAsk) // Nur cachen, wenn die Passwort-Abfrage nicht erzwungen war setCachedPIN(passport, pw); return pw; }