Class AbstractPinTanPassport

java.lang.Object
org.kapott.hbci.passport.AbstractHBCIPassport
org.kapott.hbci.passport.AbstractPinTanPassport
All Implemented Interfaces:
Serializable, HBCIPassport, HBCIPassportInternal
Direct Known Subclasses:
HBCIPassportPinTan

public abstract class AbstractPinTanPassport extends AbstractHBCIPassport
Abstrakte Basis-Implementierung des PIN/TAN-Supports.
See Also:
  • Field Details

    • CACHE_KEY_SCA_STEP

      private static final String CACHE_KEY_SCA_STEP
      Hier speichern wir zwischen, ob wir eine HKTAN-Anfrage in der Dialog-Initialisierung gesendet haben und wenn ja, welcher Prozess-Schritt es war
      See Also:
    • KEY_PD_SCA

      public static final String KEY_PD_SCA
      Hier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten haben
      See Also:
    • KEY_PD_CHALLENGE

      public static final String KEY_PD_CHALLENGE
      Hier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.
      See Also:
    • KEY_PD_HHDUC

      public static final String KEY_PD_HHDUC
      Hier speichern wir das HHDuc fuer die TAN-Abfrage.
      See Also:
    • KEY_PD_ORDERREF

      public static final String KEY_PD_ORDERREF
      Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.
      See Also:
    • KEY_PD_DECOUPLED

      public static final String KEY_PD_DECOUPLED
      Hier speichern wir zwischen, ob es sich um ein Decoupled-Verfahren handelt
      See Also:
    • certfile

      private String certfile
    • checkCert

      private boolean checkCert
    • proxy

      private String proxy
    • proxyuser

      private String proxyuser
    • proxypass

      private String proxypass
    • verifyTANMode

      private boolean verifyTANMode
    • tanMethod

      private String tanMethod
    • tanMethodAutoSelected

      private boolean tanMethodAutoSelected
    • tanMethodsUser

      private List<String> tanMethodsUser
    • tanMethodsBank

      private Hashtable<String,Properties> tanMethodsBank
    • pin

      private String pin
  • Constructor Details

    • AbstractPinTanPassport

      public AbstractPinTanPassport(Object initObject)
      ct.
      Parameters:
      initObject -
  • Method Details

    • getPassportTypeName

      public String getPassportTypeName()
      See Also:
    • setBPD

      public void setBPD(Properties p)
      Specified by:
      setBPD in interface HBCIPassportInternal
      Overrides:
      setBPD in class AbstractHBCIPassport
      See Also:
    • onDialogEvent

      public void onDialogEvent(DialogEvent event, DialogContext ctx)
      Description copied from interface: HBCIPassportInternal
      Wird bei einem Dialog-Event ausgefuehrt.
      Specified by:
      onDialogEvent in interface HBCIPassportInternal
      Overrides:
      onDialogEvent in class AbstractHBCIPassport
      Parameters:
      event - das Event.
      ctx - der Dialog-Kontext.
      See Also:
    • checkInvalidPIN

      private void checkInvalidPIN(DialogContext ctx)
      Prueft, ob es Anzeichen fuer eine falsche PIN gibt. Wenn ja, geben wir per Callback Bescheid.
      Parameters:
      ctx - der Kontext.
    • check3920

      private void check3920(DialogContext ctx)
      Prueft, ob im Response der Code 3920 enthalten ist. Dort liefert die Bank neue Zweischritt-Verfahren.
      Parameters:
      ctx - der Kontext.
    • check3072

      private void check3072(DialogContext ctx)
      Prueft, ob im Response der Code 3072 enthalten ist. Dort liefert die Bank ggf. aktualisierte Zugangsdaten.
      Parameters:
      ctx - der Kontext.
    • checkSCARequest

      private void checkSCARequest(DialogContext ctx)
      Prueft, ob die Dialog-Initialisierung um ein HKTAN erweitert werden muss.
      Parameters:
      ctx - der Kontext.
    • getSCARequest

      private SCARequest getSCARequest(DialogContext ctx)
      Erzeugt einen passenden SCA-Request fuer die Dialog-Initialisierung.
      Parameters:
      ctx - der Context.
      Returns:
      der SCA-Request oder NULL, wenn keiner noetig ist.
    • checkSCAResponse

      private void checkSCAResponse(DialogContext ctx)
      Prueft das Response auf Vorhandensein eines HITAN bzw Code. Hinweis: Wir haben das ganze HKTAN-Handling derzeit leider doppelt. Einmal fuer die Dialog-Initialisierung und einmal fuer die Nachrichten mit den eigentlichen Geschaeftsvorfaellen (in patchMessagesFor2StepMethods). Wenn auch HBCIDialog#doJobs irgendwann auf die neuen RawHBCIDialoge umgestellt ist, kann eigentlich patchMessagesFor2StepMethods entfallen.
      Parameters:
      ctx - der Kontext.
    • getCommInstance

      public Comm getCommInstance()
      Specified by:
      getCommInstance in class AbstractHBCIPassport
      See Also:
    • isSupported

      public boolean isSupported()
      See Also:
    • isOneStepAllowed

      private boolean isOneStepAllowed()
      Liefert true, wenn das TAN-Einschritt-Verfahren unterstuetzt wird.
      Returns:
      true, wenn das TAN-Einschritt-Verfahren unterstuetzt wird.
    • resetSecMechs

      public void resetSecMechs()
      Kann vor new HBCIHandler() aufgerufen werden, um zu erzwingen, dass die Liste der unterstützten PIN/TAN-Sicherheitsverfahren neu vom Server abgeholt wird und evtl. neu vom Nutzer abgefragt wird.
    • setCurrentTANMethod

      public void setCurrentTANMethod(String method)
      Legt das aktuelle TAN-Verfahren fest.
      Parameters:
      method - das aktuelle TAN-Verfahren.
    • getCurrentTANMethod

      public String getCurrentTANMethod(boolean recheck)
      Liefert das aktuelle TAN-Verfahren.
      Parameters:
      recheck - true, wenn die gespeicherte Auswahl auf Aktualitaet und Verfuegbarkeit geprueft werden soll. Die Funktion kann in dem Fall einen Callback ausloesen, wenn mehrere Optionen zur Wahl stehen.
      Returns:
      das TAN-Verfahren.
    • determineTanMethod

      private String determineTanMethod()
      Liefert das aktuelle TAN-Verfahren. Hierbei versucht HBCI4Java das Verfahren erst automatisch zu ermitteln, bevor es den User fragt.
      Returns:
      das TAN-Verfahren.
    • askForTanMethod

      private String askForTanMethod()
      Liefert das aktuelle TAN-Verfahren. Fragt hierbei im Zweifelsfall eher den User anstatt es selbst herauszufinden.
      Returns:
      das TAN-Verfahren.
    • chooseTANMethod

      private String chooseTANMethod(List<TanMethod> options)
      Fuehrt den Callback zur Auswahl des TAN-Verfahrens durch.
      Parameters:
      options - die verfuegbaren Optionen.
      Returns:
      das gewaehlte TAN-Verfahren.
    • getCurrentSecMechInfo

      public Properties getCurrentSecMechInfo()
    • getTwostepMechanisms

      public Hashtable<String,Properties> getTwostepMechanisms()
    • getProfileMethod

      public String getProfileMethod()
    • getProfileVersion

      public String getProfileVersion()
    • needUserKeys

      public boolean needUserKeys()
    • needInstKeys

      public boolean needInstKeys()
    • needUserSig

      public boolean needUserSig()
    • getSysStatus

      public String getSysStatus()
    • hasInstSigKey

      public boolean hasInstSigKey()
    • hasInstEncKey

      public boolean hasInstEncKey()
    • hasMySigKey

      public boolean hasMySigKey()
    • hasMyEncKey

      public boolean hasMyEncKey()
    • getInstSigKey

      public HBCIKey getInstSigKey()
    • getInstEncKey

      public HBCIKey getInstEncKey()
    • getInstSigKeyName

      public String getInstSigKeyName()
    • getInstSigKeyNum

      public String getInstSigKeyNum()
    • getInstSigKeyVersion

      public String getInstSigKeyVersion()
    • getInstEncKeyName

      public String getInstEncKeyName()
    • getInstEncKeyNum

      public String getInstEncKeyNum()
    • getInstEncKeyVersion

      public String getInstEncKeyVersion()
    • getMySigKeyName

      public String getMySigKeyName()
    • getMySigKeyNum

      public String getMySigKeyNum()
    • getMySigKeyVersion

      public String getMySigKeyVersion()
    • getMyEncKeyName

      public String getMyEncKeyName()
    • getMyEncKeyNum

      public String getMyEncKeyNum()
    • getMyEncKeyVersion

      public String getMyEncKeyVersion()
    • getMyPublicDigKey

      public HBCIKey getMyPublicDigKey()
    • getMyPrivateDigKey

      public HBCIKey getMyPrivateDigKey()
    • getMyPublicSigKey

      public HBCIKey getMyPublicSigKey()
    • getMyPrivateSigKey

      public HBCIKey getMyPrivateSigKey()
    • getMyPublicEncKey

      public HBCIKey getMyPublicEncKey()
    • getMyPrivateEncKey

      public HBCIKey getMyPrivateEncKey()
    • getCryptMode

      public String getCryptMode()
    • getCryptAlg

      public String getCryptAlg()
    • getCryptKeyType

      public String getCryptKeyType()
    • getSigFunction

      public String getSigFunction()
    • getCryptFunction

      public String getCryptFunction()
    • getSigAlg

      public String getSigAlg()
    • getSigMode

      public String getSigMode()
    • getHashAlg

      public String getHashAlg()
    • setInstSigKey

      public void setInstSigKey(HBCIKey key)
    • setInstEncKey

      public void setInstEncKey(HBCIKey key)
    • setMyPublicDigKey

      public void setMyPublicDigKey(HBCIKey key)
    • setMyPrivateDigKey

      public void setMyPrivateDigKey(HBCIKey key)
    • setMyPublicSigKey

      public void setMyPublicSigKey(HBCIKey key)
    • setMyPrivateSigKey

      public void setMyPrivateSigKey(HBCIKey key)
    • setMyPublicEncKey

      public void setMyPublicEncKey(HBCIKey key)
    • setMyPrivateEncKey

      public void setMyPrivateEncKey(HBCIKey key)
    • incSigId

      public void incSigId()
      Specified by:
      incSigId in interface HBCIPassportInternal
      Overrides:
      incSigId in class AbstractHBCIPassport
    • collectSegCodes

      protected String collectSegCodes(String msg)
    • getPinTanInfo

      public String getPinTanInfo(String code)
      Liefert "J" oder "N" aus den BPD des Geschaeftsvorfalls, ob fuer diesen eine TAN erforderlich ist.
      Parameters:
      code - der GV-Code.
      Returns:
      "J" oder "N". Oder "A", wenn es ein Admin-Segment ist, jedoch keine TAN noetig ist.
    • deactivateTANVerifyMode

      public void deactivateTANVerifyMode()
    • activateTANVerifyMode

      public void activateTANVerifyMode()
    • setCertFile

      public void setCertFile(String filename)
    • getCertFile

      public String getCertFile()
    • setCheckCert

      protected void setCheckCert(boolean doCheck)
    • getCheckCert

      public boolean getCheckCert()
    • getProxy

      public String getProxy()
    • setProxy

      public void setProxy(String proxy)
    • getProxyPass

      public String getProxyPass()
    • getProxyUser

      public String getProxyUser()
    • setProxyPass

      public void setProxyPass(String proxypass)
    • setProxyUser

      public void setProxyUser(String proxyuser)
    • getOrderHashMode

      private String getOrderHashMode()
      Liefert den Code fuer den Hash-Modus, mit dem bei der HKTAN-Prozessvariante 1 das Auftragssegment gehasht werden soll.
      Returns:
      der Order-Hashmode oder NULL, wenn er nicht ermittelbar ist.
      Throws:
      HBCI_Exception - wenn ein ungueltiger Wert fuer den Hash-Mode in den BPD angegeben ist.
    • patchMessagesFor2StepMethods

      private void patchMessagesFor2StepMethods(DialogContext ctx)
      Patcht die TAN-Abfrage bei Bedarf in die Nachricht. Hinweis: Wir haben das ganze HKTAN-Handling derzeit leider doppelt. Einmal fuer die Dialog-Initialisierung (checkSCAResponse) und einmal fuer die Nachrichten mit den eigentlichen Geschaeftsvorfaellen (in patchMessagesFor2StepMethods). Wenn auch HBCIDialog#doJobs irgendwann auf die neuen RawHBCIDialoge umgestellt ist, kann eigentlich patchMessagesFor2StepMethods entfallen.
      Parameters:
      dialog - der Dialog.
      ret - der aktuelle Dialog-Status.
    • getTanMedia

      private String getTanMedia(int segVersion)
      Uebernimmt das Rueckfragen der TAN-Medien-Bezeichung bei Bedarf.
      Parameters:
      segVersion - die HKTAN-Versionsnummer.
      Returns:
      das ausgewaehlte TAN-Medium oder einen Leerstring, wenn keines verfuegbar war oder keines noetig ist (bei HKTAN invalid input: '<' 3).
    • setPIN

      public void setPIN(String pin)
    • getPIN

      public String getPIN()
    • clearPIN

      public void clearPIN()
    • getAllowedTwostepMechanisms

      public List<String> getAllowedTwostepMechanisms()
    • setAllowedTwostepMechanisms

      public void setAllowedTwostepMechanisms(List<String> l)
    • getMaxGVSegsPerMsg

      public int getMaxGVSegsPerMsg()
      Specified by:
      getMaxGVSegsPerMsg in interface HBCIPassportInternal
      Overrides:
      getMaxGVSegsPerMsg in class AbstractHBCIPassport
      See Also:
    • getHost

      public String getHost()
      Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden. Das sorgte schon fuer so viele unnoetige Fehler.
      Specified by:
      getHost in interface HBCIPassport
      Overrides:
      getHost in class AbstractHBCIPassport
      Returns:
      Hostname oder IP-Adresse des HBCI-Servers
      See Also: