Package org.kapott.hbci.passport

# Class AbstractHBCIPassport

java.lang.Object
org.kapott.hbci.passport.AbstractHBCIPassport

All Implemented Interfaces:
  `Serializable`, `HBCIPassport`, `HBCIPassportInternal`

Direct Known Subclasses:
  `AbstractDDVPassport`, `AbstractPinTanPassport`, `AbstractRDHPassport`, `HBCIPassportAnonymous`, `HBCIPassportRAH10`

public abstract class AbstractHBCIPassport extends Object implements HBCIPassportInternal, Serializable

Diese Klasse stellt die Basisklasse für alle "echten" Passport-Implementationen dar. Hier werden bereits einige Methoden implementiert sowie einige zusätzliche Hilfsmethoden zur Verfügung gestellt.

Aus einer HBCI-Anwendung heraus ist hier nur eine einzige Methode interessant, um eine Instanz eines bestimmtes Passports zu erzeugen

See Also:
  - Serialized Form

## Field Summary

### Fields inherited from interface org.kapott.hbci.passport.HBCIPassport

`ROLE_CON, ROLE_ISS, ROLE_WIT`

## Constructor Summary

Constructors
Constructor
Description
`AbstractHBCIPassport(Object init)`

## Method Summary

Modifier and Type
Method
Description
`protected boolean`
`askForMissingData(boolean needCountry, boolean needBLZ, boolean needHost, boolean needPort, boolean needFilter, boolean needUserId, boolean needCustomerId)`
`final boolean`
`canMixSecMethods()`
`void`
`changePassphrase()`
Ändern des Passwortes für die Schlüsseldatei.
`static byte[]`
`checkForCryptDataSize(byte[] buffer, int size)`
`final void`
`clearBPD()`
Löschen der lokal gespeicherten BPD.
`final void`
`clearInstEncKey()`
`final void`
`clearInstSigKey()`
`final void`
`clearMyDigKey()`
`final void`
`clearMyEncKey()`
`final void`
`clearMySigKey()`
`final void`
`clearUPD()`
Löschen der lokal gespeicherten UPD.
`void`
`close()`
Schließen eines Passport-Objektes.
`final void`
`closeComm()`
`final void`
`fillAccountInfo(Konto account)`
Ausfüllen fehlender Kontoinformationen.
`HBCIKey[][]`
`generateNewUserKeys()`
`final Konto`
`getAccount(String number)`
Gibt ein Konto-Objekt zu einer bestimmten Kontonummer zurück.
`final Konto[]`
`getAccounts()`
Gibt ein Array mit Kontoinformationen zurück.
`final String`
`getBLZ()`
Gibt die Bankleitzahl des Kreditinstitutes zurück.
`final Properties`
`getBPD()`
Gibt die gespeicherten BPD zurück.
`final String`
`getBPDVersion()`
Gibt die Versionsnummer der lokal gespeicherten BPD zurück.
`final String`
`getCID()`
`final Object`
`getClientData(String id)`
Holen von clientseitig gespeicherten zusätzlichen Daten.
`final Comm`
`getComm()`
`final Filter`
`getCommFilter()`
`abstract Comm`
`getCommInstance()`
`final String`
`getCountry()`
Gibt den Ländercode der Bank zurück.
`String`
`getCustomerId()`
Gibt die Kunden-ID zurück, die von HBCI4Java für die Initialisierung eines Dialoges benutzt wird.
`final String`
`getCustomerId(int idx)`
`final String`
`getDefaultLang()`
Gibt die Standardsprache des HBCI-Servers zurück.
`final String`
`getFilterType()`
Gibt zurück, welcher Datenfilter für die Kommunikation mit dem HBCI-Server verwendet wird.
`final String`
`getHBCIVersion()`
Gibt die HBCI-Version zurück, die zuletzt verwendet wurde.
`String`
`getHost()`
Gibt den Hostnamen des HBCI-Servers für dieses Passport zurück.
`static HBCIPassport`
`getInstance()`
Entspricht `getInstance((Object)null)`
`static HBCIPassport`
`getInstance(Object init)`
Erzeugt eine Instanz eines HBCI-Passports.
`static HBCIPassport`
`getInstance(String name)`
Entspricht `getInstance(name,null)`
`static HBCIPassport`
`getInstance(String name, Object init)`
Erzeugt eine Instanz eines HBCIPassports und gibt diese zurück.
`final String`
`getInstName()`
Gibt den Namen des Kreditinstitutes zurück.
`Properties`
`getJobRestrictions(String specname)`
`Properties`
`getJobRestrictions(String gvname, String version)`
`final String`
`getLang()`
`int`
`getMaxGVperMsg()`
`int`
`getMaxGVSegsPerMsg()`
`final int`
`getMaxMsgSizeKB()`
`protected String`
`getParamHeader()`
`Properties`
`getParamSegmentNames()`
`IHandlerData`
`getParentHandlerData()`
`Object`
`getPersistentData(String id)`
`final Integer`
`getPort()`
Gibt die TCP-Portnummer auf dem HBCI-Server zurück, zu der eine HBCI-Verbindung aufgebaut werden soll.
`final Long`
`getSigId()`
`String`
`getStoredCustomerId()`
`final String[][]`
`getSuppCompMethods()`
`final String[]`
`getSuppLangs()`
Gibt eine Liste aller unterstützten Sprachcodes zurück.
`final String[][]`
`getSuppSecMethods()`
Gibt eine Liste der vom HBCI-Server unterstützten Sicherheitsmechanismen zurück.
`final String[]`
`getSuppVersions()`
Gibt eine Liste aller unterstützten HBCI-Versionen zurück.
`String`
`getSysId()`
`final Properties`
`getUPD()`
Gibt die gespeicherten UPD (User-Parameter-Daten) zurück.
`final String`
`getUPDVersion()`
Gibt die Versionsnummer der lokal gespeicherten UPD zurück.
`String`
`getUserId()`
Gibt die Benutzerkennung zurück, die zur Authentifikation am HBCI-Server benutzt wird.
`void`
`incSigId()`
`boolean`
`isAnonymous()`
`void`
`onDialogEvent(DialogEvent event, DialogContext ctx)`
Wird bei einem Dialog-Event ausgefuehrt.
`final boolean`
`onlyBPDGVs()`
`final void`
`setBLZ(String blz)`
`void`
`setBPD(Properties bpd)`
`final void`
`setCID(String cid)`
`final void`
`setClientData(String id, Object o)`
Speichern zusätzlicher Daten im Passport-Objekt.
`final void`
`setCountry(String country)`
`final void`
`setCustomerId(String customerid)`
Setzen der zu verwendenden Kunden-ID.
`final void`
`setFilterType(String filter)`
`final void`
`setHBCIVersion(String hbciversion)`
`final void`
`setHost(String host)`
Manuelles Setzen der Adresse des HBCI-Servers.
`protected void`
`setParamHeader(String paramHeader)`
`void`
`setParentHandlerData(IHandlerData handler)`
`void`
`setPersistentData(String id, Object o)`
`final void`
`setPort(Integer port)`
Setzen des TCP-Ports, der für HBCI-Verbindungen benutzt wird.
`void`
`setProfileMethod(String method)`
`void`
`setProfileVersion(String version)`
`final void`
`setSigId(Long sigid)`
`final void`
`setSysId(String sysid)`
`final void`
`setUPD(Properties upd)`
`final void`
`setUserId(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).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.kapott.hbci.passport.HBCIPassport

`getInstEncKey, getInstSigKey, getMyPrivateDigKey, getMyPrivateEncKey, getMyPrivateSigKey, getMyPublicDigKey, getMyPublicEncKey, getMyPublicSigKey, hasInstEncKey, hasInstSigKey, hasMyEncKey, hasMySigKey, isSupported, needInstKeys, needUserKeys, saveChanges`

### Methods inherited from interface org.kapott.hbci.passport.HBCIPassportInternal

`decrypt, encrypt, getCryptAlg, getCryptFunction, getCryptKeyType, getCryptMode, getHashAlg, getInstEncKeyName, getInstEncKeyNum, getInstEncKeyVersion, getInstSigKeyName, getInstSigKeyNum, getInstSigKeyVersion, getMyEncKeyName, getMyEncKeyNum, getMyEncKeyVersion, getMySigKeyName, getMySigKeyNum, getMySigKeyVersion, getPassportTypeName, getProfileMethod, getProfileVersion, getSigAlg, getSigFunction, getSigMode, getSysStatus, hash, needUserSig, resetPassphrase, setInstEncKey, setInstSigKey, setMyPrivateDigKey, setMyPrivateEncKey, setMyPrivateSigKey, setMyPublicDigKey, setMyPublicEncKey, setMyPublicSigKey, sign, verify`

## Constructor Details

### AbstractHBCIPassport

public AbstractHBCIPassport(Object init)

## Method Details

### askForMissingData

protected boolean askForMissingData(boolean needCountry, boolean needBLZ, boolean needHost, boolean needPort, boolean needFilter, boolean needUserId, boolean needCustomerId)

### getComm

public final Comm getComm()

Specified by:
  `getComm` in interface `HBCIPassportInternal`

### getCommInstance

public abstract Comm getCommInstance()

### getCommFilter

public final Filter getCommFilter()

Specified by:
  `getCommFilter` in interface `HBCIPassportInternal`

### closeComm

public final void closeComm()

Specified by:
  `closeComm` in interface `HBCIPassportInternal`

### getBPD

public final Properties getBPD()
Description copied from interface: `HBCIPassport`
Gibt die gespeicherten BPD zurück. Die Auswertung der BPD seitens einer HBCI-Anwendung auf direktem Weg wird nicht empfohlen, da es keine Dokumentation über die Namensgebung der einzelnen Einträge gibt.

Specified by:
  `getBPD` in interface `HBCIPassport`
Returns:
  die Bankparamterdaten oder `null`, falls diese nicht im Passport vorhanden sind

### setHBCIVersion

public final void setHBCIVersion(String hbciversion)

Specified by:
  `setHBCIVersion` in interface `HBCIPassportInternal`

### getHBCIVersion

public final String getHBCIVersion()
Description copied from interface: `HBCIPassport`
Gibt die HBCI-Version zurück, die zuletzt verwendet wurde. Der hier zurückgegebene Wert ist der selbe, der bei der Initialisierung des `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.

Specified by:
  `getHBCIVersion` in interface `HBCIPassport`
Returns:
  Die zuletzt verwendete HBCI-Version. Ist diese Information nicht verfügbar, so wird ein leerer String zurückgegeben.

### getUPD

public final Properties getUPD()
Description copied from interface: `HBCIPassport`
Gibt die gespeicherten UPD (User-Parameter-Daten) zurück. Eine direkte Auswertung des Inhalts dieses Property-Objektes wird nicht empfohlen, da die Benennung der einzelnen Einträge nicht explizit dokumentiert ist.

Specified by:
  `getUPD` in interface `HBCIPassport`
Returns:
  die Userparameterdaten oder `null`, falls diese nicht im Passport vorhanden sind

### getBLZ

public final String getBLZ()
Description copied from interface: `HBCIPassport`

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 `HBCIPassport.getAccounts()` benutzt werden.

Specified by:
  `getBLZ` in interface `HBCIPassport`
Returns:
  die BLZ der Bank

### getCountry

public final String getCountry()
Description copied from interface: `HBCIPassport`
Gibt den Ländercode der Bank zurück. Für deutsche Banken ist das der String "`DE`".

Specified by:
  `getCountry` in interface `HBCIPassport`
Returns:
  Ländercode der Bank

### getAccounts

public final Konto[] getAccounts()
Description copied from interface: `HBCIPassport`
Gibt ein Array mit Kontoinformationen zurück. Auf die hier zurückgegebenen Konten kann via HBCI zugegriffen werden. Nicht jede Bank unterstützt diese Abfrage, so dass dieses Array u.U. auch leer sein kann, obwohl natürlich via HBCI auf bestimmte Konten zugegriffen werden kann. In diesem Fall müssen die Kontoinformationen anderweitig ermittelt werden (manuelle Eingabe des Anwenders).

Specified by:
  `getAccounts` in interface `HBCIPassport`
Returns:
  Array mit Kontoinformationen über verfügbare HBCI-Konten

### fillAccountInfo

public final void fillAccountInfo(Konto account)
Description copied from interface: `HBCIPassport`
Ausfüllen fehlender Kontoinformationen. In der Liste der verfügbaren Konten (siehe `HBCIPassport.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.

Specified by:
  `fillAccountInfo` in interface `HBCIPassport`
Parameters:
  `account` - unvollständige Konto-Informationen, bei denen die fehlenden Daten nachgetragen werden
See Also:
  - `HBCIPassport.fillAccountInfo(org.kapott.hbci.structures.Konto)`

### getAccount

public final Konto getAccount(String number)
Description copied from interface: `HBCIPassport`
Gibt ein Konto-Objekt zu einer bestimmten Kontonummer zurück. Dazu wird die Liste, die via `HBCIPassport.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.

Specified by:
  `getAccount` in interface `HBCIPassport`
Parameters:
  `number` - die Kontonummer, für die ein Konto-Objekt erzeugt werden soll
Returns:
  ein Konto-Objekt, welches mindestens die Kontonummer enthält. Wenn verfügbar, so sind auch die restlichen Informationen über dieses Konto (BLZ, Inhaber, Währung usw.) ausgefüllt

### getHost

public String getHost()
Description copied from interface: `HBCIPassport`
Gibt den Hostnamen des HBCI-Servers für dieses Passport zurück. Handelt es sich bei dem Passport-Objekt um ein PIN/TAN-Passport, so enthält dieser String die URL, die für die HTTPS-Kommunikation mit dem HBCI-Server der Bank benutzt wird.

Specified by:
  `getHost` in interface `HBCIPassport`
Returns:
  Hostname oder IP-Adresse des HBCI-Servers

### getPort

public final Integer getPort()
Description copied from interface: `HBCIPassport`
Gibt die TCP-Portnummer auf dem HBCI-Server zurück, zu der eine HBCI-Verbindung aufgebaut werden soll. In der Regel ist das der Port 3000, für PIN/TAN-Passports wird hier 443 (für HTTPS-Port) zurückgegeben. Der zu benutzende TCP-Port für die Kommunikation kannn mit `HBCIPassport.setPort(Integer)` geändert werden.

Specified by:
  `getPort` in interface `HBCIPassport`
Returns:
  TCP-Portnummer auf dem HBCI-Server

### getFilterType

public final String getFilterType()
Description copied from interface: `HBCIPassport`
Gibt zurück, welcher Datenfilter für die Kommunikation mit dem HBCI-Server verwendet wird. Gültige Bezeichner für Filter sind "`None`" und "`Base64`".

Specified by:
  `getFilterType` in interface `HBCIPassport`

### getUserId

public String getUserId()
Description copied from interface: `HBCIPassport`
Gibt die Benutzerkennung zurück, die zur Authentifikation am HBCI-Server benutzt wird.

Specified by:
  `getUserId` in interface `HBCIPassport`
Returns:
  Benutzerkennung für Authentifikation

### getCustomerId

public final String getCustomerId(int idx)

Specified by:
  `getCustomerId` in interface `HBCIPassport`

### getCustomerId

public String getCustomerId()
Description copied from interface: `HBCIPassport`

Gibt die Kunden-ID zurück, die von HBCI4Java für die Initialisierung eines Dialoges benutzt wird. Zu einer Benutzerkennung (`HBCIPassport.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)`.

Specified by:
  `getCustomerId` in interface `HBCIPassport`
Returns:
  Kunden-ID für die HBCI-Kommunikation

### getStoredCustomerId

public String getStoredCustomerId()

### getSysId

public String getSysId()

Specified by:
  `getSysId` in interface `HBCIPassportInternal`

### getCID

public final String getCID()

Specified by:
  `getCID` in interface `HBCIPassportInternal`

### clearInstSigKey

public final void clearInstSigKey()

Specified by:
  `clearInstSigKey` in interface `HBCIPassport`

### clearInstEncKey

public final void clearInstEncKey()

Specified by:
  `clearInstEncKey` in interface `HBCIPassport`

### clearMySigKey

public final void clearMySigKey()

Specified by:
  `clearMySigKey` in interface `HBCIPassportInternal`

### clearMyEncKey

public final void clearMyEncKey()

Specified by:
  `clearMyEncKey` in interface `HBCIPassportInternal`

### clearMyDigKey

public final void clearMyDigKey()

Specified by:
  `clearMyDigKey` in interface `HBCIPassportInternal`

### getBPDVersion

public final String getBPDVersion()
Description copied from interface: `HBCIPassport`
Gibt die Versionsnummer der lokal gespeicherten BPD zurück. Sind keine BPD vorhanden, so wird "0" zurückgegeben. Leider benutzen einige Banken "0" auch als Versionsnummer für die tatsächlich vorhandenen BPD, so dass bei diesen Banken auch dann "0" zurückgegeben wird, wenn in Wirklichkeit BPD vorhanden sind.

Specified by:
  `getBPDVersion` in interface `HBCIPassport`
Returns:
  Versionsnummer der lokalen BPD

### getUPDVersion

public final String getUPDVersion()
Description copied from interface: `HBCIPassport`
Gibt die Versionsnummer der lokal gespeicherten UPD zurück. Sind keine UPD lokal vorhanden, so wird "0" zurückgegeben. Siehe dazu auch `HBCIPassport.getBPDVersion()`.

Specified by:
  `getUPDVersion` in interface `HBCIPassport`
Returns:
  Versionsnummer der lokalen UPD

### getInstName

public final String getInstName()
Description copied from interface: `HBCIPassport`
Gibt den Namen des Kreditinstitutes zurück. Diese Information wird aus den BPD ermittelt. Sind keine BPD vorhanden bzw. steht da kein Name drin, so wird `null` zurückgegeben.

Specified by:
  `getInstName` in interface `HBCIPassport`
Returns:
  Name des Kreditinstitutes

### getMaxGVperMsg

public int getMaxGVperMsg()

Specified by:
  `getMaxGVperMsg` in interface `HBCIPassport`

### getMaxMsgSizeKB

public final int getMaxMsgSizeKB()

Specified by:
  `getMaxMsgSizeKB` in interface `HBCIPassport`

### getSuppLangs

public final String[] getSuppLangs()
Description copied from interface: `HBCIPassport`
Gibt eine Liste aller unterstützten Sprachcodes zurück. Die einzelnen Codes stehen dabei für folgende Sprachen:

- 1 - deutsch
- 2 - englisch
- 3 - französisch

Specified by:
  `getSuppLangs` in interface `HBCIPassport`
Returns:
  Liste aller unterstützten Sprachen (1,2,3)

### getSuppVersions

public final String[] getSuppVersions()
Description copied from interface: `HBCIPassport`

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(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(String,org.kapott.hbci.passport.HBCIPassport)`

Specified by:
  `getSuppVersions` in interface `HBCIPassport`
Returns:
  eine Liste aller von der Bank unterstützten HBCI-Versionen

### getDefaultLang

public final String getDefaultLang()
Description copied from interface: `HBCIPassport`
Gibt die Standardsprache des HBCI-Servers zurück. Zu den Bedeutungen der Sprachcodes siehe `HBCIPassport.getSuppLangs()`.

Specified by:
  `getDefaultLang` in interface `HBCIPassport`
Returns:
  Standardsprache (1,2 oder 3)

### canMixSecMethods

public final boolean canMixSecMethods()

Specified by:
  `canMixSecMethods` in interface `HBCIPassportInternal`

### getSuppSecMethods

public final String[][] getSuppSecMethods()
Description copied from interface: `HBCIPassport`

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.

Specified by:
  `getSuppSecMethods` in interface `HBCIPassport`
Returns:
  eine Liste der unterstützten Sicherheitsmechanismen. Jeder Listeneintrag ist wieder ein Stringarray mit zwei Elementen: dem Namen des Mechanismus und der Versionsnummer dieses Mechanismus

### getSuppCompMethods

public final String[][] getSuppCompMethods()

Specified by:
  `getSuppCompMethods` in interface `HBCIPassport`

### getLang

public final String getLang()

Specified by:
  `getLang` in interface `HBCIPassportInternal`

### getSigId

public final Long getSigId()

Specified by:
  `getSigId` in interface `HBCIPassportInternal`

### clearBPD

public final void clearBPD()
Description copied from interface: `HBCIPassport`
Löschen der lokal gespeicherten BPD. Damit kann erzwungen werden, dass die BPD beim nächsten HBCI-Dialog erneut abgeholt werden.

Specified by:
  `clearBPD` in interface `HBCIPassport`

### setBPD

public void setBPD(Properties bpd)

Specified by:
  `setBPD` in interface `HBCIPassportInternal`

### clearUPD

public final void clearUPD()
Description copied from interface: `HBCIPassport`
Löschen der lokal gespeicherten UPD. Damit kann erzwungen werden, dass die UPD beim nächsten HBCI-Dialog erneut abgeholt werden.

Specified by:
  `clearUPD` in interface `HBCIPassport`

### setUPD

public final void setUPD(Properties upd)

Specified by:
  `setUPD` in interface `HBCIPassportInternal`

### setCountry

public final void setCountry(String country)

Specified by:
  `setCountry` in interface `HBCIPassport`

### setBLZ

public final void setBLZ(String blz)

Specified by:
  `setBLZ` in interface `HBCIPassport`

### setHost

public final void setHost(String host)
Description copied from interface: `HBCIPassport`

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 `HBCIPassport.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 `HBCIPassport.setPort(Integer)` benutzt werden, um die Portnummer zu setzen.

Specified by:
  `setHost` in interface `HBCIPassport`
Parameters:
  `host` - die neue Adresse, unter der der HBCI-Server zu erreichen ist

### setPort

public final void setPort(Integer port)
Description copied from interface: `HBCIPassport`
Setzen des TCP-Ports, der für HBCI-Verbindungen benutzt wird. Bei HBCI-PIN/TAN- Passports wird der Port mit `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.

Specified by:
  `setPort` in interface `HBCIPassport`
Parameters:
  `port` - neue TCP-Portnummer, die für ausgehende Verbindungen benutzt werden soll

### setFilterType

public final void setFilterType(String filter)

Specified by:
  `setFilterType` in interface `HBCIPassport`

### setUserId

public final void setUserId(String userid)

Specified by:
  `setUserId` in interface `HBCIPassport`

### setCustomerId

public final void setCustomerId(String customerid)
Description copied from interface: `HBCIPassport`
Setzen der zu verwendenden Kunden-ID. Durch Aufruf dieser Methode wird die Kunden-ID gesetzt, die beim nächsten Ausführen eines HBCI-Dialoges (`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).

Specified by:
  `setCustomerId` in interface `HBCIPassport`
Parameters:
  `customerid` - die zu verwendende Kunden-ID; wird keine customerid angegeben (`null` oder ""), so wird automatisch die User-ID verwendet.
See Also:
  - `HBCIPassport.getCustomerId()`

### setSigId

public final void setSigId(Long sigid)

Specified by:
  `setSigId` in interface `HBCIPassportInternal`

### setSysId

public final void setSysId(String sysid)

Specified by:
  `setSysId` in interface `HBCIPassportInternal`

### setCID

public final void setCID(String cid)

Specified by:
  `setCID` in interface `HBCIPassportInternal`

### incSigId

public void incSigId()

Specified by:
  `incSigId` in interface `HBCIPassportInternal`

### onlyBPDGVs

public final boolean onlyBPDGVs()

Specified by:
  `onlyBPDGVs` in interface `HBCIPassport`

### getInstance

public static HBCIPassport getInstance(String name, Object init)

Erzeugt eine Instanz eines HBCIPassports und gibt diese zurück. Der Typ der erzeugten Passport-Instanz wird durch den Parameter `name` bestimmt. Gültige Werte sind zur Zeit

- DDV
- RDHNew
- RDH (nicht mehr benutzen!)
- PinTan
- SIZRDHFile
- RDHXFile
- Anonymous

Der zusätzliche Parameter `init` gibt ein Objekt an, welches bereits während der Instanziierung des Passport-Objektes in dessen internen `clientData`-Datenstrukturen gespeichert wird (siehe `HBCIPassport.setClientData(String,Object)`). Auf dieses Objekt kann dann mit `getClientData("init")` zugegriffen werden. Ist `init==null`), wo wird `init=name` gesetzt.

Beim Erzeugen eines Passport-Objektes tritt i.d.R. der `Callback` `NEED_PASSPHRASE` auf, um nach dem Passwort für das Einlesen der Schlüsseldatei zu fragen. Von der Callback-Methode eventuell zusätzlich benötigte Daten zu diesem Passport konnten bis zu dieser Stelle noch nicht via `setClientData(...)` gesetzt werden, weil das Passport-Objekt noch gar nicht existierte. Für diesen Zweck gibt es das `init`-Objekt, welches bereits beim Erzeugen des Passport-Objektes (und vor dem Aufrufen eines Callbacks) zu den zusätzlichen Passport-Daten hinzugefügt wird (mit der id "`init`").

Eine beispielhafte (wenn auch nicht sehr praxisnahe) Anwendung dieses Features wird im Quelltext des Tools `AnalyzeReportOfTransactions` gezeigt. Zumindest das Prinzip sollte damit jedoch klar werden.

Parameters:
  `name` - Typ der zu erzeugenden Passport-Instanz
  `init` - Objekt, welches schon während der Passport-Erzeugung via `setClientData("init",init)` zu den Passport-Daten hinzugefügt wird.
Returns:
  Instanz eines HBCIPassports

### getInstance

public static HBCIPassport getInstance(Object init)
Erzeugt eine Instanz eines HBCI-Passports. Der Typ der erzeugten Passport-Instanz wird hierbei dem Wert des HBCI-Parameters `client.passport.default` entnommen. Gültige Werte für diesen HBCI-Parameter sind die gleichen wie beim Aufruf der Methode `getInstance(String)`.

Parameters:
  `init` - (siehe `getInstance(String,Object)`)
Returns:
  Instanz eines HBCI-Passports

### getInstance

public static HBCIPassport getInstance(String name)
Entspricht `getInstance(name,null)`

### getInstance

public static HBCIPassport getInstance()
Entspricht `getInstance((Object)null)`

### close

public void close()
Description copied from interface: `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.

Specified by:
  `close` in interface `HBCIPassport`

### getParamSegmentNames

public Properties getParamSegmentNames()

Specified by:
  `getParamSegmentNames` in interface `HBCIPassportInternal`

### getJobRestrictions

public Properties getJobRestrictions(String specname)

Specified by:
  `getJobRestrictions` in interface `HBCIPassportInternal`

### getJobRestrictions

public Properties getJobRestrictions(String gvname, String version)

Specified by:
  `getJobRestrictions` in interface `HBCIPassportInternal`

### setPersistentData

public void setPersistentData(String id, Object o)

Specified by:
  `setPersistentData` in interface `HBCIPassportInternal`

### getPersistentData

public Object getPersistentData(String id)

Specified by:
  `getPersistentData` in interface `HBCIPassportInternal`

### syncSigId

public void syncSigId()
Description copied from interface: `HBCIPassport`
Synchronisation der Signatur-ID erzwingen (nur für RDH-Passports sinnvoll). Diese Methode kann aufgerufen werden, nachdem ein Passport erzeugt wurde, aber bevor damit ein neues `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.

Specified by:
  `syncSigId` in interface `HBCIPassport`

### syncSysId

public void syncSysId()
Description copied from interface: `HBCIPassport`
Synchronisation der System-ID (nur für RDH-Passports sinnvoll). Diese Methode kann aufgerufen werden, nachdem ein Passport erzeugt wurde, aber bevor damit ein neues `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.

Specified by:
  `syncSysId` in interface `HBCIPassport`

### changePassphrase

public void changePassphrase()
Description copied from interface: `HBCIPassport`
Ändern des Passwortes für die Schlüsseldatei. Der Aufruf dieser Methode bewirkt, dass HBCI4Java via Callback-Mechanismus (`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.

Specified by:
  `changePassphrase` in interface `HBCIPassport`

### setClientData

public final void setClientData(String id, Object o)
Description copied from interface: `HBCIPassport`
Speichern zusätzlicher Daten im Passport-Objekt. Diese Methode ermöglicht das Speichern zusätzlicher Informationen (Objekte), die diesem Passport zugeordnet sind. Die Funktionsweise ist analog zur Verwendung einer Hashtable, es wird also ein Objekt `o` unter dem Identifikations-String `id` gespeichert. Mit `HBCIPassport.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.

Specified by:
  `setClientData` in interface `HBCIPassport`
Parameters:
  `id` - Identifikationsstring für das zu speichernde Objekt
  `o` - zu speicherndes Objekt

### getClientData

public final Object getClientData(String id)
Description copied from interface: `HBCIPassport`
Holen von clientseitig gespeicherten zusätzlichen Daten. Mit dieser Methode können die zusätzlichen Daten, die via `HBCIPassport.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 `getInstance(String,Object)`), kann damit ausgelesen werden (mit `id="init"`).

Specified by:
  `getClientData` in interface `HBCIPassport`
Parameters:
  `id` - Identifikationsstring des auszulesenden Objektes
Returns:
  Objekt, welches mit `HBCIPassport.setClientData(String,Object)` im Passport gespeichert wurde.

### isAnonymous

public boolean isAnonymous()

Specified by:
  `isAnonymous` in interface `HBCIPassportInternal`

### setParamHeader

protected void setParamHeader(String paramHeader)

### getParamHeader

protected String getParamHeader()

### setParentHandlerData

public void setParentHandlerData(IHandlerData handler)

Specified by:
  `setParentHandlerData` in interface `HBCIPassportInternal`

### getParentHandlerData

public IHandlerData getParentHandlerData()

Specified by:
  `getParentHandlerData` in interface `HBCIPassportInternal`

### generateNewUserKeys

public HBCIKey[][] generateNewUserKeys()

Specified by:
  `generateNewUserKeys` in interface `HBCIPassportInternal`

### setProfileMethod

public void setProfileMethod(String method)

Specified by:
  `setProfileMethod` in interface `HBCIPassportInternal`

### setProfileVersion

public void setProfileVersion(String version)

Specified by:
  `setProfileVersion` in interface `HBCIPassportInternal`

### checkForCryptDataSize

public static byte[] checkForCryptDataSize(byte[] buffer, int size)

### onDialogEvent

public void onDialogEvent(DialogEvent event, DialogContext ctx)
Description copied from interface: `HBCIPassportInternal`
Wird bei einem Dialog-Event ausgefuehrt.

Specified by:
  `onDialogEvent` in interface `HBCIPassportInternal`
Parameters:
  `event` - das Event.
  `ctx` - der Dialog-Kontext.
See Also:
  - `HBCIPassportInternal.onDialogEvent(org.kapott.hbci.dialog.DialogEvent, org.kapott.hbci.dialog.DialogContext)`

### getMaxGVSegsPerMsg

public int getMaxGVSegsPerMsg()

Specified by:
  `getMaxGVSegsPerMsg` in interface `HBCIPassportInternal`
See Also:
  - `HBCIPassportInternal.getMaxGVSegsPerMsg()`