Signatures de certification et verrous de champs

HotPDF peut créer les structures de permission PDF attachées aux signatures de certification et aux verrous de champs signés, puis inspecter les mêmes structures dans un document chargé

API producteur

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 combine la création d'espace réservé signé avec la configuration de certification

ConfigureCertificationSignature est pour un espace réservé signé créé existant et nécessite que ce champ soit le premier champ portant un dictionnaire de signature

Un document ne peut contenir qu'une seule signature de certification, donc une seconde demande de configuration est rejetée avant que le graphe d'objets ne soit modifié

Ces API négocient automatiquement la sortie PDF 1.5

Niveaux de permission DocMDP

Value Certification permission
dmpNoChangesAucune modification n'est permise après certification
dmpFormFillAndSignLe remplissage de formulaire, l'instanciation de modèle et la signature sont permis
dmpFormFillSignAndAnnotateLes modifications précédentes plus la création, suppression et modification d'annotation sont permises

dmpNone est réservé aux résultats d'inspection sans transformation DocMDP et est rejeté par les méthodes producteur

Portées de verrouillage de champ

Valeur Paramètre Fields Effet après signature
flaAllDoit être videVerrouille chaque champ de formulaire
flaIncludeUn ou plusieurs noms de champs uniquesVerrouille uniquement les champs listés
flaExcludeUn ou plusieurs noms de champs uniquesVerrouille chaque champ sauf les champs listés

AttachSignatureFieldLock rejette les noms vides, noms dupliqués, valeurs d'action invalides, une forme Fields incompatible, un champ cible non signé ou un champ portant déjà un verrou ou une politique FieldMDP

Structure émise

Exemple Delphi

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;

Inspection chargée

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

Le lecteur rapporte la permission DocMDP, la liaison Catalog, la portée SigFieldLock, la portée FieldMDP, les noms de champs, la validité structurelle et une chaîne de problème de diagnostic

La méthode vérifie les formes directes et indirectes requises, les cibles /Perms du Catalogue, les versions de transformation, les références dupliquées, les restrictions UR contre UR3, et la valeur par défaut optionnelle DocMDP /P 2

Si SigFieldLock et FieldMDP sont tous deux présents, leurs actions et listes de champs doivent concorder

Le lecteur effectue une inspection bornée des dictionnaires et tableaux et n'exécute pas JavaScript, actions ou contenu de signature

Limite de validation

MéthodePolitique rapportée
DocMDPPermission de certification et cible /Perms /DocMDP du Catalogue correspondante
URDroits de document, d’annotation, de formulaire, de signature et de fichier embarqué plus la source historique /UR ou à plage d’octets /UR3
FieldMDPPortée de verrou de champs All, Include ou Exclude et accord SigFieldLock copié
IdentityNuméros d’objets transitifs sûrs face aux cycles, atteignables depuis la racine indirecte /Data exigée

Les noms de méthodes inconnus sont retenus dans UnknownTransformMethods et rendent la structure de permission invalide afin qu’une transformation critique ne puisse être négligée

Performance

GetLoadedSignaturePermissions ne rapporte que la structure de politique

VerifyLoadedSignature continue de rapporter séparément l’intégrité cryptographique

AnalyzeLoadedSignatureRevisions effectue une analyse sémantique des changements révision par révision pour les politiques DocMDP à plage d’octets, FieldMDP, UR3 et Identity, tandis que les signatures historiques UR à digeste d’objet hors plage d’octets restent accessibles à l’inspection structurelle

SaveIncrementalUpdateAuthenticated transforme l’inspection en application de la politique : il lit les politiques depuis leurs instantanés signés, authentifie les signatures de contrôle, valide toutes les révisions ultérieures et ne publie par remplacement atomique qu’après le succès de chaque politique

Voir aussi

La validation côté producteur ne scanne que les champs AcroForm créés et le petit tableau de références de signature, tandis que l’inspection d’un document chargé ne lit que la signature sélectionnée, son verrou, ses références et l’entrée de permission du Catalogue

Aucun contenu de page, flux d’image, programme de police ou objet indirect sans rapport n’est décodé

Voir aussi