Class AbstractPinTanPassport

    • Field Detail

      • CACHE_KEY_SCA_STEP

        private static final java.lang.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:
        Constant Field Values
      • KEY_PD_SCA

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

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

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

        public static final java.lang.String KEY_PD_ORDERREF
        Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.
        See Also:
        Constant Field Values
      • certfile

        private java.lang.String certfile
      • checkCert

        private boolean checkCert
      • proxy

        private java.lang.String proxy
      • proxyuser

        private java.lang.String proxyuser
      • proxypass

        private java.lang.String proxypass
      • verifyTANMode

        private boolean verifyTANMode
      • tanMethod

        private java.lang.String tanMethod
      • tanMethodAutoSelected

        private boolean tanMethodAutoSelected
      • tanMethodsUser

        private java.util.List<java.lang.String> tanMethodsUser
      • tanMethodsBank

        private java.util.Hashtable<java.lang.String,​java.util.Properties> tanMethodsBank
      • pin

        private java.lang.String pin
    • Constructor Detail

      • AbstractPinTanPassport

        public AbstractPinTanPassport​(java.lang.Object initObject)
        ct.
        Parameters:
        initObject -
    • Method Detail

      • 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.
      • 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​(java.lang.String method)
        Legt das aktuelle TAN-Verfahren fest.
        Parameters:
        method - das aktuelle TAN-Verfahren.
      • getCurrentTANMethod

        public java.lang.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 java.lang.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 java.lang.String askForTanMethod()
        Liefert das aktuelle TAN-Verfahren. Fragt hierbei im Zweifelsfall eher den User anstatt es selbst herauszufinden.
        Returns:
        das TAN-Verfahren.
      • chooseTANMethod

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

        public java.util.Properties getCurrentSecMechInfo()
      • getTwostepMechanisms

        public java.util.Hashtable<java.lang.String,​java.util.Properties> getTwostepMechanisms()
      • getProfileMethod

        public java.lang.String getProfileMethod()
      • getProfileVersion

        public java.lang.String getProfileVersion()
      • needUserKeys

        public boolean needUserKeys()
      • needInstKeys

        public boolean needInstKeys()
      • needUserSig

        public boolean needUserSig()
      • getSysStatus

        public java.lang.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 java.lang.String getInstSigKeyName()
      • getInstSigKeyNum

        public java.lang.String getInstSigKeyNum()
      • getInstSigKeyVersion

        public java.lang.String getInstSigKeyVersion()
      • getInstEncKeyName

        public java.lang.String getInstEncKeyName()
      • getInstEncKeyNum

        public java.lang.String getInstEncKeyNum()
      • getInstEncKeyVersion

        public java.lang.String getInstEncKeyVersion()
      • getMySigKeyName

        public java.lang.String getMySigKeyName()
      • getMySigKeyNum

        public java.lang.String getMySigKeyNum()
      • getMySigKeyVersion

        public java.lang.String getMySigKeyVersion()
      • getMyEncKeyName

        public java.lang.String getMyEncKeyName()
      • getMyEncKeyNum

        public java.lang.String getMyEncKeyNum()
      • getMyEncKeyVersion

        public java.lang.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 java.lang.String getCryptMode()
      • getCryptAlg

        public java.lang.String getCryptAlg()
      • getCryptKeyType

        public java.lang.String getCryptKeyType()
      • getSigFunction

        public java.lang.String getSigFunction()
      • getCryptFunction

        public java.lang.String getCryptFunction()
      • getSigAlg

        public java.lang.String getSigAlg()
      • getSigMode

        public java.lang.String getSigMode()
      • getHashAlg

        public java.lang.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)
      • collectSegCodes

        protected java.lang.String collectSegCodes​(java.lang.String msg)
      • getPinTanInfo

        public java.lang.String getPinTanInfo​(java.lang.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​(java.lang.String filename)
      • getCertFile

        public java.lang.String getCertFile()
      • setCheckCert

        protected void setCheckCert​(boolean doCheck)
      • getCheckCert

        public boolean getCheckCert()
      • getProxy

        public java.lang.String getProxy()
      • setProxy

        public void setProxy​(java.lang.String proxy)
      • getProxyPass

        public java.lang.String getProxyPass()
      • getProxyUser

        public java.lang.String getProxyUser()
      • setProxyPass

        public void setProxyPass​(java.lang.String proxypass)
      • setProxyUser

        public void setProxyUser​(java.lang.String proxyuser)
      • getOrderHashMode

        private java.lang.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 java.lang.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 < 3).
      • setPIN

        public void setPIN​(java.lang.String pin)
      • getPIN

        public java.lang.String getPIN()
      • clearPIN

        public void clearPIN()
      • getAllowedTwostepMechanisms

        public java.util.List<java.lang.String> getAllowedTwostepMechanisms()
      • setAllowedTwostepMechanisms

        public void setAllowedTwostepMechanisms​(java.util.List<java.lang.String> l)