Package org.kapott.hbci.passport
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
Abstrakte Basis-Implementierung des PIN/TAN-Supports.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final String
Hier speichern wir zwischen, ob wir eine HKTAN-Anfrage in der Dialog-Initialisierung gesendet haben und wenn ja, welcher Prozess-Schritt es warprivate String
private boolean
static final String
Hier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.static final String
Hier speichern wir zwischen, ob es sich um ein Decoupled-Verfahren handeltstatic final String
Hier speichern wir das HHDuc fuer die TAN-Abfrage.static final String
Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.static final String
Hier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten habenprivate String
private String
private String
private String
private String
private boolean
private Hashtable
<String, Properties> private boolean
Fields inherited from interface org.kapott.hbci.passport.HBCIPassport
ROLE_CON, ROLE_ISS, ROLE_WIT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
private String
Liefert das aktuelle TAN-Verfahren.private void
check3072
(DialogContext ctx) Prueft, ob im Response der Code 3072 enthalten ist.private void
check3920
(DialogContext ctx) Prueft, ob im Response der Code 3920 enthalten ist.private void
Prueft, ob es Anzeichen fuer eine falsche PIN gibt.private void
Prueft, ob die Dialog-Initialisierung um ein HKTAN erweitert werden muss.private void
Prueft das Response auf Vorhandensein eines HITAN bzw Code.private String
chooseTANMethod
(List<TanMethod> options) Fuehrt den Callback zur Auswahl des TAN-Verfahrens durch.void
clearPIN()
protected String
collectSegCodes
(String msg) void
private String
Liefert das aktuelle TAN-Verfahren.boolean
getCurrentTANMethod
(boolean recheck) Liefert das aktuelle TAN-Verfahren.getHost()
Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden.int
private String
Liefert den Code fuer den Hash-Modus, mit dem bei der HKTAN-Prozessvariante 1 das Auftragssegment gehasht werden soll.getPIN()
getPinTanInfo
(String code) Liefert "J" oder "N" aus den BPD des Geschaeftsvorfalls, ob fuer diesen eine TAN erforderlich ist.getProxy()
private SCARequest
Erzeugt einen passenden SCA-Request fuer die Dialog-Initialisierung.private String
getTanMedia
(int segVersion) Uebernimmt das Rueckfragen der TAN-Medien-Bezeichung bei Bedarf.boolean
boolean
boolean
boolean
void
incSigId()
private boolean
Liefert true, wenn das TAN-Einschritt-Verfahren unterstuetzt wird.boolean
boolean
boolean
boolean
void
onDialogEvent
(DialogEvent event, DialogContext ctx) Wird bei einem Dialog-Event ausgefuehrt.private void
Patcht die TAN-Abfrage bei Bedarf in die Nachricht.void
Kann vornew HBCIHandler()
aufgerufen werden, um zu erzwingen, dass die Liste der unterstützten PIN/TAN-Sicherheitsverfahren neu vom Server abgeholt wird und evtl.void
void
setBPD
(Properties p) void
setCertFile
(String filename) protected void
setCheckCert
(boolean doCheck) void
setCurrentTANMethod
(String method) Legt das aktuelle TAN-Verfahren fest.void
setInstEncKey
(HBCIKey key) void
setInstSigKey
(HBCIKey key) void
void
void
void
setMyPublicDigKey
(HBCIKey key) void
setMyPublicEncKey
(HBCIKey key) void
setMyPublicSigKey
(HBCIKey key) void
void
void
setProxyPass
(String proxypass) void
setProxyUser
(String proxyuser) Methods inherited from class org.kapott.hbci.passport.AbstractHBCIPassport
askForMissingData, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, close, closeComm, fillAccountInfo, generateNewUserKeys, getAccount, getAccounts, getBLZ, getBPD, getBPDVersion, getCID, getClientData, getComm, getCommFilter, getCountry, getCustomerId, getCustomerId, getDefaultLang, getFilterType, getHBCIVersion, getInstance, getInstance, getInstance, getInstance, getInstName, getJobRestrictions, getJobRestrictions, getLang, getMaxGVperMsg, getMaxMsgSizeKB, getParamHeader, getParamSegmentNames, getParentHandlerData, getPersistentData, getPort, getSigId, getStoredCustomerId, getSuppCompMethods, getSuppLangs, getSuppSecMethods, getSuppVersions, getSysId, getUPD, getUPDVersion, getUserId, isAnonymous, onlyBPDGVs, setBLZ, setCID, setClientData, setCountry, setCustomerId, setFilterType, setHBCIVersion, setHost, setParamHeader, setParentHandlerData, setPersistentData, setPort, setProfileMethod, setProfileVersion, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysId
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.kapott.hbci.passport.HBCIPassport
saveChanges
Methods inherited from interface org.kapott.hbci.passport.HBCIPassportInternal
decrypt, encrypt, hash, resetPassphrase, sign, verify
-
Field Details
-
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
Hier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten haben- See Also:
-
KEY_PD_CHALLENGE
Hier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.- See Also:
-
KEY_PD_HHDUC
Hier speichern wir das HHDuc fuer die TAN-Abfrage.- See Also:
-
KEY_PD_ORDERREF
Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.- See Also:
-
KEY_PD_DECOUPLED
Hier speichern wir zwischen, ob es sich um ein Decoupled-Verfahren handelt- See Also:
-
certfile
-
checkCert
private boolean checkCert -
proxy
-
proxyuser
-
proxypass
-
verifyTANMode
private boolean verifyTANMode -
tanMethod
-
tanMethodAutoSelected
private boolean tanMethodAutoSelected -
tanMethodsUser
-
tanMethodsBank
-
pin
-
-
Constructor Details
-
AbstractPinTanPassport
ct.- Parameters:
initObject
-
-
-
Method Details
-
getPassportTypeName
- See Also:
-
setBPD
- Specified by:
setBPD
in interfaceHBCIPassportInternal
- Overrides:
setBPD
in classAbstractHBCIPassport
- See Also:
-
onDialogEvent
Description copied from interface:HBCIPassportInternal
Wird bei einem Dialog-Event ausgefuehrt.- Specified by:
onDialogEvent
in interfaceHBCIPassportInternal
- Overrides:
onDialogEvent
in classAbstractHBCIPassport
- Parameters:
event
- das Event.ctx
- der Dialog-Kontext.- See Also:
-
checkInvalidPIN
Prueft, ob es Anzeichen fuer eine falsche PIN gibt. Wenn ja, geben wir per Callback Bescheid.- Parameters:
ctx
- der Kontext.
-
check3920
Prueft, ob im Response der Code 3920 enthalten ist. Dort liefert die Bank neue Zweischritt-Verfahren.- Parameters:
ctx
- der Kontext.
-
check3072
Prueft, ob im Response der Code 3072 enthalten ist. Dort liefert die Bank ggf. aktualisierte Zugangsdaten.- Parameters:
ctx
- der Kontext.
-
checkSCARequest
Prueft, ob die Dialog-Initialisierung um ein HKTAN erweitert werden muss.- Parameters:
ctx
- der Kontext.
-
getSCARequest
Erzeugt einen passenden SCA-Request fuer die Dialog-Initialisierung.- Parameters:
ctx
- der Context.- Returns:
- der SCA-Request oder NULL, wenn keiner noetig ist.
-
checkSCAResponse
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
- Specified by:
getCommInstance
in classAbstractHBCIPassport
- 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 vornew 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
Legt das aktuelle TAN-Verfahren fest.- Parameters:
method
- das aktuelle TAN-Verfahren.
-
getCurrentTANMethod
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
Liefert das aktuelle TAN-Verfahren. Hierbei versucht HBCI4Java das Verfahren erst automatisch zu ermitteln, bevor es den User fragt.- Returns:
- das TAN-Verfahren.
-
askForTanMethod
Liefert das aktuelle TAN-Verfahren. Fragt hierbei im Zweifelsfall eher den User anstatt es selbst herauszufinden.- Returns:
- das TAN-Verfahren.
-
chooseTANMethod
Fuehrt den Callback zur Auswahl des TAN-Verfahrens durch.- Parameters:
options
- die verfuegbaren Optionen.- Returns:
- das gewaehlte TAN-Verfahren.
-
getCurrentSecMechInfo
-
getTwostepMechanisms
-
getProfileMethod
-
getProfileVersion
-
needUserKeys
public boolean needUserKeys() -
needInstKeys
public boolean needInstKeys() -
needUserSig
public boolean needUserSig() -
getSysStatus
-
hasInstSigKey
public boolean hasInstSigKey() -
hasInstEncKey
public boolean hasInstEncKey() -
hasMySigKey
public boolean hasMySigKey() -
hasMyEncKey
public boolean hasMyEncKey() -
getInstSigKey
-
getInstEncKey
-
getInstSigKeyName
-
getInstSigKeyNum
-
getInstSigKeyVersion
-
getInstEncKeyName
-
getInstEncKeyNum
-
getInstEncKeyVersion
-
getMySigKeyName
-
getMySigKeyNum
-
getMySigKeyVersion
-
getMyEncKeyName
-
getMyEncKeyNum
-
getMyEncKeyVersion
-
getMyPublicDigKey
-
getMyPrivateDigKey
-
getMyPublicSigKey
-
getMyPrivateSigKey
-
getMyPublicEncKey
-
getMyPrivateEncKey
-
getCryptMode
-
getCryptAlg
-
getCryptKeyType
-
getSigFunction
-
getCryptFunction
-
getSigAlg
-
getSigMode
-
getHashAlg
-
setInstSigKey
-
setInstEncKey
-
setMyPublicDigKey
-
setMyPrivateDigKey
-
setMyPublicSigKey
-
setMyPrivateSigKey
-
setMyPublicEncKey
-
setMyPrivateEncKey
-
incSigId
public void incSigId()- Specified by:
incSigId
in interfaceHBCIPassportInternal
- Overrides:
incSigId
in classAbstractHBCIPassport
-
collectSegCodes
-
getPinTanInfo
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
-
getCertFile
-
setCheckCert
protected void setCheckCert(boolean doCheck) -
getCheckCert
public boolean getCheckCert() -
getProxy
-
setProxy
-
getProxyPass
-
getProxyUser
-
setProxyPass
-
setProxyUser
-
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
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
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
-
getPIN
-
clearPIN
public void clearPIN() -
getAllowedTwostepMechanisms
-
setAllowedTwostepMechanisms
-
getMaxGVSegsPerMsg
public int getMaxGVSegsPerMsg()- Specified by:
getMaxGVSegsPerMsg
in interfaceHBCIPassportInternal
- Overrides:
getMaxGVSegsPerMsg
in classAbstractHBCIPassport
- See Also:
-
getHost
Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden. Das sorgte schon fuer so viele unnoetige Fehler.- Specified by:
getHost
in interfaceHBCIPassport
- Overrides:
getHost
in classAbstractHBCIPassport
- Returns:
- Hostname oder IP-Adresse des HBCI-Servers
- See Also:
-