Class HBCIPassportPinTan
- All Implemented Interfaces:
Serializable
,HBCIPassport
,HBCIPassportInternal
- Direct Known Subclasses:
HBCIPassportPinTanMemory
Passport-Klasse für HBCI mit PIN/TAN. Dieses Sicherheitsverfahren wird erst in FinTS 3.0 spezifiziert, von einigen Banken aber schon mit früheren HBCI-Versionen angeboten.
Bei diesem Verfahren werden die Nachrichten auf HBCI-Ebene nicht mit kryptografischen Verfahren signiert oder verschlüsselt. Als "Signatur" werden statt dessen TANs zusammen mit einer PIN verwendet. Die PIN wird dabei in jeder HBCI-Nachricht als Teil der "Signatur" eingefügt, doch nicht alle Nachrichten benötigen eine TAN. Eine TAN wird nur bei der Übermittlung bestimmter Geschäftsvorfälle benötigt. Welche GV das konkret sind, ermittelt HBCI4Java automatisch aus den BPD. Für jeden GV, der eine TAN benötigt, wird diese via Callback abgefragt und in die Nachricht eingefügt.
Die Verschlüsselung der Nachrichten bei der Übertragung erfolgt auf einer höheren Transportschicht. Die Nachrichten werden nämlich nicht direkt via TCP/IP übertragen, sondern in das HTTP-Protokoll eingebettet. Die Verschlüsselung der übertragenen Daten erfolgt dabei auf HTTP-Ebene (via SSL = HTTPS).
Wie auch bei HBCIPassportRDHNew
wird eine "Schlüsseldatei"
verwendet. In dieser werden allerdings keine kryptografischen Schlüssel abgelegt, sondern
lediglich die Zugangsdaten für den HBCI-Server (Hostadresse, Nutzerkennung, usw.) sowie
einige zusätzliche Daten (BPD, UPD, zuletzt benutzte HBCI-Version). Diese Datei wird
vor dem Abspeichern verschlüsselt. Vor dem Erzeugen bzw. erstmaligen Einlesen wird via
Callback nach einem Passwort gefragt, aus welchem der Schlüssel für die Verschlüsselung
der Datei berechnet wird
- See Also:
-
Field Summary
FieldsFields inherited from class org.kapott.hbci.passport.AbstractPinTanPassport
KEY_PD_CHALLENGE, KEY_PD_DECOUPLED, KEY_PD_HHDUC, KEY_PD_ORDERREF, KEY_PD_SCA
Fields inherited from interface org.kapott.hbci.passport.HBCIPassport
ROLE_CON, ROLE_ISS, ROLE_WIT
-
Constructor Summary
ConstructorsConstructorDescriptionHBCIPassportPinTan
(Object initObject) ct.HBCIPassportPinTan
(Object init, int dummy) ct. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Schließen eines Passport-Objektes.protected void
create()
Erzeugt die Passport-Datei wenn noetig.byte[]
decrypt
(byte[] cryptedKey, byte[] cryptedMsg) byte[][]
encrypt
(byte[] plainMsg) Gibt den Dateinamen der Schlüsseldatei zurück.byte[]
hash
(byte[] data) protected void
read()
Liest die Daten aus der Passport-Datei ein.void
void
Speichern der Änderungen an den Passport-Daten.void
setFileName
(String filename) Speichert den Dateinamen der Passport-Datei.byte[]
sign
(byte[] data) boolean
verify
(byte[] data, byte[] sig) Methods inherited from class org.kapott.hbci.passport.AbstractPinTanPassport
activateTANVerifyMode, clearPIN, collectSegCodes, deactivateTANVerifyMode, getAllowedTwostepMechanisms, getCertFile, getCheckCert, getCommInstance, getCryptAlg, getCryptFunction, getCryptKeyType, getCryptMode, getCurrentSecMechInfo, getCurrentTANMethod, getHashAlg, getHost, getInstEncKey, getInstEncKeyName, getInstEncKeyNum, getInstEncKeyVersion, getInstSigKey, getInstSigKeyName, getInstSigKeyNum, getInstSigKeyVersion, getMaxGVSegsPerMsg, getMyEncKeyName, getMyEncKeyNum, getMyEncKeyVersion, getMyPrivateDigKey, getMyPrivateEncKey, getMyPrivateSigKey, getMyPublicDigKey, getMyPublicEncKey, getMyPublicSigKey, getMySigKeyName, getMySigKeyNum, getMySigKeyVersion, getPassportTypeName, getPIN, getPinTanInfo, getProfileMethod, getProfileVersion, getProxy, getProxyPass, getProxyUser, getSigAlg, getSigFunction, getSigMode, getSysStatus, getTwostepMechanisms, hasInstEncKey, hasInstSigKey, hasMyEncKey, hasMySigKey, incSigId, isSupported, needInstKeys, needUserKeys, needUserSig, onDialogEvent, resetSecMechs, setAllowedTwostepMechanisms, setBPD, setCertFile, setCheckCert, setCurrentTANMethod, setInstEncKey, setInstSigKey, setMyPrivateDigKey, setMyPrivateEncKey, setMyPrivateSigKey, setMyPublicDigKey, setMyPublicEncKey, setMyPublicSigKey, setPIN, setProxy, setProxyPass, setProxyUser
Methods inherited from class org.kapott.hbci.passport.AbstractHBCIPassport
askForMissingData, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, 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
-
Field Details
-
filename
-
-
Constructor Details
-
HBCIPassportPinTan
ct.- Parameters:
init
-dummy
-
-
HBCIPassportPinTan
ct.- Parameters:
initObject
-
-
-
Method Details
-
getFileName
Gibt den Dateinamen der Schlüsseldatei zurück.- Returns:
- Dateiname der Schlüsseldatei
-
setFileName
Speichert den Dateinamen der Passport-Datei.- Parameters:
filename
-
-
resetPassphrase
public void resetPassphrase()- See Also:
-
create
protected void create()Erzeugt die Passport-Datei wenn noetig. In eine extra Funktion ausgelagert, damit es von abgeleiteten Klassen ueberschrieben werden kann. -
read
protected void read()Liest die Daten aus der Passport-Datei ein. In eine extra Funktion ausgelagert, damit es von abgeleiteten Klassen ueberschrieben werden kann. Zum Beispiel, um eine andere Art der Persistierung zu implementieren. -
saveChanges
public void saveChanges()Description copied from interface:HBCIPassport
Speichern der Änderungen an den Passport-Daten. Diese Methode sollte eigentlich niemals manuell aus einer Anwendung heraus aufgerufen werden, sondern wird vom HBCI-Kernel benutzt. Das manuelle Aufrufen vonsaveChanges
ist nur dann sinnvoll, wenn irgendwelche Passport-Daten manuell verändert werden (HBCIPassport.setHost(String)
,HBCIPassport.clearBPD()
usw.) und diese Änderungen explizit gespeichert werden sollen.- See Also:
-
hash
public byte[] hash(byte[] data) - See Also:
-
sign
public byte[] sign(byte[] data) - See Also:
-
verify
public boolean verify(byte[] data, byte[] sig) - See Also:
-
encrypt
public byte[][] encrypt(byte[] plainMsg) - See Also:
-
decrypt
public byte[] decrypt(byte[] cryptedKey, byte[] cryptedMsg) - See Also:
-
close
public void close()Description copied from interface:HBCIPassport
Schließen eines Passport-Objektes. Diese Methode wird normalerweise nicht manuell aufgerufen, da das bereits von
HBCIHandler.close()
erledigt wird. Wurde jedoch ein Passport-Objekt erzeugt, und das anschließende Erzeugen eines HBCIHandler-Objektes schlägt fehlt, dann ist das Passport immer noch geöffnet und sollte mit dieser Methode geschlossen werden, falls es nicht weiterbenutzt werden soll.Am Ende eines Programmes sollte also in jedem Fall entweder ein erfolgreiches
HBCIHandler.close()
oder wenigstens einHBCIPassport.close()
für jedes erzeugte Passport-Objekt stehen. Das ist vor allem für Passport-Varianten wichtig, die auf einer Chipkarte basieren, da mit dieser Methode die entsprechenden Ressourcen wieder freigegeben werden.- Specified by:
close
in interfaceHBCIPassport
- Overrides:
close
in classAbstractHBCIPassport
- See Also:
-