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).
Es 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
callback, FOR_LOAD, FOR_SAVE, propertiesROLE_CON, ROLE_ISS, ROLE_WIT| Constructor and Description |
|---|
HBCIPassportPinTan(Properties properties,
HBCICallback callback,
Object initObject) |
HBCIPassportPinTan(Properties properties,
HBCICallback callback,
Object init,
int dummy) |
| Modifier and Type | Method and 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) |
protected CommPinTan |
getCommInstance() |
String |
getFileName()
Gibt den Dateinamen der Schlüsseldatei zurück.
|
Properties |
getProperties() |
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 |
setCallback(HBCICallback callback) |
void |
setFileName(String filename)
Speichert den Dateinamen der Passport-Datei.
|
byte[] |
sign(byte[] data) |
boolean |
verify(byte[] data,
byte[] sig) |
activateTANVerifyMode, afterCustomDialogInitHook, clearPIN, collectSegCodes, deactivateTANVerifyMode, getAllowedTwostepMechanisms, getCertFile, getCheckCert, getCryptAlg, getCryptFunction, getCryptKeyType, getCryptMode, getCurrentSecMechInfo, getCurrentTANMethod, getHashAlg, 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, setProxyUseraskForMissingData, beforeCustomDialogHook, calculatePassportKey, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, closeComm, fillAccountInfo, getAccount, getAccounts, getBLZ, getBPD, getBPDVersion, getCallback, getCID, getClientData, getComm, getCommFilter, getCountry, getCustomerId, getCustomerId, getDefaultLang, getFilterType, getHBCIVersion, getHost, getInstance, getInstance, getInstance, getInstance, getInstName, getJobRestrictions, getJobRestrictions, getLang, getMaxGVperMsg, getMaxMsgSizeKB, getParamHeader, getParamSegmentNames, getParentHandlerData, getPersistentData, 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, setPersistentData, setPort, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysId, unsetCommpublic HBCIPassportPinTan(Properties properties, HBCICallback callback, Object init, int dummy)
public HBCIPassportPinTan(Properties properties, HBCICallback callback, Object initObject)
public String getFileName()
public void setFileName(String filename)
filename - public void resetPassphrase()
HBCIPassportInternal.resetPassphrase()public Properties getProperties()
getProperties in interface HBCIPassportgetProperties in interface HBCIPassportInternalgetProperties in class AbstractHBCIPassportprotected void create()
protected void read()
public void saveChanges()
HBCIPassportsaveChanges
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()
HBCIPassportSchließ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 HBCIPassportclose in class AbstractHBCIPassportprotected CommPinTan getCommInstance()
getCommInstance in class AbstractHBCIPassportpublic void setCallback(HBCICallback callback)
Copyright © 2017. All rights reserved.