java.io.Serializable
, HBCIPassport
, HBCIPassportInternal
public class HBCIPassportPinTan extends AbstractPinTanPassport
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 HBCIPassportRDH
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
FOR_LOAD, FOR_SAVE
ROLE_CON, ROLE_ISS, ROLE_WIT
Constructor | Description |
---|---|
HBCIPassportPinTan(java.lang.Object initObject) |
|
HBCIPassportPinTan(java.lang.Object init,
int dummy) |
Modifier and Type | Method | Description |
---|---|---|
void |
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) |
|
java.lang.String |
getFileName() |
Gibt den Dateinamen der Schlüsseldatei zurück.
|
byte[] |
hash(byte[] data) |
|
protected void |
read() |
Liest die Daten aus der Passport-Datei ein.
|
void |
resetPassphrase() |
|
void |
saveChanges() |
Speichern der Änderungen an den Passport-Daten.
|
void |
setFileName(java.lang.String filename) |
Speichert den Dateinamen der Passport-Datei.
|
byte[] |
sign(byte[] data) |
|
boolean |
verify(byte[] data,
byte[] sig) |
askForMissingData, beforeCustomDialogHook, calculatePassportKey, 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, safeReplace, setBLZ, setCID, setClientData, setCountry, setCustomerId, setFilterType, setHBCIVersion, setHost, setParamHeader, setParentHandlerData, setPersistentData, setPort, setProfileMethod, setProfileVersion, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysId
activateTANVerifyMode, afterCustomDialogInitHook, 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, postInitResponseHook, resetSecMechs, setAllowedTwostepMechanisms, setBPD, setCertFile, setCheckCert, setCurrentTANMethod, setInstEncKey, setInstSigKey, setMyPrivateDigKey, setMyPrivateEncKey, setMyPrivateSigKey, setMyPublicDigKey, setMyPublicEncKey, setMyPublicSigKey, setPIN, setProxy, setProxyPass, setProxyUser
public HBCIPassportPinTan(java.lang.Object init, int dummy)
public HBCIPassportPinTan(java.lang.Object initObject)
public java.lang.String getFileName()
public void setFileName(java.lang.String filename)
filename
- public void resetPassphrase()
HBCIPassportInternal.resetPassphrase()
protected void create()
protected void read()
public void saveChanges()
HBCIPassport
saveChanges
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.HBCIPassport.saveChanges()
public byte[] hash(byte[] data)
HBCIPassportInternal.hash(byte[])
public byte[] sign(byte[] data)
HBCIPassportInternal.sign(byte[])
public boolean verify(byte[] data, byte[] sig)
public byte[][] encrypt(byte[] plainMsg)
public byte[] decrypt(byte[] cryptedKey, byte[] cryptedMsg)
public void close()
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 ein HBCIPassport.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.
close
in interface HBCIPassport
close
in class AbstractHBCIPassport
Copyright © 2018. All rights reserved.