TPDFlibSigner
Security and Signatures
Description
TPDFlibSigner est le moteur de signature autonome qui associe une cible TPDFlibSignDoc à une identité TPDFlibPFXFile et écrit la signature achevée comme une nouvelle révision incrémentale
Ouvrez le PDF depuis un fichier, un flux ou une chaîne, liez l'identité avec l'une des méthodes open, sélectionnez le champ cible, configurez la signature, puis terminez avec AppendToFile, AppendToStream ou ApplySignature
La classe couvre tout l'éventail des fonctions de signature : choix du digest, réservation et estimation du contenu, informations de révocation, types d'engagement, politiques de signature, attestations légales, niveaux de certification DocMDP, verrous de champs, horodatages de document et signatures passthrough de longueur fixe
La façade expose le même pipeline via les fonctions SignProcess documentées ; utilisez cette classe directement quand le workflow de signature doit s'intégrer dans un écrivain de révisions personnalisé plus vaste
Syntaxe
Delphi
TPDFlibSigner = Class
Public
Constructor Create;
Destructor Destroy; Override;
Function OpenPDF(Const FileName: WideString; Const Password: WideString): TPDFlibSignerResult;
Function OpenPDFStream(SourceStream: TStream; Const Password: WideString): TPDFlibSignerResult;
Function OpenPDFString(Const SourceString: AnsiString; Const Password: WideString): TPDFlibSignerResult;
Function OpenPFX(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
Function OpenCertStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
Function OpenCertContext(CertContext: Pointer): TPDFlibSignerResult;
Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
Function OpenCNGKey(Const CertificateDER: AnsiString;
Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
Procedure SetPrivateKeyUI(AllowUI: Boolean);
Procedure SetRSAPSSPadding(Enable: Boolean);
Procedure SetLegalAttestation(Const Value: WideString);
Procedure SelectField(Const FieldName: WideString; FieldPage: Integer);
Procedure SetSignatureProperty(SignatureProperty: TPDFlibSignatureProperty; Const NewValue: AnsiString);
Procedure SetAppearanceText(Const Text: WideString; FontSize, FontRed, FontGreen, FontBlue: Double);
Procedure SetSignatureBounds(Left, Top, Width, Height: Double);
Procedure SetPassthrough(SignatureLength: Integer);
Procedure SetDocTimeStamp(SignatureLength: Integer);
Procedure SetDigestAlgorithm(Algorithm: TPDFlibDigestAlgorithm);
Procedure SetContentsReserveBytes(ExtraBytes: Integer);
Procedure SetContentsEstimate(ChainBytes, CRLBytes, OCSPBytes, TimeStampBytes, SafetyMarginPercent: Integer);
Procedure SetRevocationInfo(Const RevocationInfoDER: AnsiString);
Procedure SetCommitmentType(CommitmentType: Integer);
Procedure SetDocMDP(Level: Integer);
Function SetFieldLock(Const Action: AnsiString; Const Fields: TArray): Boolean;
Procedure SetSignaturePolicy(Const PolicyOID: AnsiString; Const PolicyHashBytes: AnsiString; HashAlgorithm: TPDFlibDigestAlgorithm);
Function AppendToFile(Const FileName: WideString): Boolean;
Function AppendToStream(TargetStream: TStream): Boolean;
Function ApplySignature: Boolean;
Function GetByteRange(Index: Integer): Int64;
Function GetEstimatedContentsBytes: Integer;
Procedure SetInPlace;
Property IsDocTimeStamp: Boolean Read FIsDocTimeStamp;
End; Méthodes
| OpenPDF, OpenPDFStream, OpenPDFString | Ouvre le document à signer depuis un fichier, un flux ou une chaîne ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Lie un fichier PFX, un certificat de magasin système par nom d'affichage ou un contexte de certificat externe |
| OpenEd25519, OpenEd25519FromFile | Lie une paire de clés Ed25519 depuis la mémoire ou des fichiers |
| OpenCNGKey, OpenCNGKeyHandle | Lie une clé CNG par fournisseur et nom de clé, ou par handle de clé |
| OpenExternalDigestSigner | Délègue la signature du digest à un callback externe |
| SelectField | Choisit le champ de signature par nom complet et page |
| SetSignatureProperty | Définit l'un de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter et spFieldImageOptions |
| SetAppearanceText | Conserve le bloc de texte visible autogénéré écrit dans l'apparence du champ au moment de l'ajout |
| SetSignatureBounds | Place le champ à des coordonnées explicites |
| SetPassthrough | Produit une signature passthrough de la longueur exactement indiquée pour une signature externe |
| SetDocTimeStamp | Bascule la signature vers un horodatage de document |
| SetDigestAlgorithm | Sélectionne le digest utilisé pour la signature |
| SetContentsReserveBytes, SetContentsEstimate | Réserve des octets supplémentaires ou dimensionne la réservation à partir des estimations de chaîne, CRL, OCSP et horodatage plus une marge de sécurité |
| SetRevocationInfo | Incorpore des données de révocation collectées au préalable sous forme DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Déclare l'intention de signature, la politique et l'attestation légale |
| SetDocMDP | Active une signature de certification au niveau DocMDP 1, 2 ou 3 ; doit être appelé avant SelectField |
| SetFieldLock | Écrit un dictionnaire de verrou de champ avec une action et une liste de noms de champs |
| AppendToFile, AppendToStream | Écrit la révision signée dans un nouveau fichier ou flux |
| ApplySignature | Applique la signature au document sur place |
| GetByteRange, GetEstimatedContentsBytes | Relit l'entrée du ByteRange et la taille estimée des contenus une fois la révision construite |
| SetInPlace | Marque la révision comme une mise à jour sur place du document ouvert |
Paramètres
| IsDocTimeStamp | True quand le signataire produit un horodatage de document |
|---|
Remarques
Toutes les méthodes open renvoient TPDFlibSignerResult
Les niveaux DocMDP correspondent à la valeur P de transformation de l'ISO 32000 : 1 aucun changement, 2 remplissage de formulaires, 3 annotations ; quand elle est non nulle, le bit AppendOnly de /SigFlags de l'AcroForm est posé afin que les visionneuses fassent respecter la certification
Voir aussi
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP