TPDFlibPFXFile

Security and Signatures

Beschrijving

TPDFlibPFXFile bewaart de ondertekeningsidentiteit waarmee een losse PKCS#7-handtekening wordt gemaakt

De identiteit kan komen uit een PFX-bestand, een item in een Windows-systeemcertificaatstore opgelost via zijn eenvoudige weergavenaam, een extern gedupliceerde PCCERT_CONTEXT, een Ed25519-sleutelpaar, een CNG-sleutel of een externe digest-callback

Zodra een identiteit is gebonden, maakt SignData de CMS-handtekeningbytes en meten de schattinghelpers de /Contents-reservering voordat de handtekening wordt weggeschreven

De SigningWorkbench-demo opent een PFX met deze klasse voordat de identiteit naar de ondertekenpijplijn gaat

Syntaxis

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;

Methoden

OpenLaadt een PFX- of PKCS#12-bestand met zijn wachtwoord; UseMachineKeyset kiest de machinesleutelset
OpenFromStoreZoekt een certificaat in een Windows-systeemstore op basis van de Subject simple weergavenaam en bindt diens context; het eerste certificaat met een bruikbare privésleutel wint
EnumerateStoreVult de door de aanroeper geleverde array met één TPDFlibCertificateInfo per store-certificaat en geeft het werkelijk gevulde aantal terug
OpenFromContextBindt een extern verkregen PCCERT_CONTEXT; de aanroeper blijft eigenaar en moet de context geldig houden tot de ondertekening voltooid is
OpenEd25519, OpenEd25519FromFileBindt een Ed25519-certificaat en seed uit geheugen of uit bestanden
OpenCNGKey, OpenCNGKeyHandleBindt een CNG-ondersteunde sleutel op provider en sleutelnaam, of op een bestaand sleutelhandle
OpenExternalDigestSignerOndertekent via de TPDFlibExternalDigestSignEvent-callback in plaats van een lokale privésleutel
GetCertificateDERHet gebonden certificaat in DER-vorm
SetPrivateKeyUIStaat de CryptoAPI-privésleutelprompt toe of onderdrukt die
SetRSAPSSPaddingKiest RSASSA-PSS-padding voor losse RSA-handtekeningen; oudere CryptoAPI-sleutels blijven bij PKCS#1 v1.5
CertificateKeyUsageDe X.509 key-usage-bits verpakt als twee bytes, of -1 wanneer er geen context is gebonden
EstimateSignatureSize, EstimateCertificateChainSizeBovengrenzen voor de CMS-uitvoer en de certificaatketen
SignDataMaakt de losse CMS-handtekening voor de data met de gekozen subfilter en digest-algoritme

Opmerkingen

Alle open-methoden geven TPDFlibSignerResult terug, zodat een mislukte identiteitsbinding precies kan worden gemeld

De façade bereikt dezelfde identiteiten via SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity en SetSignProcessCNGKey

Zie ook

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile