Digitales Signieren von Dateien mit FastReport VCL

2022-12-12

Digitales Signieren von Dateien mit FastReport VCL

Ein elektronischer Dokumentenverkehr ist heute aus unserem Leben nicht mehr wegzudenken. Der Vorteil solcher Dokumente ist natürlich, dass sie sich im Laufe der Zeit nicht verschlechtern, dass sie nicht so leicht verloren gehen, dass sie leicht aufzubewahren sind und dass sie schnell über jede Entfernung übertragen werden können. Aber wie wir alle wissen, tritt nur das Dokument in Kraft, das unterzeichnet worden ist.

Elektronische Signaturen stellen Symbolschlüssel dar, die Einzigartigkeit und Unverwechselbarkeit garantieren, mit denen Sie den Unterzeichner eindeutig feststellen und Dokumente vor Veränderung schützen können.

Wenn Sie jedoch jede generierte PDF-Datei signieren, kann dies sehr zeitaufwändig sein. Und was ist, wenn Sie tausend oder mehr generierte Dateien haben und diese manuell signieren müssen? Natürlich nicht. FastReport VCL kann generierte Dateien mit Ihrer Signatur selbst signieren. Nachstehend betrachten wird ein Beispiel für die Implementierung einer digitalen Signatur.

Aus Gründen der Übersichtlichkeit verwenden wir eine kleine Anwendung, die die Datei in das PDF-Format exportiert und anschließend sie signiert.

procedure TForm1.Button1Click(Sender: TObject);
const
 FR3FileName = 'Signatures.fr3';
var
 PDFExport: TfrxPDFExport;
 Report: TfrxReport;
begin
 Report := TfrxReport.Create(nil);
 try
 Report.LoadFromFile(FR3FileName);
 Report.PrepareReport; // Hochladen und Berichterstattung
 
 PDFExport := TfrxPDFExport.Create(nil);
 try
 PDFExport.Report := Report;
 PDFExport.ShowDialog := False;
 
 
 PDFExport.FileName := ExtractFileName(FR3FileName) + '.pdf';
 Report.Export(PDFExport); // Exportieren des Berichts
 SignExport(PDFExport); // Signieren der Datei
 finally
 PDFExport.Free;
 end;
 finally
 Report.Free;
 end;
end;
 
procedure SignExport(PDFExport: TfrxPDFExport);
const
 CertificatePath = 'JaneDoe.pfx'; // Name unseres Zertifikats
 PasCert = '123'; // Zertifikatspasswort
var
 Lookup: TCertificateStoreLookup;
 FS: TfrxFileSignature;
 FSO: Integer;
begin
 Lookup := TCertificateStoreLookup.Create;
 Lookup.IgnoreCase := true;
 Lookup.CertificatePath := CertificatePath;
 
 FSO := FileSignatureOptions(
 true, // Detached = true Signatur in einer separaten Datei
 false, // Chain = false Zertifikatskette
 false, // OnlyGOST= true GOST-Zertifikat
 true, // DebugLog = true Informationen beim Debuggen
 true); // PFX = false (true) gibt an, dass das Zertifikat in der pfx/p12-Datei gesucht werden soll. 
Es muss ein Dateiname und möglicherweise ein Passwort angegeben werden.
 
 FS := TfrxFileSignature.Create(
 Lookup,
 PDFExport.FileName, // Name der PDF-Datei
 PDFExport.FileName + '.sig', // Name der generierten Signatur
 AnsiString(PasCert),
 FSO);
 
 FS.Sign;
 FS.Free;
 Lookup.Free;
end;

Nachdem wir das Programm geschrieben haben, können wir es nun ausführen.

Fenster des Testprogramms

Klicken Sie nach dem Start auf die Schaltfläche „Exportieren“. Dann erhalten wir eine signierte PDF-Datei mit einer Signaturdatei:

Nach erfolgreichem Signieren des Dokuments erstellte Dateien

Es lohnt sich zu überprüfen, ob die PDF-Datei korrekt signiert ist. Öffnen Sie dazu die Konsole und geben Sie die folgenden Befehle ein:

openssl pkcs12 -in JohnDoe.pfx -out JohnDoe.pem

Anschließend geben Sie ein Passwort ein und starten Sie die Überprüfung mit dem nachfolgenden Befehl: 

openssl smime -verify -binary -inform DER -in Signatures.fr3.pdf.sig -content Signatures.fr3.pdf 
-certfile JohnDoe.pem -nointern -noverify 1> /dev/null

 

Überprüfung der Dokumentsignatur

Dieser Screenshot zeigt an, dass die PDF-Datei die Signaturprüfung bestanden hat und alles geklappt hat.

Auf diese einfache und unkomplizierte Weise haben wir mit FastReport VCL eine korrekt exportierte und signierte PDF-Datei erhalten.

VCL Lazarus FastReport PDF Delphi VCL Lazarus FastReport PDF Delphi
22. April 2025

Umgang mit der TfrShellTreeView-Komponente in FastReport VCL

In diesem Artikel werden wir uns die TfrShellTreeView-Komponente ansehen. Es dient zur Anzeige von Dateisystemelementen und ist teilweise analog zu den Komponenten TDirectoryListBox, TDirectoryOutline und TShellTreeView.
22. April 2025

Umgang mit XML- und JSON-Formaten in FastScript

In diesem Artikel werden wir genauer untersuchen, wie man mit JSON und XML in FastReport arbeitet, welche Eigenschaften und Methoden darin enthalten sind, und Berichte aus dem Code mit Skripten erstellen.
21. April 2025

Funktionsweise von RFID-Tags in FastReport VCL

In diesem Artikel werden wir die Funktionsweise von RFID-Tags mit dem neuen TfrxDeviceCommand-Objekt in FastReport VCL mit der Veröffentlichung 2025.2 untersuchen.
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.