TPDFlibPFXFile

Security and Signatures

Descrizione

TPDFlibPFXFile contiene l'identità di firma usata per produrre una firma detached PKCS#7

L'identità può venire da un file PFX, da una voce di archivio certificati di sistema Windows risolta tramite il suo nome visualizzato semplice, da un PCCERT_CONTEXT duplicato esternamente, da una coppia di chiavi Ed25519, da una chiave CNG o da un callback di digest esterno

Una volta agganciata un'identità, SignData produce i byte della firma CMS e gli helper di stima dimensionano la riserva di /Contents prima che la firma venga scritta

La demo SigningWorkbench apre un PFX con questa classe prima di passare l'identità alla pipeline di firma

Sintassi

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;

Metodi

OpenCarica un file PFX o PKCS#12 con la sua password; UseMachineKeyset seleziona il keyset della macchina
OpenFromStoreTrova un certificato in un archivio di sistema Windows tramite il nome visualizzato semplice del Subject e aggancia il suo contesto; vince il primo certificato che porta una chiave privata utilizzabile
EnumerateStoreRiempie l'array fornito da chi chiama con un TPDFlibCertificateInfo per certificato dell'archivio e restituisce il numero effettivamente riempito
OpenFromContextAggancia un PCCERT_CONTEXT ottenuto esternamente; chi chiama mantiene la proprietà e deve tenere il contesto valido fino al completamento della firma
OpenEd25519, OpenEd25519FromFileAggancia un certificato e un seed Ed25519 da memoria o da file
OpenCNGKey, OpenCNGKeyHandleAggancia una chiave basata su CNG per provider e nome chiave, o per un handle di chiave esistente
OpenExternalDigestSignerFirma tramite il callback TPDFlibExternalDigestSignEvent invece che con una chiave privata locale
GetCertificateDERIl certificato agganciato in forma DER
SetPrivateKeyUIConsente o sopprime il prompt della chiave privata CryptoAPI
SetRSAPSSPaddingSeleziona il padding RSASSA-PSS per firme RSA detached; le chiavi CryptoAPI storiche mantengono PKCS#1 v1.5
CertificateKeyUsageI bit di key usage X.509 impacchettati in due byte, o -1 quando nessun contesto è agganciato
EstimateSignatureSize, EstimateCertificateChainSizeLimiti superiori per l'output CMS e la catena di certificati
SignDataProduce la firma CMS detached dei dati con il sub-filter e l'algoritmo di digest selezionati

Note

Tutti i metodi open restituiscono TPDFlibSignerResult, così un aggancio d'identità fallito può essere segnalato con precisione

La facade raggiunge le stesse identità tramite SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity e SetSignProcessCNGKey

Vedere anche

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile