TPDFlibPFXFile

Security and Signatures

Description

TPDFlibPFXFile détient l'identité de signature utilisée pour produire une signature détachée PKCS#7

L'identité peut provenir d'un fichier PFX, d'une entrée de magasin de certificats système Windows résolue par son nom d'affichage simple, d'un PCCERT_CONTEXT dupliqué de l'extérieur, d'une paire de clés Ed25519, d'une clé CNG ou d'un callback de digest externe

Une fois une identité liée, SignData produit les octets de la signature CMS et les helpers d'estimation dimensionnent la réservation de /Contents avant l'écriture de la signature

La démo SigningWorkbench ouvre un PFX avec cette classe avant de remettre l'identité au pipeline de signature

Syntaxe

Delphi

TPDFlibPFXFile = Class
  Public
    Destructor Destroy; Override;
    Function Open(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
    Function OpenFromStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
    Function EnumerateStore(Const StoreName: WideString; UseMachineStore: Boolean;
      Var Infos: Array Of TPDFlibCertificateInfo): Integer;
    Function OpenFromContext(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;
    Function GetCertificateDER: AnsiString;
    Procedure SetPrivateKeyUI(AllowUI: Boolean);
    Procedure SetRSAPSSPadding(Enable: Boolean);
    Function CertificateKeyUsage: Integer;
    Function EstimateSignatureSize(Const Data, SubFilter: AnsiString;
      DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): Integer;
    Function EstimateCertificateChainSize: Integer;
    Function SignData(Const Data, SubFilter: AnsiString; DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): AnsiString;
  End;

Méthodes

OpenCharge un fichier PFX ou PKCS#12 avec son mot de passe ; UseMachineKeyset sélectionne le jeu de clés de la machine
OpenFromStoreRepère un certificat dans un magasin système Windows par le nom d'affichage simple du Subject et lie son contexte ; le premier certificat portant une clé privée utilisable gagne
EnumerateStoreRemplit le tableau fourni par l'appelant avec un TPDFlibCertificateInfo par certificat du magasin et renvoie le nombre réellement rempli
OpenFromContextLie un PCCERT_CONTEXT obtenu de l'extérieur ; l'appelant conserve la propriété et doit garder le contexte valide jusqu'à la fin de la signature
OpenEd25519, OpenEd25519FromFileLie un certificat et une graine Ed25519 depuis la mémoire ou des fichiers
OpenCNGKey, OpenCNGKeyHandleLie une clé adossée à CNG par fournisseur et nom de clé, ou par un handle de clé existant
OpenExternalDigestSignerSigne via le callback TPDFlibExternalDigestSignEvent au lieu d'une clé privée locale
GetCertificateDERLe certificat lié sous forme DER
SetPrivateKeyUIAutorise ou supprime l'invite de clé privée CryptoAPI
SetRSAPSSPaddingSélectionne le remplissage RSASSA-PSS pour les signatures RSA détachées ; les clés CryptoAPI historiques conservent PKCS#1 v1.5
CertificateKeyUsageLes bits de key usage X.509 empaquetés sur deux octets, ou -1 quand aucun contexte n'est lié
EstimateSignatureSize, EstimateCertificateChainSizeBornes supérieures pour la sortie CMS et la chaîne de certificats
SignDataProduit la signature CMS détachée des données avec le sous-filtre et l'algorithme de digest sélectionnés

Remarques

Toutes les méthodes open renvoient TPDFlibSignerResult, un échec de liaison d'identité peut donc être signalé précisément

La façade atteint les mêmes identités via SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity et SetSignProcessCNGKey

Voir aussi

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile