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 StringHier speichern wir zwischen, ob wir eine HKTAN-Anfrage in der Dialog-Initialisierung gesendet haben und wenn ja, welcher Prozess-Schritt es warprivate Stringprivate booleanstatic final StringHier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.static final StringHier speichern wir das HHDuc fuer die TAN-Abfrage.static final StringHier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.static final StringHier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten habenprivate Stringprivate Stringprivate Stringprivate Stringprivate Stringprivate booleanprivate Hashtable<String, Properties> private booleanFields inherited from interface org.kapott.hbci.passport.HBCIPassport
ROLE_CON, ROLE_ISS, ROLE_WIT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprivate StringLiefert das aktuelle TAN-Verfahren.private voidcheck3072(DialogContext ctx) Prueft, ob im Response der Code 3072 enthalten ist.private voidcheck3920(DialogContext ctx) Prueft, ob im Response der Code 3920 enthalten ist.private voidPrueft, ob es Anzeichen fuer eine falsche PIN gibt.private voidPrueft, ob die Dialog-Initialisierung um ein HKTAN erweitert werden muss.private voidPrueft das Response auf Vorhandensein eines HITAN bzw Code.private StringchooseTANMethod(List<TanMethod> options) Fuehrt den Callback zur Auswahl des TAN-Verfahrens durch.voidclearPIN()protected StringcollectSegCodes(String msg) voidprivate StringLiefert das aktuelle TAN-Verfahren.booleangetCurrentTANMethod(boolean recheck) Liefert das aktuelle TAN-Verfahren.getHost()Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden.intprivate StringLiefert 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 SCARequestErzeugt einen passenden SCA-Request fuer die Dialog-Initialisierung.private StringgetTanMedia(int segVersion) Uebernimmt das Rueckfragen der TAN-Medien-Bezeichung bei Bedarf.booleanbooleanbooleanbooleanvoidincSigId()private booleanLiefert true, wenn das TAN-Einschritt-Verfahren unterstuetzt wird.booleanbooleanbooleanbooleanvoidonDialogEvent(DialogEvent event, DialogContext ctx) Wird bei einem Dialog-Event ausgefuehrt.private voidPatcht die TAN-Abfrage bei Bedarf in die Nachricht.voidKann vornew HBCIHandler()aufgerufen werden, um zu erzwingen, dass die Liste der unterstützten PIN/TAN-Sicherheitsverfahren neu vom Server abgeholt wird und evtl.voidvoidsetBPD(Properties p) voidsetCertFile(String filename) protected voidsetCheckCert(boolean doCheck) voidsetCurrentTANMethod(String method) Legt das aktuelle TAN-Verfahren fest.voidsetInstEncKey(HBCIKey key) voidsetInstSigKey(HBCIKey key) voidvoidvoidvoidsetMyPublicDigKey(HBCIKey key) voidsetMyPublicEncKey(HBCIKey key) voidsetMyPublicSigKey(HBCIKey key) voidvoidvoidsetProxyPass(String proxypass) voidsetProxyUser(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, syncSysIdMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.kapott.hbci.passport.HBCIPassport
saveChangesMethods 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:
-
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:
setBPDin interfaceHBCIPassportInternal- Overrides:
setBPDin classAbstractHBCIPassport- See Also:
-
onDialogEvent
Description copied from interface:HBCIPassportInternalWird bei einem Dialog-Event ausgefuehrt.- Specified by:
onDialogEventin interfaceHBCIPassportInternal- Overrides:
onDialogEventin 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:
getCommInstancein 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:
incSigIdin interfaceHBCIPassportInternal- Overrides:
incSigIdin 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:
getMaxGVSegsPerMsgin interfaceHBCIPassportInternal- Overrides:
getMaxGVSegsPerMsgin classAbstractHBCIPassport- See Also:
-
getHost
Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden. Das sorgte schon fuer so viele unnoetige Fehler.- Specified by:
getHostin interfaceHBCIPassport- Overrides:
getHostin classAbstractHBCIPassport- Returns:
- Hostname oder IP-Adresse des HBCI-Servers
- See Also:
-