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

Produzenten-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

Feldsperren-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;

Inspektion geladener Dokumente

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

Sie prüft erforderliche direkte und indirekte Formen, Catalog-/Perms-Ziele, Transform-Versionen, doppelte Verweise, UR-gegenüber-UR3-Einschränkungen und den optionalen DocMDP-Standard /P 2

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

Abdeckung der Standard-Transforms

MethodeReported policy
DocMDPZertifizierungsberechtigung und passendes Catalog-Ziel /Perms /DocMDP
URDokument-, Anmerkungs-, Formular-, Signatur- und eingebettete-Datei-Rechte plus Legacy-Quelle /UR oder Bytebereich /UR3
FieldMDPFeldsperren-Umfang All, Include oder Exclude und übernommene SigFieldLock-Vereinbarung
IdentityZyklussichere transitive Objektnummern, die von der erforderlichen indirekten /Data-Wurzel erreichbar sind

Unbekannte Methodennamen bleiben in UnknownTransformMethods erhalten und machen die Berechtigungsstruktur ungültig, damit ein kritischer Transform nicht übersehen werden kann

Validierungsgrenze

GetLoadedSignaturePermissions meldet nur die Richtlinienstruktur

VerifyLoadedSignature meldet weiterhin kryptografische Integrität separat

AnalyzeLoadedSignatureRevisions führt eine semantische Änderungsanalyse Revision für Revision für ByteRange-DocMDP-, FieldMDP-, UR3- und Identity-Policies durch; veraltete UR-Objektdigest-Signaturen ohne ByteRange bleiben der Strukturinspektion zugänglich

SaveIncrementalUpdateAuthenticated macht aus Inspektion Durchsetzung: Sie liest Policies aus ihren signierten Snapshots, authentifiziert die steuernden Signaturen, validiert alle späteren Revisionen und veröffentlicht erst nach erfolgreichem Bestehen jeder Policy per atomarem Austausch

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