signoAPI Java - Allgemeine Hinweise

Major Upgrades

Dieses Kapitel enthält wichtige Informationen zum Update zwischen Major Versionen der signoAPI Java. Es beschreibt die Änderungen, durch die ein Projekt nach dem Update der API nicht mehr kompilierbar ist.

Version 3.x auf 4.x

  • Veraltete (@Deprecated) Methoden und Klassen entfernt. Entfernen Sie deren Verwendung vor dem Upgrade der API.

  • Minimale Java Version erhöht von JavaSE 7 auf JavaSE 8.

  • Die Bibliotheken signopdf-viewer.jar, signopdf-signer.jar und signopdf-utilities.jar wurden zu signopdf-lib.jar zusammengefasst.

  • Doppelte Klasse de.signotec.pdf.signer.dto.RectangleDTO entfernt. Stattdessen wird de.signotec.pdf.utilities.dto.RectangleDTO verwendet.

  • Doppelte Klasse de.signotec.pdf.utilities.enums.SubFilter entfernt. Stattdessen wird de.signotec.pdf.signer.enums.SubFilter verwendet.

  • Klasse de.signotec.pdf.utilities.dto.SignatureFieldDTO.SignatureStatus entfernt. Stattdessen wird de.signotec.pdf.signer.enums.FieldStatus verwendet.

  • Bibliothek iText wurde durch Apache PDFBox ersetzt.

  • Feature Multi-Signatur-Fenster (nur signotec Alpha Pads) wurde entfernt.

  • Die Methoden SignoPdfSignerSTPad.initSignature() mit Array-Parametern wurden entfernt. Wechseln Sie auf die Methoden ohne Array-Parameter.

  • Der Rückgabewert der Methoden SignoPdfSignerSTPad.confirmSignature() wurde von int[] auf int geändert.

Version 2.x auf 3.x

Enthält Major Update der signoPAD-API von 8.x auf 9.x. Siehe Kapitel „Major Upgrades" in Datei „signoPAD-API Java Dokumentation DE.pdf" im Auslieferungspaket.

  • Veraltete (@Deprecated) Methoden und Klassen entfernt. Entfernen Sie deren Verwendung vor dem Upgrade der API.

  • Minimale Java Version erhöht von JavaSE 6 auf JavaSE 7.

  • Klasse de.signotec.pdf.signer.Base64 entfernt. Stattdessen wird org.bouncycastle.util.encoders.Base64 verwendet.

  • Klasse de.signotec.pdf.viewer.DocumentInfoDTO verschoben nach de.signotec.pdf.viewer.dto.DocumentInfoDTO.

  • Klasse de.signotec.pdf.viewer.PrinterDTO verschoben nach de.signotec.pdf.viewer.dto.PrinterDTO.

  • Exception de.signotec.pdf.signer.exceptions.InvalidParameterException und de.signotec.pdf.utilities.exception.InvalidParameterException entfernt. Stattdessen wird java.lang.IllegalArgumentException verwendet.

  • Exception de.signotec.pdf.signer.exceptions.NotImplementedException entfernt. Stattdessen wird java.lang.UnsupportedOperationException verwendet.

  • Exception de.signotec.pdf.signer.exceptions.NoCapturingException entfernt. Stattdessen wird java.lang.IllegalStateException verwendet.

  • Exception de.signotec.pdf.utilities.exception.SignoPdfUtilititesException umbenannt in SignoUtilitiesException.

  • Exception de.signotec.pdf.viewer.exceptions.CouldNotSaveException entfernt. Stattdessen wird java.io.IOException verwendet.

  • Methoden werfen jetzt auch Java Standard-Exceptions inkl. Unchecked Exceptions:

  • java.lang.IllegalArgumentException bei ungültigen Parametern

  • java.lang.IllegalStateException wenn eine Funktion im aktuellen Status nicht ausgeführt werden kann (z.B. wenn ein Unterschriftenprozess beendet werden soll, der zuvor nicht gestartet wurde)

  • java.lang.UnsupportedOperationException wenn die Funktion von dem Signaturgerät oder der Fassade (signoPAD-API Java) nicht unterstützt wird

  • java.io.IOException bei I/O Fehlern

  • java.security.SignatureException bei Verarbeitung von biometrischen Daten und Fehlern in Kryptographie Funktionen

  • Methodenparameter vom Typ java.io.InputStream und java.io.OutputStream werden von der API nicht mehr geschlossen.

Lizenzschlüssel

Die signoAPI Java wird im unregistriertem Zustand ausgeliefert. In diesem Zustand sind einige Funktionen mit einem Demostempel versehen (z.B. Wasserzeichen „signotec Demo" in PDFs). Um den vollen Funktionsumfang der signoAPI nutzen zu können, ist es notwendig einen Lizenzschlüssel bei der signotec GmbH zu erwerben.

Es existieren dabei zwei unterschiedliche Arten von Lizenzschlüsseln:

  1. Hardwaregebundene Einzelplatzlizenzen: Bei der Installation wird ein Autorisationsschlüssel (Software Code) generiert. Dieser ist an bestimmte Komponenten der Hardware gebunden und ist immer nur für einen Rechner gültig (Einzelplatz). Mittels des mitgelieferten Programms license-tool/license-tool.exe kann nach Erwerb einer Einzelplatzlizenz ein Lizenzschlüssel beantragt und eingetragen werden. Ist ein gültiger Lizenzschlüssel vorhanden, so wird dieser in der Registry des Computers hinterlegt und alle Komponenten der signoAPI Java sind damit vom Demostempel befreit.

  2. Hardwareunabhängige Unternehmenslizenzen: Diese sind nicht an einen Rechner/Arbeitsplatz gebunden und der Schlüssel wird nicht in der Registry hinterlegt. Stattdessen muss der Lizenzschlüssel vor Verwendung der Komponente per Methode SignoViewer.setSerialKey(), SignoPdfSigner.setSerialKey() bzw. SignoPdfUtils.setSerialKey() gesetzt werden.

Einschränkungen der Demo-Version

Bei Verwendung der signoAPI Java als Demo-Version wird auf jeder Seite eines geladenen Dokumentes ein Wasserzeichen eingeblendet, das auf den Demo-Modus hinweist. Außerdem ist das Laden und Anzeigen von Dokumenten, die durch ein Kennwort geschützt sind, in der Demo-Version nicht möglich.

Wird ein Dokument mit der Demo-Version des signoAPI Java signiert, wird ein entsprechendes Wasserzeichen hinter der Unterschrift eingebettet.

Wird mit der Demo-Version der signopdf-utilities Bibliothek ein Unterschriftenfeld mit der Methode addSignatureField() erzeugt, wird an den Feldnamen _signotec_demo angehängt.

Keystores und Zertifikate

Die mitgelieferten Keystores signing.ks und encryption.ks sowie das Zertifikat encryption.cer sind nur zu Demonstrationszwecken enthalten. Sie haben alle das Passwort password.

Das Erzeugen eigener Keystores und Zertifikate ist mit dem Java-Keytool möglich.

Sicherheitskritische Daten

Passwörter und private Schlüssel gehören zu den sicherheitskritischen Daten und müssen mit besonderer Sorgfalt behandelt werden. Bei Verwendung dieser API sollten Sie neben den gängigen Sicherheitsstandards folgendes beachten:

  • Für Passwörter nur überschreibbare Datenstrukturen verwenden. Die signoAPI Java verwendet den Datentyp char[]. Die Daten eines unveränderlichen Typs wie String können nicht gezielt überschrieben bzw. gelöscht werden und verbleiben u.U. sehr lange im Arbeitsspeicher.

  • Passwörter unmittelbar nach Verwendung löschen. Um das Zeitfenster für das Auslesen von Passwörtern aus dem Arbeitsspeicher so kurz wie möglich zu halten, sollten sie sofort nach Verwendung überschrieben werden. Die signoAPI Java bietet dafür eine entsprechende Methode.

  • Private Schlüssel unmittelbar nach Verwendung löschen. Seit Java 8 sollten Schlüssel, die das Destroyable Interface implementieren, mit der Methode destroy() im Speicher überschrieben/unkenntlich gemacht werden, sobald sie nicht mehr benötigt werden.