Class HBCIPassportPinTan

All Implemented Interfaces:
Serializable, HBCIPassport, HBCIPassportInternal
Direct Known Subclasses:
HBCIPassportPinTanMemory

public class HBCIPassportPinTan extends AbstractPinTanPassport

Passport-Klasse für HBCI mit PIN/TAN. Dieses Sicherheitsverfahren wird erst in FinTS 3.0 spezifiziert, von einigen Banken aber schon mit früheren HBCI-Versionen angeboten.

Bei diesem Verfahren werden die Nachrichten auf HBCI-Ebene nicht mit kryptografischen Verfahren signiert oder verschlüsselt. Als "Signatur" werden statt dessen TANs zusammen mit einer PIN verwendet. Die PIN wird dabei in jeder HBCI-Nachricht als Teil der "Signatur" eingefügt, doch nicht alle Nachrichten benötigen eine TAN. Eine TAN wird nur bei der Übermittlung bestimmter Geschäftsvorfälle benötigt. Welche GV das konkret sind, ermittelt HBCI4Java automatisch aus den BPD. Für jeden GV, der eine TAN benötigt, wird diese via Callback abgefragt und in die Nachricht eingefügt.

Die Verschlüsselung der Nachrichten bei der Übertragung erfolgt auf einer höheren Transportschicht. Die Nachrichten werden nämlich nicht direkt via TCP/IP übertragen, sondern in das HTTP-Protokoll eingebettet. Die Verschlüsselung der übertragenen Daten erfolgt dabei auf HTTP-Ebene (via SSL = HTTPS).

Wie auch bei HBCIPassportRDHNew wird eine "Schlüsseldatei" verwendet. In dieser werden allerdings keine kryptografischen Schlüssel abgelegt, sondern lediglich die Zugangsdaten für den HBCI-Server (Hostadresse, Nutzerkennung, usw.) sowie einige zusätzliche Daten (BPD, UPD, zuletzt benutzte HBCI-Version). Diese Datei wird vor dem Abspeichern verschlüsselt. Vor dem Erzeugen bzw. erstmaligen Einlesen wird via Callback nach einem Passwort gefragt, aus welchem der Schlüssel für die Verschlüsselung der Datei berechnet wird

See Also:
  • Constructor Details

    • HBCIPassportPinTan

      public HBCIPassportPinTan(Object init, int dummy)
      ct.
      Parameters:
      init -
      dummy -
    • HBCIPassportPinTan

      public HBCIPassportPinTan(Object initObject)
      ct.
      Parameters:
      initObject -
  • Method Details

    • getFileName

      public String getFileName()
      Gibt den Dateinamen der Schlüsseldatei zurück.
      Returns:
      Dateiname der Schlüsseldatei
    • setFileName

      public void setFileName(String filename)
      Speichert den Dateinamen der Passport-Datei.
      Parameters:
      filename -
    • resetPassphrase

      public void resetPassphrase()
      See Also:
    • create

      protected void create()
      Erzeugt die Passport-Datei wenn noetig. In eine extra Funktion ausgelagert, damit es von abgeleiteten Klassen ueberschrieben werden kann.
    • read

      protected void read()
      Liest die Daten aus der Passport-Datei ein. In eine extra Funktion ausgelagert, damit es von abgeleiteten Klassen ueberschrieben werden kann. Zum Beispiel, um eine andere Art der Persistierung zu implementieren.
    • 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:
    • hash

      public byte[] hash(byte[] data)
      See Also:
    • sign

      public byte[] sign(byte[] data)
      See Also:
    • verify

      public boolean verify(byte[] data, byte[] sig)
      See Also:
    • encrypt

      public byte[][] encrypt(byte[] plainMsg)
      See Also:
    • decrypt

      public byte[] decrypt(byte[] cryptedKey, byte[] cryptedMsg)
      See Also:
    • 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
      Overrides:
      close in class AbstractHBCIPassport
      See Also: