public interface HBCIPassport
Public Interface für HBCI-Passports. Ein HBCI-Passport ist eine Art "Ausweis", der individuell für jeden Nutzer eines HBCI-Zugangs und für jeden Zugangsmechanismus ist. Ein Passport repräsentiert ein HBCI-Sicherheitsmedium und stellt Funktionen bereit, um mit dem jeweiligen Medium zu arbeiten.
Für jede Zugangsart gibt es eine konkrete Passport-Implementation, die dieses Interface implementiert. Dabei handelt es sich um
HBCIPassportDDV
für Zugang über DDV mit ChipkarteHBCIPassportRDHNew
für Zugang über RDH mit DateiHBCIPassportRDH
für Zugang über RDH mit Datei (bitte nicht mehr benutzen;
siehe Datei README.RDHNew
)HBCIPassportPinTan
für Zugang über das PIN/TAN-VerfahrenHBCIPassportAnonymous
für den anonymen ZugangHBCIPassportSIZRDHFile
für den Zugang über RDH mit Datei,
wobei als Datei eine SIZ-Schlüsseldatei, wie sie z.B. von StarMoney oder GENOlite
erzeugt wird, verwendet werden kannHBCIPassportRDHXFile
für den Zugang über RDH mit Datei,
wobei als Datei eine RDH-2- oder RDH-10-Schlüsseldatei verwendet wird,
wie sie z.B. von VR-NetWorld erzeugt wird.In einem Passport werden alle nutzer- und institutsspezifischen Daten verwaltet. Dazu gehören
Außerdem sind in einem Passport alle Methoden implementiert, die zur Durchführung der kryptografischen Operationen benötigt werden (verschlüsseln, signieren, usw.)
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ROLE_CON
Rolle eines Passport-Objektes: Eigentümer ist Mitunterzeichner für Nachricht.
|
static java.lang.String |
ROLE_ISS
Rolle eines Passport-Objektes: Eigentümer ist Herausgeber der Nachricht.
|
static java.lang.String |
ROLE_WIT
Rolle eines Passport-Objektes: Eigentümer ist Zeuge oder Überbringer der Nachricht.
|
Modifier and Type | Method and Description |
---|---|
void |
changePassphrase()
Ändern des Passwortes für die Schlüsseldatei.
|
void |
clearBPD()
Löschen der lokal gespeicherten BPD.
|
void |
clearInstEncKey() |
void |
clearInstSigKey() |
void |
clearUPD()
Löschen der lokal gespeicherten UPD.
|
void |
close()
Schließen eines Passport-Objektes.
|
void |
fillAccountInfo(Konto account)
Ausfüllen fehlender Kontoinformationen.
|
Konto |
getAccount(java.lang.String number)
Gibt ein Konto-Objekt zu einer bestimmten Kontonummer zurück.
|
Konto[] |
getAccounts()
Gibt ein Array mit Kontoinformationen zurück.
|
java.lang.String |
getBLZ()
Gibt die Bankleitzahl des Kreditinstitutes zurück.
|
java.util.Properties |
getBPD()
Gibt die gespeicherten BPD zurück.
|
java.lang.String |
getBPDVersion()
Gibt die Versionsnummer der lokal gespeicherten BPD zurück.
|
java.lang.Object |
getClientData(java.lang.String id)
Holen von clientseitig gespeicherten zusätzlichen Daten.
|
java.lang.String |
getCountry()
Gibt den Ländercode der Bank zurück.
|
java.lang.String |
getCustomerId()
Gibt die Kunden-ID zurück, die von HBCI4Java für die
Initialisierung eines Dialoges benutzt wird.
|
java.lang.String |
getCustomerId(int idx) |
java.lang.String |
getDefaultLang()
Gibt die Standardsprache des HBCI-Servers zurück.
|
java.lang.String |
getFilterType()
Gibt zurück, welcher Datenfilter für die Kommunikation mit dem HBCI-Server
verwendet wird.
|
java.lang.String |
getHBCIVersion()
Gibt die HBCI-Version zurück, die zuletzt verwendet wurde.
|
java.lang.String |
getHost()
Gibt den Hostnamen des HBCI-Servers für dieses Passport zurück.
|
HBCIKey |
getInstEncKey() |
java.lang.String |
getInstName()
Gibt den Namen des Kreditinstitutes zurück.
|
HBCIKey |
getInstSigKey() |
int |
getMaxGVperMsg() |
int |
getMaxMsgSizeKB() |
HBCIKey |
getMyPrivateDigKey() |
HBCIKey |
getMyPrivateEncKey() |
HBCIKey |
getMyPrivateSigKey() |
HBCIKey |
getMyPublicDigKey() |
HBCIKey |
getMyPublicEncKey() |
HBCIKey |
getMyPublicSigKey() |
java.lang.Integer |
getPort()
Gibt die TCP-Portnummer auf dem HBCI-Server zurück, zu der eine
HBCI-Verbindung aufgebaut werden soll.
|
java.lang.String[][] |
getSuppCompMethods() |
java.lang.String[] |
getSuppLangs()
Gibt eine Liste aller unterstützten Sprachcodes zurück.
|
java.lang.String[][] |
getSuppSecMethods()
Gibt eine Liste der vom HBCI-Server unterstützten Sicherheitsmechanismen
zurück.
|
java.lang.String[] |
getSuppVersions()
Gibt eine Liste aller unterstützten HBCI-Versionen zurück.
|
java.util.Properties |
getUPD()
Gibt die gespeicherten UPD (User-Parameter-Daten) zurück.
|
java.lang.String |
getUPDVersion()
Gibt die Versionsnummer der lokal gespeicherten UPD zurück.
|
java.lang.String |
getUserId()
Gibt die Benutzerkennung zurück, die zur Authentifikation am
HBCI-Server benutzt wird.
|
boolean |
hasInstEncKey() |
boolean |
hasInstSigKey() |
boolean |
hasMyEncKey() |
boolean |
hasMySigKey() |
boolean |
isSupported() |
boolean |
needInstKeys() |
boolean |
needUserKeys() |
boolean |
onlyBPDGVs() |
void |
saveChanges()
Speichern der Änderungen an den Passport-Daten.
|
void |
setBLZ(java.lang.String blz) |
void |
setClientData(java.lang.String id,
java.lang.Object o)
Speichern zusätzlicher Daten im Passport-Objekt.
|
void |
setCountry(java.lang.String country) |
void |
setCustomerId(java.lang.String customerid)
Setzen der zu verwendenden Kunden-ID.
|
void |
setFilterType(java.lang.String filter) |
void |
setHost(java.lang.String host)
Manuelles Setzen der Adresse des HBCI-Servers.
|
void |
setPort(java.lang.Integer port)
Setzen des TCP-Ports, der für HBCI-Verbindungen benutzt wird.
|
void |
setUserId(java.lang.String userid) |
void |
syncSigId()
Synchronisation der Signatur-ID erzwingen (nur für RDH-Passports sinnvoll).
|
void |
syncSysId()
Synchronisation der System-ID (nur für RDH-Passports sinnvoll).
|
static final java.lang.String ROLE_ISS
HBCIJob.addSignaturePassport(HBCIPassport, String)
benötigt.static final java.lang.String ROLE_CON
HBCIJob.addSignaturePassport(HBCIPassport, String)
benötigt.static final java.lang.String ROLE_WIT
HBCIJob.addSignaturePassport(HBCIPassport, String)
benötigt.java.util.Properties getBPD()
null
, falls diese nicht im
Passport vorhanden sindjava.lang.String getHBCIVersion()
HBCIHandler
verwendet werden kann. Um also
einen HBCIHandler zu erzeugen, der mit der HBCI-Version arbeitet, mit der
ein Passport-Objekt zuletzt benutzt wurde, so kann das mit
new HBCIHandler(passport.getHBCIVersion(),passport)
erfolgen (vorausgesetzt,
passport.getHBCIVersion()
gibt einen nicht-leeren String zurück.java.util.Properties getUPD()
null
, falls diese nicht im
Passport vorhanden sindjava.lang.String getBLZ()
Gibt die Bankleitzahl des Kreditinstitutes zurück. Bei Verwendung dieser Methode ist Vorsicht geboten, denn hier ist die Bankleitzahl der Bank gemeint, die den HBCI-Server betreibt. I.d.R. deckt sich diese BLZ zwar mit der BLZ der Konten des Bankkunden, es gibt aber auch Fälle, wo die BLZ, die mit dieser Methode ermittelt wird, anders ist als die BLZ bei den Kontoverbindungen des Kunden.
Für die Ermittlung der BLZ für die Kontodaten sollte statt dessen die Methode
getAccounts()
benutzt werden.
java.lang.String getCountry()
DE
".Konto[] getAccounts()
void fillAccountInfo(Konto account)
getAccounts()
) wird nach einem Konto gesucht, welches die
gleiche Kontonummer hat wie das übergebene Konto account
. Wird ein solches
Konto gefunden, so werden die Daten dieses gefundenen Kontos in das account
-Objekt
übertragen.
Diese Methode kann benutzt werden, wenn zu einem Konto nicht alle Daten bekannt sind, wenigstens
aber die Kontonummer.account
- unvollständige Konto-Informationen, bei denen die fehlenden Daten nachgetragen
werdenKonto getAccount(java.lang.String number)
getAccounts()
erzeugt wird, nach der Kontonummer durchsucht. Es wird in
jedem Fall ein nicht-leeres Kontoobjekt zurückgegeben. Wird die Kontonummer jedoch nicht in
der Liste gefunden, so wird das Konto-Objekt aus den "allgemeinen" Bank-Daten gebildet:
Kontonummer=number
; Länderkennung, BLZ und Kunden-ID aus dem Passport-Objekt;
Währung des Kontos hart auf "EUR"; Name=Kunden-ID.number
- die Kontonummer, für die ein Konto-Objekt erzeugt werden solljava.lang.String getHost()
java.lang.Integer getPort()
setPort(Integer)
geändert werden.java.lang.String getFilterType()
None
" und
"Base64
".java.lang.String getUserId()
java.lang.String getCustomerId(int idx)
java.lang.String getCustomerId()
Gibt die Kunden-ID zurück, die von HBCI4Java für die
Initialisierung eines Dialoges benutzt wird. Zu einer Benutzerkennung
(getUserId()
), welche jeweils an ein bestimmtes Medium
gebunden ist, kann es mehrere Kunden-IDs geben. Die verschiedenen
Kunden-IDs entsprechen verschiedenen Rollen, in denen der Benutzer
auftreten kann.
In den meisten Fällen gibt es zu einer Benutzerkennung nur eine einzige Kunden-ID. Wird von der Bank keine Kunden-ID explizit vergeben, so ist die Kunden-ID identisch mit der Benutzerkennung.
Siehe dazu auch
HBCIJob.addToQueue(String)
.
boolean isSupported()
boolean needInstKeys()
boolean needUserKeys()
boolean hasInstSigKey()
boolean hasInstEncKey()
boolean hasMySigKey()
boolean hasMyEncKey()
void clearInstSigKey()
void clearInstEncKey()
HBCIKey getMyPublicSigKey()
HBCIKey getMyPublicEncKey()
HBCIKey getMyPublicDigKey()
HBCIKey getMyPrivateSigKey()
HBCIKey getMyPrivateEncKey()
HBCIKey getMyPrivateDigKey()
HBCIKey getInstSigKey()
HBCIKey getInstEncKey()
java.lang.String getBPDVersion()
java.lang.String getUPDVersion()
getBPDVersion()
.java.lang.String getInstName()
null
zurückgegeben.int getMaxGVperMsg()
int getMaxMsgSizeKB()
java.lang.String[] getSuppLangs()
java.lang.String[] getSuppVersions()
Gibt eine Liste aller unterstützten HBCI-Versionen zurück.
Die einzelnen Strings für die Versionen sind die gleichen, wie sie in der Methode
HBCIHandler.HBCIHandler(String,org.kapott.hbci.passport.HBCIPassport)
verwendet werden können.
Zusätzlich zu den hier zurückgegebenen HBCI-Versions-Codes gibt es einige
spezielle Codes. Siehe dazu die Dokumentation zu
HBCIHandler.HBCIHandler(String,org.kapott.hbci.passport.HBCIPassport)
java.lang.String getDefaultLang()
getSuppLangs()
.java.lang.String[][] getSuppSecMethods()
Gibt eine Liste der vom HBCI-Server unterstützten Sicherheitsmechanismen
zurück. Gültige Werte für jeden einzelnen String sind RDH
bzw.
DDV
.
Die Unterstützung des PIN/TAN-Verfahrens kann mit dieser Methode nicht ermittelt werden.
java.lang.String[][] getSuppCompMethods()
void clearBPD()
void clearUPD()
void setCountry(java.lang.String country)
void setBLZ(java.lang.String blz)
void setHost(java.lang.String host)
Manuelles Setzen der Adresse des HBCI-Servers. Das kann evtl. nötig
sein, wenn sich die Zugangsdaten des Server geändert haben. Die Änderungen
werden permanent gespeichert, nachdem die neuen Werte wenigstens einmal in
einem HBCI-Dialog benutzt wurden oder mit
saveChanges()
explizit gespeichert
werden. Diese permanente Speicherung wird allerdings
nur bei RDH- oder PIN/TAN-Passports durchgeführt. Um die Daten bei DDV-Passports
permanent auf der Chipkarte zu speichern, ist der HBCI-PassportEditor
nötig
(es wäre kein Problem, diese Daten sofort auf der Chipkarte zu speichern, allerdings besteht dann die Gefahr, dass man "aus Versehen" falsche Daten auf der Chipkarte ablegt und die richtigen Daten nicht wieder restaurieren kann, da es bei DDV-Zugängen i.d.R. keine Begleitbriefe von der Bank gibt, in denen die korrekten Zugangsdaten aufgelistet sind).
Für das HBCI-PIN/TAN-Verfahren wird als host
die URL angegeben,
welche für die Behandlung der HBCI-PIN/TAN-Nachrichten zu benutzen ist
(z.B. www.meinebank.de/pintan/PinTanServlet
). Soll ein
anderer Port als der normale HTTPS-Port 443 benutzt werden, so darf die neue
Portnummer nicht in der URL kodiert werden. Statt dessen muss die
Methode setPort(Integer)
benutzt werden, um die Portnummer zu
setzen.
host
- die neue Adresse, unter der der HBCI-Server zu erreichen istvoid setPort(java.lang.Integer port)
443
vorinitialisiert, für alle anderen
"normalen" HBCI-Verbindungstypen mit 3000
. Diese Methode kann
benutzt werden, wenn eine andere Portnummer als die default-Nummer benutzt
werden soll. Die Portnummer für ein Passport kann auch mit dem
HBCI4Java Passport Editor geändert werden.port
- neue TCP-Portnummer, die für ausgehende Verbindungen benutzt
werden sollvoid setFilterType(java.lang.String filter)
void setUserId(java.lang.String userid)
void setCustomerId(java.lang.String customerid)
HBCIHandler.execute()
)
benutzt wird. Diese neue Kunden-ID wird dann außerdem permanent im
jeweiligen Sicherheitsmedium gespeichert (sofern das von dem Medium
unterstützt wird).customerid
- die zu verwendende Kunden-ID; wird keine customerid
angegeben (null
oder ""), so wird automatisch die
User-ID verwendet.getCustomerId()
boolean onlyBPDGVs()
void saveChanges()
saveChanges
ist nur dann sinnvoll, wenn irgendwelche Passport-Daten manuell verändert
werden (setHost(String)
,
clearBPD()
usw.) und diese Änderungen
explizit gespeichert werden sollen.void close()
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 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.
void syncSigId()
HBCIHandler
-Objekt
erzeugt wird. Durch den Aufruf dieser Methode wird veranlasst, dass
beim Erzeugen eines HBCIHandler
-Objektes mit diesem
Passport die Signatur-ID des Passports synchronisiert wird.void syncSysId()
HBCIHandler
-Objekt
erzeugt wird. Durch den Aufruf dieser Methode wird veranlasst, dass
beim Erzeugen eines HBCIHandler
-Objektes mit diesem
Passport die System-ID des Passports synchronisiert wird.void changePassphrase()
NEED_PASSPHRASE_SAVE
) nach dem neuen Passwort für die
Schlüsseldatei fragt. Anschließend wird das Medium unter Verwendung des
neuen Passwortes automatisch neu gespeichert.void setClientData(java.lang.String id, java.lang.Object o)
o
unter dem Identifikations-String
id
gespeichert. Mit getClientData(String)
kann das entsprechende Objekt wieder ausgelesen werden. Die mit dieser Methode
gesetzten Daten werden nicht mit in der Schlüsseldatei (Passport-Datei)
abgelegt, d.h. die Lebensdauer dieser Daten entspricht nur der Lebensdauer
des Passport-Objektes.id
- Identifikationsstring für das zu speichernde Objekto
- zu speicherndes Objektjava.lang.Object getClientData(java.lang.String id)
setClientData(String,Object)
im Passport gespeichert wurden, wieder ausgelesen werden. Auch das Objekt,
das beim Erzeugen eines Passport-Objektes als init
-Parameter übergeben wurde
(siehe AbstractHBCIPassport.getInstance(String,Object)
),
kann damit ausgelesen werden (mit id="init"
).id
- Identifikationsstring des auszulesenden ObjektessetClientData(String,Object)
im Passport gespeichert wurde.