java.io.Serializable
, HBCIPassport
, HBCIPassportChipcard
, HBCIPassportInternal
HBCIPassportDDVPCSC
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 | Description |
---|---|---|
protected static int |
CIPHER_ITERATIONS |
|
protected static byte[] |
CIPHER_SALT |
FOR_LOAD, FOR_SAVE
ROLE_CON, ROLE_ISS, ROLE_WIT
Constructor | Description |
---|---|
HBCIPassportDDV(java.lang.Object init) |
|
HBCIPassportDDV(java.lang.Object init,
int dummy) |
Modifier and Type | Method | 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) |
|
java.lang.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.
|
java.lang.String |
getFileName() |
Gibt den Dateinamen für die zusätzliche Schlüsseldatei zurück.
|
HBCIKey |
getInstEncKey() |
|
java.lang.String |
getInstEncKeyName() |
|
java.lang.String |
getInstEncKeyNum() |
|
java.lang.String |
getInstEncKeyVersion() |
|
HBCIKey |
getInstSigKey() |
|
java.lang.String |
getInstSigKeyName() |
|
java.lang.String |
getInstSigKeyNum() |
|
java.lang.String |
getInstSigKeyVersion() |
|
java.lang.String |
getLibName() |
Gibt den Dateinamen der verwendeten CTAPI-Treiberbibliothek zurück.
|
java.lang.String |
getMyEncKeyName() |
|
java.lang.String |
getMyEncKeyNum() |
|
java.lang.String |
getMyEncKeyVersion() |
|
HBCIKey |
getMyPrivateDigKey() |
|
HBCIKey |
getMyPrivateEncKey() |
|
HBCIKey |
getMyPrivateSigKey() |
|
HBCIKey |
getMyPublicDigKey() |
|
HBCIKey |
getMyPublicEncKey() |
|
HBCIKey |
getMyPublicSigKey() |
|
java.lang.String |
getMySigKeyName() |
|
java.lang.String |
getMySigKeyNum() |
|
java.lang.String |
getMySigKeyVersion() |
|
protected java.lang.String |
getParamHeader() |
|
protected javax.crypto.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(java.lang.String cardid) |
|
void |
setComPort(int comport) |
|
void |
setCTNumber(int ctnumber) |
|
void |
setEntryIdx(int idx) |
|
void |
setFileName(java.lang.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(java.lang.String p) |
|
protected void |
setPassportKey(javax.crypto.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, needUserSig
afterCustomDialogInitHook, 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, getHost, getInstance, getInstance, getInstance, getInstance, getInstName, getJobRestrictions, getJobRestrictions, getLang, getMaxGVperMsg, getMaxGVSegsPerMsg, getMaxMsgSizeKB, getParamSegmentNames, getParentHandlerData, getPersistentData, getPort, 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, syncSysId
changePassphrase, 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, syncSysId
protected static final byte[] CIPHER_SALT
protected static final int CIPHER_ITERATIONS
public HBCIPassportDDV(java.lang.Object init, int dummy)
public HBCIPassportDDV(java.lang.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 java.lang.String getFileName()
HBCIPassportChipcard
HBCIHandler
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(java.lang.String filename)
HBCIPassportChipcard
public 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(java.lang.String cardid)
public java.lang.String getCardId()
public boolean isSupported()
public HBCIKey getInstSigKey()
public java.lang.String getInstSigKeyName()
public java.lang.String getInstSigKeyNum()
public java.lang.String getInstSigKeyVersion()
public HBCIKey getInstEncKey()
public java.lang.String getInstEncKeyName()
public java.lang.String getInstEncKeyNum()
public java.lang.String getInstEncKeyVersion()
public HBCIKey getMyPublicSigKey()
public HBCIKey getMyPublicEncKey()
public HBCIKey getMyPublicDigKey()
public HBCIKey getMyPrivateSigKey()
public HBCIKey getMyPrivateEncKey()
public HBCIKey getMyPrivateDigKey()
public java.lang.String getMySigKeyName()
public java.lang.String getMySigKeyNum()
public java.lang.String getMySigKeyVersion()
public java.lang.String getMyEncKeyName()
public java.lang.String getMyEncKeyNum()
public java.lang.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()
HBCIPassportChipcard
HBCIPassport.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()
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)
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()
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
public java.lang.String getLibName()
protected void setParamHeader(java.lang.String p)
setParamHeader
in class AbstractHBCIPassport
protected java.lang.String getParamHeader()
getParamHeader
in class AbstractHBCIPassport
protected void setPassportKey(javax.crypto.SecretKey key)
protected javax.crypto.SecretKey getPassportKey()
Copyright © 2018. All rights reserved.