PDFium Delphi Component Docs

FPdfCryptoWin birimi

Unit: FPdfCryptoWin
PAdES imzalama, ayrık CMS doğrulaması ve yalnızca önbellek sistem sertifika güveni değerlendirmesi için Windows Cryptography API arka ucu

Syntax

function WinCryptoAvailable: Boolean;
function WinCmsVerificationAvailable: Boolean;
function VerifyWinDetachedCms(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal): TWinCmsVerifyResult;
function VerifyWinDetachedCmsEx(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function VerifyWinAttachedCmsEx(const CmsDer: TBytes; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function ResolveWinSigner(const Options: TPadesSignerOptions): TPadesResolvedSigner;
function TestBuildWinCmsTrust(SignerCert: Pointer;
  const Options: TWinCmsVerifyOptions; GetChain, VerifyPolicy,
  FreeChain: Pointer): TWinCmsVerifyResult; // PDFIUMPAS_CRYPTO_TESTS only

Description

FPdfCryptoWin, FPdfCrypto'nun kullandığı Windows'a özgü kripto arka ucudur. CryptoAPI üzerinden geçerli kullanıcı ve yerel makine sertifika depolarını açar, istenen parmak iziyle eşleşen sertifikayı bulur, ilişkili NCRYPT özel anahtar tanıtıcısını edinir ve ICmsSigner imzası CNG üzerinden atan bir TPadesResolvedSigner döndürür

WinCryptoAvailable, Crypt32 / ncrypt bağlamalarının çözülebildiğini gösteren hafif denetimi gerçekleştirir; böylece çağıranlar başlangıçta bu makinede PAdES imzalamanın mümkün olup olmayacağına karar verebilir

VerifyWinDetachedCms, ayrık bir CMS değerini çağıranın sahip olduğu iki bayt segmentine karşı doğrular, imzalayan sertifikasını döndürür ve zincirini ağa çıkmadan, yalnızca önbellek Windows taban ilkesiyle değerlendirir

Genişletilmiş doğrulama işlevleri TWinCmsVerifyOptions kabul eder; böylece çağıranlar çevrimiçi sertifika getirmeyi etkinleştirebilir, iptal denetimi isteyebilir, bir getirme zaman aşımı ayarlayabilir ve doğrulama checkpoint'lerini gözlemleyebilir

İmza geçerliliği ile sertifika güveni bağımsız sonuçlardır; böylece güvenilmeyen ya da kendinden imzalı bir sertifikadan gelen gerçek bir imza, değiştirilmiş içerikten ayırt edilebilir kalır

Functions

FunctionDescription
WinCryptoAvailableWindows Crypt32 ve ncrypt bağlamaları çalışma zamanında çözülebildiğinde True döndürür
WinCmsVerificationAvailableAyrık CMS doğrulaması ve sertifika zinciri ilkesi API'leri mevcutken True döndürür
VerifyWinDetachedCmsİki ayrık içerik segmenti üzerinde CMS imzalı özniteliklerini ve imzasını doğrular ve güncel yalnızca önbellek sistem güvenini ayrı ayrı bildirir
VerifyWinDetachedCmsExAyrık CMS içeriğini açık çevrimiçi getirme, iptal, zaman aşımı ve checkpoint seçenekleriyle doğrular
VerifyWinAttachedCmsExBağlı bir CMS değerini doğrular ve imzalayan sertifikasını sağlanan seçeneklerle değerlendirir
ResolveWinSignerBir parmak izini, Windows sertifika deposunu ve CNG özel anahtarını kullanarak imzalayan, sertifika DER ve zincire çözümler
TestBuildWinCmsTrustYalnızca PDFIUMPAS_CRYPTO_TESTS altında derlenen koşullu test kancası: CNG zincir ilkesi işlev işaretçilerini çağıranın sağladığı stub'larla değiştirir, imza durumunu geçerli olarak ayarlanmış halde güven inşasını çalıştırır ve işaretçileri geri koyar; böylece kripto birim testleri gerçek bir sertifika zinciri olmadan BuildWinCmsTrust'u egzersize edebilir

Verification Types

TypeMembers and purpose
TWinCmsVerifyStatuswcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported ya da wcvsIndeterminate
TWinCmsVerifyStagewcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval ya da wcvstRevocationCheck
TWinCmsVerifyCheckpointDoğrulama ilerledikçe her TWinCmsVerifyStage değerini alan object-method geri çağırması
TWinCmsVerifyOptionsOnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint ve statik Default fabrikası
TWinCmsVerifyResultTPdfCmsVerifyResult için bir diğer addır; SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason ve RevocationError içerir

Revocation results

CheckRevocation etkinken arka uç ayrı bir iptal zinciri kurar ve RevocationStatus, RevocationReason ile RevocationError alanlarını doldurur. İptal başarısızlıkları imza sonucunu ya da bağımsız değerlendirilen TrustStatus ile TrustError değerlerinin üzerine yazmaz

İyi biçimli bir yerel zincirde doğrulanmış iptal, wcvsInvalid ile pcrrCertificateRevoked üretir. Doğrulanmış iptal yokken güvenilmeyen bir zincir wcvsIndeterminate ile pcrrChainUntrusted verir; eksik yerel yapılar ve diğer çözülemeyen iptal kontrolleri wcvsIndeterminate ile pcrrUnknown olarak kalır

Geçerli bir sonuç için güvenilen bir zincir, zincir hatası olmaması, iptal denetimi gerektiren en az bir sertifika ve bu sertifikaların her biri için başarılı bir yerel iptal sonucu gerekir. Yalnızca son sertifikayı açıkça self-signed ya da güvenilen bir CA çapası olarak işaretlenmiş olanlar bu kapsam gereksiniminin dışındadır; yalnızca kökten oluşan bir zincir ya da sertifika başına eksik kanıt belirsiz kalır

RevocationError, CERT_REVOCATION_INFO.dwRevocationResult değerinden ham bir DWORD korur; iptal zinciri çağrısı başarısız olduğunda ise anlık GetLastError değerini alır. Sıfır, yerel tanılama olmadığı anlamına gelir; bir zincir durumu karşılık gelen sağlayıcı kodu olmadan iptal kurduğunda da böyledir. Toplulaştırılmış CERT_TRUST_STATUS.dwErrorStatus bitleri sınıflandırmada kullanılır ve uydurma bir yerel hata olarak bu alana kopyalanmaz

Ham değeri kendi Windows sağlayıcı ya da API bağlamında yorumlayın; bir HRESULT olması garanti değildir. Çevrimdışı, bayat ya da bilinmeyen iptal kanıtı CRL süresi dolmasını, bozuk CRL'leri ve hatalı CRL imzalarını ayırt etmez; bu yüzden bu arka uç bu ayrıntılı nedenleri çıkaramaz

OnlineRetrieval = False iken hem zincir inşası hem iptal denetimi yalnızca önbellekteki veriyi kullanır. Çevrimiçi getirmeyi etkinleştirmek, Windows zincir motorunun yapılandırılan getirme zaman aşımı içinde destekleyici kanıtları edinmesine izin verir

Remarks

See Also

FPdfCrypto, FPdfCms