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, OpenPDFStringOuvre le document à signer depuis un fichier, un flux ou une chaîne ANSI
OpenPFX, OpenCertStore, OpenCertContextLie un fichier PFX, un certificat de magasin système par nom d'affichage ou un contexte de certificat externe
OpenEd25519, OpenEd25519FromFileLie une paire de clés Ed25519 depuis la mémoire ou des fichiers
OpenCNGKey, OpenCNGKeyHandleLie une clé CNG par fournisseur et nom de clé, ou par handle de clé
OpenExternalDigestSignerDélègue la signature du digest à un callback externe
SelectFieldChoisit le champ de signature par nom complet et page
SetSignaturePropertyDéfinit l'un de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter et spFieldImageOptions
SetAppearanceTextConserve le bloc de texte visible autogénéré écrit dans l'apparence du champ au moment de l'ajout
SetSignatureBoundsPlace le champ à des coordonnées explicites
SetPassthroughProduit une signature passthrough de la longueur exactement indiquée pour une signature externe
SetDocTimeStampBascule la signature vers un horodatage de document
SetDigestAlgorithmSélectionne le digest utilisé pour la signature
SetContentsReserveBytes, SetContentsEstimateRé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é
SetRevocationInfoIncorpore des données de révocation collectées au préalable sous forme DER
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDéclare l'intention de signature, la politique et l'attestation légale
SetDocMDPActive 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
ApplySignatureApplique la signature au document sur place
GetByteRange, GetEstimatedContentsBytesRelit l'entrée du ByteRange et la taille estimée des contenus une fois la révision construite
SetInPlaceMarque la révision comme une mise à jour sur place du document ouvert

Paramètres

IsDocTimeStampTrue 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