/** * Prueft, ob eine gespeicherte PIN fuer diesen Passport vorliegt. * * @param passport der Passport. * @return die PIN oder null, wenn keine gefunden wurde. * @throws Exception */ private static String getCachedPIN(HBCIPassport passport) throws Exception { String key = getCacheKey(passport); // Kein Key - dann brauchen wir auch nicht im Cache schauen if (key == null) return null; byte[] data = null; // Cache checken if (Settings.getCachePin()) { data = pinCache.get(key); } // Wenn wir noch nichts im Cache haben, schauen wir im Wallet - wenn das erlaubt ist if (data == null && Settings.getStorePin() && (passport instanceof HBCIPassportPinTan)) { String s = (String) Settings.getWallet().get(key); if (s != null) { data = Base64.decode(s); // Wenn diese Meldung im Log erscheint, gibts keinen Support mehr von mir. // Wer die PIN permament speichert, tut das auf eigenes Risiko Logger.info("pin loaded from wallet"); // Uebernehmen wir gleich in den Cache, damit wir beim // naechsten Mal direkt im Cache schauen koennen und nicht // mehr im Wallet pinCache.put(key, data); } } // Haben wir Daten? if (data != null) { ByteArrayInputStream bis = new ByteArrayInputStream(data); ByteArrayOutputStream bos = new ByteArrayOutputStream(); Application.getSSLFactory().decrypt(bis, bos); String s = bos.toString(); if (s != null && s.length() > 0) return s; } return null; }
/** @see de.willuhn.datasource.serialize.AbstractXmlIO.Value#unserialize(java.lang.String) */ public Object unserialize(String s) throws IOException { if (s == null || s.length() == 0) return null; return Base64.decode(s); }