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
| Wert | Zertifizierungsberechtigung |
|---|---|
dmpNoChanges | Nach der Zertifizierung sind keine Änderungen erlaubt |
dmpFormFillAndSign | Formularausfüllung, Vorlageninstanziierung und Signieren sind erlaubt |
dmpFormFillSignAndAnnotate | Die 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
| Wert | Fields-Argument | Wirkung nach dem Signieren |
|---|---|---|
flaAll | Muss leer sein | Sperrt jedes Formularfeld |
flaInclude | Ein oder mehrere eindeutige Feldnamen | Sperrt nur die aufgelisteten Felder |
flaExclude | Ein oder mehrere eindeutige Feldnamen | Sperrt 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
- Die Zertifizierungssignatur trägt ein direktes
/Reference-Array, das ein direktes DocMDP-Signatur-Referenzwörterbuch und direkte Transformationsparameter enthält - Der Catalog-
/Perms /DocMDP-Eintrag zeigt auf dasselbe indirekte Signaturwörterbuch - Der Feld-
/Lock-Eintrag zeigt auf ein indirektes/Type /SigFieldLock-Wörterbuch - Der Sperrbereich wird in eine direkte FieldMDP-Signatur-Referenz kopiert und sein
/Data-Eintrag zeigt auf die indirekte Catalog-Wurzel - Das Signaturwörterbuch markiert Transformationsreferenzen über
/V 1als kritisch
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