Zertifizierungssignaturen und Feldsperren

HotPDF kann die an Zertifizierungssignaturen und signierte Feldsperren angehängten PDF-Berechtigungsstrukturen erstellen und dann dieselben Strukturen in einem geladenen Dokument inspizieren

Producer-API

procedure AddCertificationSignatureField(
  const FieldName: AnsiString;
  Rectangle: TRect;
  Permission: THPDFDocMDPPermission;
  ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = '';
  const Location: AnsiString = '';
  const ContactName: AnsiString = '';
  Flags: THPDFFormFieldFlags = []);

procedure ConfigureCertificationSignature(
  const FieldName: AnsiString;
  Permission: THPDFDocMDPPermission);

procedure AttachSignatureFieldLock(
  const FieldName: AnsiString;
  Action: THPDFFieldLockAction;
  const Fields: array of AnsiString);

AddCertificationSignatureField kombiniert die Erstellung signierter Platzhalter mit der Zertifizierungskonfiguration

ConfigureCertificationSignature ist für einen bestehenden erstellten signierten Platzhalter und erfordert, dass dieses Feld das erste Feld mit einem Signaturwörterbuch ist

Ein Dokument kann nur eine Zertifizierungssignatur enthalten, daher wird eine zweite Konfigurationsanforderung abgelehnt, bevor der Objektgraph geändert wird

Diese APIs verhandeln PDF-1.5-Ausgabe automatisch

DocMDP-Berechtigungsstufen

WertZertifizierungsberechtigung
dmpNoChangesNach der Zertifizierung sind keine Änderungen erlaubt
dmpFormFillAndSignFormularausfüllung, Vorlageninstanziierung und Signieren sind erlaubt
dmpFormFillSignAndAnnotateDie vorhergehenden Änderungen plus Anmerkungs-Erstellung, -Löschung und -Änderung sind erlaubt

dmpNone ist für Inspektionsergebnisse ohne DocMDP-Transformation reserviert und wird von Producer-Methoden abgelehnt

Feldsperr-Bereiche

WertFields-ArgumentWirkung nach dem Signieren
flaAllMuss leer seinSperrt jedes Formularfeld
flaIncludeEin oder mehrere eindeutige FeldnamenSperrt nur die aufgelisteten Felder
flaExcludeEin oder mehrere eindeutige FeldnamenSperrt jedes Feld außer den aufgelisteten Feldern

AttachSignatureFieldLock lehnt leere Namen, doppelte Namen, ungültige Aktionswerte, eine inkompatible Fields-Form, ein nicht signiertes Zielfeld oder ein Feld, das bereits eine Sperre oder FieldMDP-Richtlinie trägt, ab

Ausgegebene Struktur

Delphi-Beispiel

var
  LockedFields: THPDFAnsiStringArray;
begin
  HotPDF.CurrentPage.AddTextField(
    'InternalCode', '', Rect(40, 80, 220, 108));
  HotPDF.CurrentPage.AddCertificationSignatureField(
    'CertSig', Rect(40, 140, 260, 190),
    dmpFormFillAndSign, 8192,
    'adbe.pkcs7.detached', 'Document approval');
  SetLength(LockedFields, 1);
  LockedFields[0] := 'InternalCode';
  HotPDF.CurrentPage.AttachSignatureFieldLock(
    'CertSig', flaInclude, LockedFields);
end;

Geladene Inspektion

function GetLoadedSignaturePermissions(
  SigIndex: Integer;
  out Info: THPDFSignaturePermissionInfo): Boolean;

Der Reader meldet DocMDP-Berechtigung, Catalog-Verknüpfung, SigFieldLock-Bereich, FieldMDP-Bereich, Feldnamen, strukturelle Gültigkeit und eine Diagnose-Problem-Zeichenfolge

Er verifiziert die erforderlichen direkten und indirekten Objektformen und bestätigt, dass Catalog /Perms /DocMDP auf dasselbe Signaturwörterbuch abzielt

Wenn sowohl SigFieldLock als auch FieldMDP vorhanden sind, müssen ihre Aktionen und Feldlisten übereinstimmen

Der Reader führt begrenzte Wörterbuch- und Array-Inspektion durch und führt kein JavaScript, keine Aktionen und keinen Signaturinhalt aus

Validierungsgrenze

GetLoadedSignaturePermissions meldet nur die Richtlinienstruktur

VerifyLoadedSignature meldet weiterhin kryptografische Integrität separat

Keine der Methoden behauptet, dass jede spätere inkrementelle Revision der gemeldeten DocMDP- oder FieldMDP-Berechtigung gehorcht, da dies eine revisionsweise semantische Änderungsanalyse erfordert

Leistung

Die Producer-Validierung scannt nur erstellte AcroForm-Felder und das kleine Signatur-Referenz-Array, während die geladene Inspektion nur die ausgewählte Signatur, ihre Sperre, ihre Referenzen und den Catalog-Berechtigungs-Eintrag liest

Es wird kein Seiteninhalt, Bildstrom, Font-Programm oder unverwandtes indirektes Objekt dekodiert

Siehe auch