TPDFlibPFXFile

Security and Signatures

Beskrivning

TPDFlibPFXFile håller signeringsidentiteten som används för att producera en fristående PKCS#7-signatur

Identiteten kan komma från en PFX-fil, en post i ett Windows-systemcertifikatarkiv upplöst via dess enkla visningsnamn, en externt duplicerad PCCERT_CONTEXT, ett Ed25519-nyckelpar, en CNG-nyckel eller en extern digest-callback

Så snart en identitet är bunden producerar SignData CMS-signaturbytes, och uppskatthjäparna dimensionerar /Contents-reserveringen innan signaturen skrivs

SigningWorkbench-demon öppnar en PFX med den här klassen innan identiteten lämnas över till signeringspipelinen

Syntax

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;

Metoder

OpenLäser in en PFX- eller PKCS#12-fil med dess lösenord; UseMachineKeyset väljer maskinens nyckeluppsättning
OpenFromStoreFinner ett certifikat i ett Windows-systemarkiv via dess enkla Subject-visningsnamn och binder dess kontext; det första certifikatet med en användbar privat nyckel vinner
EnumerateStoreFyller anroparens array med en TPDFlibCertificateInfo per arkivcertifikat och returnerar antalet som faktiskt fyllts
OpenFromContextBinder en externt anskaffad PCCERT_CONTEXT; anroparen behåller ägarskapet och måste hålla kontexten giltig tills signeringen är klar
OpenEd25519, OpenEd25519FromFileBinder ett Ed25519-certifikat och seed från minnet eller från filer
OpenCNGKey, OpenCNGKeyHandleBinder en CNG-baserad nyckel via provider och nyckelnamn, eller via ett befintligt nyckelhandle
OpenExternalDigestSignerSignerar via TPDFlibExternalDigestSignEvent-callbacken i stället för en lokal privat nyckel
GetCertificateDERDet bundna certifikatet i DER-form
SetPrivateKeyUITillåter eller undertrycker CryptoAPI-prompten för den privata nyckeln
SetRSAPSSPaddingVäljer RSASSA-PSS-padding för fristående RSA-signaturer; äldre CryptoAPI-nycklar behåller PKCS#1 v1.5
CertificateKeyUsageX.509 key-usage-bitarna packade som två byte, eller -1 när ingen kontext är bunden
EstimateSignatureSize, EstimateCertificateChainSizeÖvre gränser för CMS-utdata och certifikatkedjan
SignDataProducerar den fristående CMS-signaturen för data med valda subfiltret och digestalgoritmen

Anmärkningar

Alla open-metoder returnerar TPDFlibSignerResult, så en misslyckad identitetsbindning kan rapporteras precist

Fasaden når samma identiteter via SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity och SetSignProcessCNGKey

Se även

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile