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.jarundsignopdf-utilities.jarwurden zusignopdf-lib.jarzusammengefasst. -
Doppelte Klasse
de.signotec.pdf.signer.dto.RectangleDTOentfernt. Stattdessen wirdde.signotec.pdf.utilities.dto.RectangleDTOverwendet. -
Doppelte Klasse
de.signotec.pdf.utilities.enums.SubFilterentfernt. Stattdessen wirdde.signotec.pdf.signer.enums.SubFilterverwendet. -
Klasse
de.signotec.pdf.utilities.dto.SignatureFieldDTO.SignatureStatusentfernt. Stattdessen wirdde.signotec.pdf.signer.enums.FieldStatusverwendet. -
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 vonint[]aufintgeä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.Base64entfernt. Stattdessen wirdorg.bouncycastle.util.encoders.Base64verwendet. -
Klasse
de.signotec.pdf.viewer.DocumentInfoDTOverschoben nachde.signotec.pdf.viewer.dto.DocumentInfoDTO. -
Klasse
de.signotec.pdf.viewer.PrinterDTOverschoben nachde.signotec.pdf.viewer.dto.PrinterDTO. -
Exception
de.signotec.pdf.signer.exceptions.InvalidParameterExceptionundde.signotec.pdf.utilities.exception.InvalidParameterExceptionentfernt. Stattdessen wirdjava.lang.IllegalArgumentExceptionverwendet. -
Exception
de.signotec.pdf.signer.exceptions.NotImplementedExceptionentfernt. Stattdessen wirdjava.lang.UnsupportedOperationExceptionverwendet. -
Exception
de.signotec.pdf.signer.exceptions.NoCapturingExceptionentfernt. Stattdessen wirdjava.lang.IllegalStateExceptionverwendet. -
Exception
de.signotec.pdf.utilities.exception.SignoPdfUtilititesExceptionumbenannt inSignoUtilitiesException. -
Exception
de.signotec.pdf.viewer.exceptions.CouldNotSaveExceptionentfernt. Stattdessen wirdjava.io.IOExceptionverwendet. -
Methoden werfen jetzt auch Java Standard-Exceptions inkl. Unchecked Exceptions:
-
java.lang.IllegalArgumentExceptionbei ungültigen Parametern -
java.lang.IllegalStateExceptionwenn 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.UnsupportedOperationExceptionwenn die Funktion von dem Signaturgerät oder der Fassade (signoPAD-API Java) nicht unterstützt wird -
java.io.IOExceptionbei I/O Fehlern -
java.security.SignatureExceptionbei Verarbeitung von biometrischen Daten und Fehlern in Kryptographie Funktionen -
Methodenparameter vom Typ
java.io.InputStreamundjava.io.OutputStreamwerden 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:
-
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.exekann 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. -
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 wieStringkö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
DestroyableInterface implementieren, mit der Methodedestroy()im Speicher überschrieben/unkenntlich gemacht werden, sobald sie nicht mehr benötigt werden.