Class HBCIPassportRDHNew

  • All Implemented Interfaces:
    java.io.Serializable, HBCIPassport, HBCIPassportInternal

    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
    • Constructor Detail

      • HBCIPassportRDHNew

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

        public HBCIPassportRDHNew​(java.lang.Object initObject)
    • Method Detail

      • getElementValue

        protected java.lang.String getElementValue​(org.w3c.dom.Element root,
                                                   java.lang.String name)
      • getElementProps

        protected java.util.Properties getElementProps​(org.w3c.dom.Element root,
                                                       java.lang.String name)
      • getElementKey

        protected HBCIKey getElementKey​(org.w3c.dom.Element root,
                                        java.lang.String owner,
                                        java.lang.String type,
                                        java.lang.String part)
                                 throws java.lang.Exception
        Throws:
        java.lang.Exception
      • 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()
      • createElement

        protected void createElement​(org.w3c.dom.Document doc,
                                     org.w3c.dom.Element root,
                                     java.lang.String elemName,
                                     java.lang.String elemValue)
      • createPropsElement

        protected void createPropsElement​(org.w3c.dom.Document doc,
                                          org.w3c.dom.Element root,
                                          java.lang.String elemName,
                                          java.util.Properties p)
      • createKeyElement

        protected void createKeyElement​(org.w3c.dom.Document doc,
                                        org.w3c.dom.Element root,
                                        java.lang.String owner,
                                        java.lang.String type,
                                        java.lang.String part,
                                        HBCIKey key)
      • getProfileVersion

        public java.lang.String getProfileVersion()