Package org.kapott.hbci.passport

## Class HBCIPassportRDHNew

- java.lang.Object
- - org.kapott.hbci.passport.AbstractHBCIPassport
  - - org.kapott.hbci.passport.AbstractRDHPassport
    - - org.kapott.hbci.passport.AbstractRDHSWPassport
      - - org.kapott.hbci.passport.AbstractRDHSWFileBasedPassport
        - - org.kapott.hbci.passport.HBCIPassportRDHNew

All Implemented Interfaces:
  `java.io.Serializable`, `FileBasedPassport`, `HBCIPassport`, `HBCIPassportInternal`, `InitLetterPassport`

    public class HBCIPassportRDHNew
    extends AbstractRDHSWFileBasedPassport

Passport-Klasse für RDH-Zugänge mit Sicherheitsmedium "Datei". Bei dieser Variante werden sowohl die HBCI-Zugangsdaten wie auch die kryptografischen Schlüssel für die Signierung/Verschlüsselung der HBCI-Nachrichten in einer Datei gespeichert. Der Dateiname kann dabei beliebig vorgegeben werden. Da diese Datei vertrauliche Informationen enthält, wird der Inhalt verschlüsselt abgespeichert. Vor dem Erzeugen bzw. Einlesen wird via Callback-Mechanismus nach einem Passwort gefragt, aus dem der Schlüssel zur Verschlüsselung/Entschlüsselung der Schlüsseldatei berechnet wird.

Wie auch bei `HBCIPassportDDV` werden in der Schlüsseldatei zusätzliche Informationen gespeichert. Dazu gehören u.a. die BPD und die UPD sowie die HBCI-Version, die zuletzt mit diesem Passport benutzt wurde. Im Gegensatz zu den "Hilfsdateien" bei DDV-Passports darf die Schlüsseldatei bei RDH-Passports aber niemals manuell gelöscht werden, da dabei auch die kryptografischen Schlüssel des Kunden verlorengehen. Diese können nicht wieder hergestellt werden, so dass in einem solchen Fall ein manuelles Zurücksetzes des HBCI-Zuganges bei der Bank erfolgen muss!

Die Schlüsseldateien, die HBCI4Java mit dieser Klasse erzeugt und verwaltet, sind nicht kompatibel zu den Schlüsseldateien anderer HBCI-Software (z.B. VR-NetWorld o.ä.). Es ist also nicht möglich, durch Auswahl des Sicherheitsverfahrens "RDH" oder "RDHNew" und Angabe einer schon existierenden Schlüsseldatei, die mit einer anderen HBCI-Software erstellt wurde, diese Schlüsseldatei unter HBCI4Java zu benutzen! Es ist jedoch im Prinzip möglich, mit der "anderen" Software die Kundenschlüssel sperren zu lassen und anschließend mit HBCI4Java eine völlig neue Schlüsseldatei zu erzeugen. Das hat aber zwei Nachteile: Zum einen muss nach dem Neuerzeugen der Schlüsseldatei auch ein neuer INI-Brief erzeugt und an die Bank gesandt werden, um die neuen Schlüssel freischalten zu lassen. Außerdem lässt sich natürlich die HBCI4Java-Schlüsseldatei nicht mehr in der "anderen" HBCI-Software benutzen. Ein Parallel-Betrieb verschiedener HBCI-Softwarelösungen, die alle auf dem RDH-Verfahren mit Sicherheitsmedium "Datei" (oder Diskette) basieren, ist meines Wissens nicht möglich.

Ein weiterer Ausweg aus diesem Problem wäre, eine technische Beschreibung des Formates der Schlüsseldateien der "anderen" HBCI-Software zu besorgen und diese dem Autor zukommen zu lassen, damit eine Passport-Variante implementiert werden kann, die mit Schlüsseldateien dieser "anderen" Software arbeiten kann.

See Also:
  `INILetter`, Serialized Form

### Field Summary

### Fields inherited from class org.kapott.hbci.passport.AbstractRDHSWPassport

`keys`

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

`ROLE_CON, ROLE_ISS, ROLE_WIT`

### Constructor Summary

Constructors
`HBCIPassportRDHNew​(java.lang.Object initObject)` ct.
`HBCIPassportRDHNew​(java.lang.Object init, int dummy)` ct.

### Method Summary

All Methods Instance Methods Concrete Methods
`java.lang.String` `getProfileVersion()`
`void` `resetPassphrase()`
`void` `saveChanges()` Speichern der Änderungen an den Passport-Daten.
`void` `setProfileVersion​(java.lang.String version)`

### Methods inherited from class org.kapott.hbci.passport.AbstractRDHSWFileBasedPassport

`close, getFilename, setFilename`

### Methods inherited from class org.kapott.hbci.passport.AbstractRDHSWPassport

`decrypt, encrypt, generateNewUserKeys, getInstEncKey, getInstEncKeyName, getInstEncKeyNum, getInstEncKeyVersion, getInstSigKey, getInstSigKeyName, getInstSigKeyNum, getInstSigKeyVersion, getKey, getMyEncKeyName, getMyEncKeyNum, getMyEncKeyVersion, getMyPrivateDigKey, getMyPrivateEncKey, getMyPrivateSigKey, getMyPublicDigKey, getMyPublicEncKey, getMyPublicSigKey, getMySigKeyName, getMySigKeyNum, getMySigKeyVersion, hasInstEncKey, hasInstSigKey, hasMyEncKey, hasMySigKey, setInstEncKey, setInstSigKey, setKey, setMyDigKey, setMyEncKey, setMyPrivateDigKey, setMyPrivateEncKey, setMyPrivateSigKey, setMyPublicDigKey, setMyPublicEncKey, setMyPublicSigKey, setMySigKey, sign, verify`

### Methods inherited from class org.kapott.hbci.passport.AbstractRDHPassport

`createMsgKey, getCommInstance, getCryptAlg, getCryptDataSize, getCryptFunction, getCryptKeyType, getCryptMode, getHashAlg, getPassportTypeName, getProfileMethod, getSigAlg, getSigFunction, getSigMode, getSignatureInstance, getSignatureParamSpec, getSysStatus, hash, isSupported, needInstKeys, needUserKeys, needUserSig, onDialogEvent`

### Methods inherited from class org.kapott.hbci.passport.AbstractHBCIPassport

`askForMissingData, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, closeComm, fillAccountInfo, 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, getParamHeader, getParamSegmentNames, getParentHandlerData, getPersistentData, getPort, getSigId, getStoredCustomerId, getSuppCompMethods, getSuppLangs, getSuppSecMethods, getSuppVersions, getSysId, getUPD, getUPDVersion, getUserId, incSigId, isAnonymous, onlyBPDGVs, setBLZ, setBPD, setCID, setClientData, setCountry, setCustomerId, setFilterType, setHBCIVersion, setHost, setParamHeader, setParentHandlerData, setPersistentData, setPort, setProfileMethod, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysId`

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

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

### Constructor Detail

#### HBCIPassportRDHNew

    public HBCIPassportRDHNew​(java.lang.Object init,
                              int dummy)

ct.

Parameters:
  `init` -
  `dummy` -

#### HBCIPassportRDHNew

    public HBCIPassportRDHNew​(java.lang.Object initObject)

ct.

Parameters:
  `initObject` -

### Method Detail

#### saveChanges

    public void saveChanges()

Description copied from interface: `HBCIPassport`
Speichern der Änderungen an den Passport-Daten. Diese Methode sollte eigentlich niemals manuell aus einer Anwendung heraus aufgerufen werden, sondern wird vom HBCI-Kernel benutzt. Das manuelle Aufrufen von `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.

See Also:
  `HBCIPassport.saveChanges()`

#### setProfileVersion

    public void setProfileVersion​(java.lang.String version)

Specified by:
  `setProfileVersion` in interface `HBCIPassportInternal`
Overrides:
  `setProfileVersion` in class `AbstractHBCIPassport`
See Also:
  `AbstractHBCIPassport.setProfileVersion(java.lang.String)`

#### getProfileVersion

    public java.lang.String getProfileVersion()

See Also:
  `HBCIPassportInternal.getProfileVersion()`

#### resetPassphrase

    public void resetPassphrase()

See Also:
  `HBCIPassportInternal.resetPassphrase()`