TPDFlibPFXFile

Security and Signatures

Açıklama

TPDFlibPFXFile, ayrık (detached) PKCS#7 imzası üretmekte kullanılan imzalama kimliğini tutar

Kimlik bir PFX dosyasından, basit görüntü adıyla çözülen bir Windows sistem sertifika deposu girdisinden, harici olarak çoğaltılmış bir PCCERT_CONTEXT'ten, bir Ed25519 anahtar çiftinden, bir CNG anahtarından ya da harici bir özet geri çağrısından gelebilir

Kimlik bağlandığında SignData CMS imza baytlarını üretir, tahmin yardımcıları ise imza yazılmadan önce /Contents rezervasyonunun boyutunu hesaplar

SigningWorkbench demosu, kimliği imzalama hattına vermeden önce bu sınıfla bir PFX açar

Sözdizimi

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;

Yöntemler

OpenBir PFX ya da PKCS#12 dosyasını parolasıyla yükler; UseMachineKeyset makine anahtar kümesini seçer
OpenFromStoreBir sertifikayı Windows sistem deposunda Subject basit görüntü adıyla bulur ve bağlamını bağlar; kullanılabilir özel anahtar taşıyan ilk sertifika kazanır
EnumerateStoreÇağıranın verdiği diziyi depodaki her sertifika için bir TPDFlibCertificateInfo ile doldurur ve gerçekte doldurulan sayıyı döndürür
OpenFromContextHarici elde edilmiş bir PCCERT_CONTEXT bağlar; sahiplik çağırandadır ve bağlam, imzalama bitene kadar geçerli kalmalıdır
OpenEd25519, OpenEd25519FromFileBir Ed25519 sertifikasını ve tohumunu bellekten ya da dosyalardan bağlar
OpenCNGKey, OpenCNGKeyHandleBir CNG destekli anahtarı sağlayıcı ve anahtar adıyla ya da mevcut bir anahtar tanıtıcısıyla bağlar
OpenExternalDigestSignerYerel özel anahtar yerine TPDFlibExternalDigestSignEvent geri çağrısı üzerinden imzalar
GetCertificateDERBağlı sertifikanın DER biçimi
SetPrivateKeyUICryptoAPI özel anahtar istemini sağlar ya da bastırır
SetRSAPSSPaddingRSA ayrık imzaları için RSASSA-PSS dolgusunu seçer; eski CryptoAPI anahtarları PKCS#1 v1.5'te kalır
CertificateKeyUsageİki bayt olarak paketlenmiş X.509 anahtar kullanım bitleri; bağlanmış bir bağlam yoksa -1
EstimateSignatureSize, EstimateCertificateChainSizeCMS çıktısı ve sertifika zinciri için üst sınırlar
SignDataSeçilen alt filtre ve özet algoritmasıyla verinin ayrık CMS imzasını üretir

Açıklamalar

Tüm açık metotları TPDFlibSignerResult döndürür; böylece başarısız bir kimlik bağlaması tam olarak raporlanabilir

Facade aynı kimliklere SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity ve SetSignProcessCNGKey üzerinden ulaşır

Ayrıca bkz

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile