public class HBCIPassportDDV extends AbstractDDVPassport
Passport-Klasse für Sicherheitsverfahren DDV mit Medium Chipkarte. Bei dieser Variante gibt die Bank eine Chipkarte aus, auf der die Zugangsdaten des Nutzers für den HBCI-Zugang gespeichert sind. Außerdem befinden sich auf der Karte die (symmetrischen) Schlüssel für die Erzeugung der Signaturen und für die Verschlüsselung der Nachrichten.
Diese Klasse unterstützt DDV-Chipkarten vom Typ 0 und 1. Auf einer DDV-Chipkarte können prinzipiell bis zu fünf HBCI-Zugangsdatensätze (für unterschiedliche Banken) gespeichert werden. Diese Klasse ermöglicht die Benutzung eines beliebigen dieser Datensätze. Das hat aber in der Praxis kaum Relevanz, weil dann alle HBCI-Zugänge die gleichen kryptografischen Schlüssel benutzen müssten (es gibt nur ein Schlüsselpaar pro Chipkarte). Für Chipkarten, die von Betreibern für HBCI-Testzugängen ausgegeben werden, ist diese Option jedoch nützlich, da hier häufig tatsächlich mehrere Zugänge existieren und diese Zugangsdaten auf einer einzigen Chipkarte gespeichert werden können.
Prinzipiell benötigt diese Passport-Variante also keine zusätzliche Schlüsseldatei, da alle benötigten HBCI-Daten auf der Chipkarte gespeichert sind. Dennoch verwendet diese Klasse eine zusätzliche Datei. In dieser werden u.a. die zuletzt empfangenen BPD und UPD sowie die zuletzt benutzte HBCI-Version gespeichert, um beim nächsten Benutzen dieses HBCI-Zuganges diese Daten nicht erneut abfragen zu müssen. Diese zusätzliche Datei wird automatisch angelegt, der Dateiname setzt sich aus einem definierbaren Prefix (Pfad) und der Seriennummer der Chipkarte zusammen.
| Modifier and Type | Field and Description |
|---|---|
protected static int |
CIPHER_ITERATIONS |
protected static byte[] |
CIPHER_SALT |
callback, FOR_LOAD, FOR_SAVE, propertiesROLE_CON, ROLE_ISS, ROLE_WIT| Constructor and Description |
|---|
HBCIPassportDDV(Properties properties,
HBCICallback callback,
Object init) |
HBCIPassportDDV(Properties properties,
HBCICallback callback,
Object init,
int dummy) |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Schließen eines Passport-Objektes.
|
protected void |
closeCT() |
protected byte[] |
ctDecrypt(byte[] cryptedKey) |
protected byte[][] |
ctEncrypt() |
protected void |
ctEnterPIN() |
protected void |
ctReadBankData() |
protected void |
ctReadKeyData() |
protected void |
ctSaveBankData() |
protected void |
ctSaveSigId() |
protected byte[] |
ctSign(byte[] data) |
byte[] |
decrypt(byte[] cryptedKey,
byte[] cryptedMsg) |
byte[][] |
encrypt(byte[] plainMsg) |
String |
getCardId()
Gibt eine 16-stellige Identifikationsnummer für die verwendete Chipkarte
zurück
|
int |
getComPort()
Gibt zurück, welcher logische Port für die Kommunikation mit der Chipkarte benutzt
wird.
|
int |
getCTNumber()
Gibt die logische Nummer zurück, unter der der Chipkartenleser zu verwenden
ist.
|
int |
getEntryIdx()
Gibt die Indexnummer des Datensatzes zurück, dessen Inhalt als HBCI-Account-Informationen
benutzt werden sollen.
|
String |
getFileName()
Gibt den Dateinamen für die zusätzliche Schlüsseldatei zurück.
|
HBCIKey |
getInstEncKey() |
String |
getInstEncKeyName() |
String |
getInstEncKeyNum() |
String |
getInstEncKeyVersion() |
HBCIKey |
getInstSigKey() |
String |
getInstSigKeyName() |
String |
getInstSigKeyNum() |
String |
getInstSigKeyVersion() |
String |
getLibName()
Gibt den Dateinamen der verwendeten CTAPI-Treiberbibliothek zurück.
|
String |
getMyEncKeyName() |
String |
getMyEncKeyNum() |
String |
getMyEncKeyVersion() |
HBCIKey |
getMyPrivateDigKey() |
HBCIKey |
getMyPrivateEncKey() |
HBCIKey |
getMyPrivateSigKey() |
HBCIKey |
getMyPublicDigKey() |
HBCIKey |
getMyPublicEncKey() |
HBCIKey |
getMyPublicSigKey() |
String |
getMySigKeyName() |
String |
getMySigKeyNum() |
String |
getMySigKeyVersion() |
protected String |
getParamHeader() |
protected SecretKey |
getPassportKey() |
byte[] |
getSoftPin() |
int |
getUseBio()
Gibt zurück, ob zur PIN-Eingabe am Chipkartenterminal das Biometric-Interface
verwendet werden soll.
|
int |
getUseSoftPin()
Gibt zurück, ob die PIN-Eingabe für die Chipkarte über das Keypad des Chipkartenterminals
oder über die PC-Tastatur erfolgen soll.
|
byte[] |
hash(byte[] data) |
protected void |
initCT() |
boolean |
isSupported() |
void |
resetPassphrase() |
void |
saveBankData()
Schreiben der aktuellen Zugangsdaten auf die Chipkarte.
|
void |
saveChanges()
Speichern der Änderungen an den Passport-Daten.
|
void |
setCardId(String cardid) |
void |
setComPort(int comport) |
void |
setCTNumber(int ctnumber) |
void |
setEntryIdx(int idx) |
void |
setFileName(String filename)
Legt den Dateinamen fuer die zusaetzliche Schluesseldatei fest.
|
void |
setInstEncKey(HBCIKey key) |
void |
setInstSigKey(HBCIKey key) |
void |
setMyPrivateDigKey(HBCIKey key) |
void |
setMyPrivateEncKey(HBCIKey key) |
void |
setMyPrivateSigKey(HBCIKey key) |
void |
setMyPublicDigKey(HBCIKey key) |
void |
setMyPublicEncKey(HBCIKey key) |
void |
setMyPublicSigKey(HBCIKey key) |
protected void |
setParamHeader(String p) |
protected void |
setPassportKey(SecretKey key) |
void |
setPINEntered(boolean pinEntered) |
void |
setSoftPin(byte[] softPin) |
void |
setUseBio(int useBio) |
void |
setUseSoftPin(int useSoftPin) |
byte[] |
sign(byte[] data) |
boolean |
verify(byte[] data,
byte[] sig) |
getCommInstance, getCryptAlg, getCryptFunction, getCryptKeyType, getCryptMode, getHashAlg, getPassportTypeName, getProfileMethod, getProfileVersion, getSigAlg, getSigFunction, getSigMode, getSysStatus, hasInstEncKey, hasInstSigKey, hasMyEncKey, hasMySigKey, needInstKeys, needUserKeys, needUserSigafterCustomDialogInitHook, askForMissingData, beforeCustomDialogHook, calculatePassportKey, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, closeComm, fillAccountInfo, generateNewUserKeys, 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, getMaxGVSegsPerMsg, getMaxMsgSizeKB, getParamSegmentNames, getParentHandlerData, getPersistentData, getPort, getProperties, getSigId, getStoredCustomerId, getSuppCompMethods, getSuppLangs, getSuppSecMethods, getSuppVersions, getSysId, getUPD, getUPDVersion, getUserId, incSigId, isAnonymous, onlyBPDGVs, postInitResponseHook, safeReplace, setBLZ, setBPD, setCID, setClientData, setCountry, setCustomerId, setFilterType, setHBCIVersion, setHost, setParentHandlerData, setPersistentData, setPort, setProfileMethod, setProfileVersion, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysIdclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitchangePassphrase, clearBPD, clearInstEncKey, clearInstSigKey, clearUPD, fillAccountInfo, getAccount, getAccounts, getBLZ, getBPD, getBPDVersion, getClientData, getCountry, getCustomerId, getCustomerId, getDefaultLang, getFilterType, getHBCIVersion, getHost, getInstName, getMaxGVperMsg, getMaxMsgSizeKB, getPort, getSuppCompMethods, getSuppLangs, getSuppSecMethods, getSuppVersions, getUPD, getUPDVersion, getUserId, onlyBPDGVs, setBLZ, setClientData, setCountry, setCustomerId, setFilterType, setHost, setPort, setUserId, syncSigId, syncSysIdprotected static final byte[] CIPHER_SALT
protected static final int CIPHER_ITERATIONS
public HBCIPassportDDV(Properties properties, HBCICallback callback, Object init, int dummy)
public HBCIPassportDDV(Properties properties, HBCICallback callback, Object init)
protected void initCT()
protected void ctReadBankData()
protected void ctReadKeyData()
protected void ctEnterPIN()
protected void ctSaveBankData()
protected void ctSaveSigId()
protected byte[] ctSign(byte[] data)
protected byte[][] ctEncrypt()
protected byte[] ctDecrypt(byte[] cryptedKey)
protected void closeCT()
public String getFileName()
HBCIPassportChipcardHBCIHandler mit einem DDV-Passport zu
beschleunigen. Defaultmäßig setzt sich der Dateiname aus einem
definiertbaren Prefix (Pfad) und der Seriennummer der Chipkarte zusammen.
Da diese Datei vertrauliche Daten enthält (z.B. die Kontodaten des
Bankkunden), wird diese Datei verschlüsselt. Vor dem erstmaligen Lesen
bzw. beim Erzeugen dieser Datei wird deshalb via Callback-Mechanismus
nach einem Passwort gefragt, das zur Erzeugung des kryptografischen
Schlüssels für die Verschlüsselung benutzt wird.HBCIPassportChipcard.getFileName()public void setFileName(String filename)
HBCIPassportChipcardpublic void setComPort(int comport)
public void setCTNumber(int ctnumber)
public int getComPort()
public int getCTNumber()
public int getUseBio()
1, wenn die Biometrie-Einheit des Chipkartenterminals
für die PIN-Eingabe benutzt werden soll; 0, wenn die Biometrie-Einheit
nicht benutzt werden soll, oder -1, wenn die Verwendung
der Biometrie-Einheit automatisch erkannt werden soll.public void setUseBio(int useBio)
public int getUseSoftPin()
public void setUseSoftPin(int useSoftPin)
public byte[] getSoftPin()
public void setSoftPin(byte[] softPin)
public void setEntryIdx(int idx)
public int getEntryIdx()
public void setCardId(String cardid)
public String getCardId()
public boolean isSupported()
public HBCIKey getInstSigKey()
public String getInstSigKeyName()
public String getInstSigKeyNum()
public String getInstSigKeyVersion()
public HBCIKey getInstEncKey()
public String getInstEncKeyName()
public String getInstEncKeyNum()
public String getInstEncKeyVersion()
public HBCIKey getMyPublicSigKey()
public HBCIKey getMyPublicEncKey()
public HBCIKey getMyPublicDigKey()
public HBCIKey getMyPrivateSigKey()
public HBCIKey getMyPrivateEncKey()
public HBCIKey getMyPrivateDigKey()
public String getMySigKeyName()
public String getMySigKeyNum()
public String getMySigKeyVersion()
public String getMyEncKeyName()
public String getMyEncKeyNum()
public String getMyEncKeyVersion()
public void setInstSigKey(HBCIKey key)
public void setInstEncKey(HBCIKey key)
public void setMyPublicDigKey(HBCIKey key)
public void setMyPrivateDigKey(HBCIKey key)
public void setMyPublicSigKey(HBCIKey key)
public void setMyPrivateSigKey(HBCIKey key)
public void setMyPublicEncKey(HBCIKey key)
public void setMyPrivateEncKey(HBCIKey key)
public void saveBankData()
HBCIPassportChipcardHBCIPassport.setHost(String),
so werden diese Daten durch die Methode HBCIPassport.saveChanges()
nicht auf der Chipkarte gespeichert. Durch Aufruf dieser Methode
wird das Schreiben der aktuellen Zugangsdaten erzwungen. Zu den hiervon
betroffenen Daten zählen der Ländercode der Bank, die Bankleitzahl,
die Hostadresse des HBCI-Servers sowie die User-ID zur Anmeldung am
HBCI-Server.HBCIPassportChipcard.saveBankData()public void resetPassphrase()
HBCIPassportInternal.resetPassphrase()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)
public byte[] sign(byte[] data)
public boolean verify(byte[] data,
byte[] sig)
public byte[][] encrypt(byte[] plainMsg)
public byte[] decrypt(byte[] cryptedKey,
byte[] cryptedMsg)
public void setPINEntered(boolean pinEntered)
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 AbstractHBCIPassportpublic String getLibName()
protected void setParamHeader(String p)
setParamHeader in class AbstractHBCIPassportprotected String getParamHeader()
getParamHeader in class AbstractHBCIPassportprotected void setPassportKey(SecretKey key)
protected SecretKey getPassportKey()
Copyright © 2017. All rights reserved.