signoAPI Java - Dokumente signieren

Eine weitere Hauptkomponente ist die Klasse de.signotec.pdf.signer.SignoPdfSigner mit ihren abgeleiteten Klassen de.signotec.pdf.signer.SignoPdfSignerSTPad und de.signotec.pdf.signer.SignoPdfSignerCustom. Es handelt sich hierbei um Klassen, die Methoden für das Auslesen von Informationen über Signaturfelder in PDF-Dokumenten sowie für das Signieren dieser Felder bieten.

SignoPdfSigner

Die Klasse SignoPdfSigner sollte nur verwendet werden, wenn keine Verzahnung mit der zur Verfügung stehenden signoPAD-API gewünscht ist, z. B. weil die Erfassung der Unterschrift auf einem anderen System als das Signieren des Dokuments stattfinden soll (Client/Server-Lösung). Wenn die Erfassung und das Signieren auf demselben System stattfinden soll, sollte aus Sicherheitsgründen immer die Klasse SignoPdfSignerSTPad verwendet werden.

Mit der Methode SignoPdfSigner.signDocument() wird das geladene Dokument digital signiert. Eine Ausgabe des Dokumentes ist nicht nötig, wenn weitere Signaturen erfasst werden sollen. Sie kann mehrfach für ein SignoPdfSigner-Objekt aufgerufen werden.

Verschlüsseln im Signaturgerät

Wenn ein Pad angeschlossen ist, in dem ein öffentlicher Schlüssel für die Verschlüsselung gespeichert ist, können die biometrischen Daten im Gerät verschlüsselt werden. Somit ist auf dem PC kein öffentlicher RSA-Schlüssel nötig und die biometrischen Daten werden bereits vor der Übertragung an den PC verschlüsselt.

Diese Technologie wird momentan nur unter Windows unterstützt.

Java
public void signDocument(String fieldName, SigningDTO signData,
        PrivateKey signingKey, Certificate[] signingCertChain, String bioCertRef,
        String bioData, SignatureImageDTO image, SignatureDeviceDTO deviceData)

Verschlüsseln und Signieren der biometrischen Daten im Signaturgerät

Wenn ein Pad angeschlossen ist, in dem ein öffentlicher Schlüssel für die Verschlüsselung und ein Schlüsselpaar für die Signierung gespeichert sind, können die biometrischen Daten im Gerät verschlüsselt und signiert werden. Somit ist auf dem PC kein öffentlicher RSA-Schlüssel nötig und die biometrischen Daten werden bereits vor der Übertragung an den PC verschlüsselt. Außerdem kann später die Integrität der biometrischen Daten verifiziert werden.

Diese Technologie wird momentan nur unter Windows unterstützt.

Java
public void signDocument(String fieldName, SigningDTO signData,
        PrivateKey signingKey, Certificate[] signingCertChain, String bioCertRef,
        HashType padSignatureType, RSAScheme padSignatureScheme,
        byte[] padSignature, X509Certificate padSigningCert, String bioData,
        SignatureImageDTO image, SignatureDeviceDTO deviceData)

Verschlüsseln im PC

Wenn die biometrischen Daten nicht im Signaturgerät verschlüsselt werden, wird die Verschlüsselung beim Aufruf der signDocument() Methode durchgeführt. Dafür wird auf dem PC ein Zertifikat mit öffentlichem RSA-Schlüssel benötigt. Diese Funktionalität wird von allen Signaturgeräten unterstützt.

Java
public void signDocument(String fieldName, SigningDTO signData,
        PrivateKey signingKey, Certificate[] signingCertChain,
        X509Certificate bioCert, String bioData, SignatureImageDTO image,
        SignatureDeviceDTO deviceData)

SignoPdfSignerSTPad

Die Klasse de.signotec.pdf.signer.SignoPdfSignerSTPad dient zum Erfassen der Unterschrift mit einem signotec Signierpad oder einem Pen Display und benötigt ein Objekt vom Typ de.signotec.stpad.api.SigPadApi. Die Verwendung dieser Klasse ist der empfohlene Weg zur Erfassung einer Unterschrift, da mit ihr alle fortschrittlichen Funktionen der signotec LCD Signature Pads genutzt werden können.

Mit der Methode SignoPdfSignerSTPad.initSignature() wird das Erfassen der Unterschrift gestartet. Die Methode startSignature() des im Konstruktor übergebenen SigPadApi-Objektes wird an dieser Stelle ausgelöst. Ist das angegebene Signaturfeld nicht vorhanden, wird es neu erzeugt. In diesem Fall müssen die Angaben Rectangle und Page des SigningDTO-Objektes gesetzt sein.

Signieren und Verschlüsseln im Signaturgerät

Wenn ein Pad angeschlossen ist, in dem ein privater Schlüssel für die Signierung und ein öffentlicher Schlüssel für die Verschlüsselung gespeichert ist, kann das Gerät für die digitale Signierung des Dokuments und für die Verschlüsselung der biometrischen Daten verwendet werden. Somit sind auf dem PC keinerlei RSA-Schlüssel nötig und die biometrischen Daten werden bereits vor der Übertragung an den PC verschlüsselt.

Die Technologie wird nur unter Windows und nur von signotec Pads bei Verwendung der SigPadFacade unterstützt.

Java
public void initSignature(String fieldName, SigningDTO signData)

Signieren im Signaturgerät, Verschlüsseln im PC

Wenn ein Pad angeschlossen ist, in dem ein privater Schlüssel für die Signierung gespeichert ist, kann das Dokument im Gerät digital signiert werden. Somit ist auf dem PC kein privater RSA-Schlüssel nötig.

Die Technologie wird nur unter Windows und nur von signotec Pads bei Verwendung der SigPadFacade unterstützt.

Java
public void initSignature(String fieldName, SigningDTO signData,
        X509Certificate bioCert)

Signieren im PC, Verschlüsseln im Signaturgerät

Wenn ein Pad angeschlossen ist, in dem ein öffentlicher Schlüssel für die Verschlüsselung gespeichert ist, können die biometrischen Daten im Gerät verschlüsselt werden. Somit ist auf dem PC kein öffentlicher RSA-Schlüssel nötig und die biometrischen Daten werden bereits vor der Übertragung an den PC verschlüsselt.

Die Technologie wird nur unter Windows und nur von signotec Pads bei Verwendung der SigPadFacade unterstützt.

Java
public void initSignature(String fieldName, SigningDTO signData,
        PrivateKey signingKey, Certificate[] signingCertChain)

Signieren und Verschlüsseln im PC

Diese Funktionalität wird von allen Signaturgeräten unterstützt. Um sie verwenden zu können, müssen auf dem PC ein privater Schlüssel für die Signierung und ein öffentlicher Schlüssel für die Verschlüsselung zur Verfügung stehen.

Java
public void initSignature(String fieldName, SigningDTO signData,
        PrivateKey signingKey, Certificate[] signingCertChain,
        X509Certificate bioCert)

SignoPdfSignerCustom

Mit der Klasse SignoPdfSignerCustom können Dokumente mit benutzerdefinierten Signaturen signiert werden. Die Signatur kann bspw. selbst erstellt werden oder durch einen Fernsignatur-Anbieter durchgeführt werden.

Die Verwendung der Klasse ist in zwei Schritte unterteilt:

  1. Das Dokument wird mit Methode prepareDocument() für die Signatur vorbereitet. Das Ergebnis ist ein Hash, der signiert werden muss. Der verwendete Hash-Algorithmus kann durch getDocumentHashAlgorithm() abgefragt werden.

  2. Die Signatur des signierten Hash wird mit Methode signDocument() im vorbereiteten Dokument gespeichert.

Nach jedem Schritt kann das Dokument mit writeDocument() gespeichert werden.

Schritt 2 kann auch ohne die signoAPI Java durchgeführt werden, indem die Signatur in einem reservierten Bereich des Dokuments eingefügt wird. Die Position des Bereiches kann mit Methode getSignatureOffset() bestimmt werden. Die Größe des Bereiches wird mit setSignatureLength() festgelegt.