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
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
| Function | Description |
|---|---|
WinCryptoAvailable | Windows Crypt32 ve ncrypt bağlamaları çalışma zamanında çözülebildiğinde True döndürür |
WinCmsVerificationAvailable | Ayrı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 |
VerifyWinDetachedCmsEx | Ayrık CMS içeriğini açık çevrimiçi getirme, iptal, zaman aşımı ve checkpoint seçenekleriyle doğrular |
VerifyWinAttachedCmsEx | Bağlı bir CMS değerini doğrular ve imzalayan sertifikasını sağlanan seçeneklerle değerlendirir |
ResolveWinSigner | Bir parmak izini, Windows sertifika deposunu ve CNG özel anahtarını kullanarak imzalayan, sertifika DER ve zincire çözümler |
TestBuildWinCmsTrust | Yalnı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 |
| Type | Members and purpose |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported ya da wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval ya da wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Doğrulama ilerledikçe her TWinCmsVerifyStage değerini alan object-method geri çağırması |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint ve statik Default fabrikası |
TWinCmsVerifyResult | TPdfCmsVerifyResult için bir diğer addır; SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason ve RevocationError içerir |
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
PadesCryptoAvailable = False bildirirTWinCmsVerifyOptions.Default yalnızca önbellek doğrulamayı korur; çevrimiçi getirme ve iptal denetimine yalnızca uygulama ağ erişimini ve gecikmesini kabul ediyorsa izin verinRevocationReason: TPdfCmsRevocationReason ve RevocationError: Cardinal alanlarını içerir. İptal devre dışıyken ya da ilgili geçişe hiç gelinmediğinde bu alanlar pcrrNone ve sıfır kalır; aynı değerler başarılı bir denetimde de görülür, bu yüzden kararı RevocationStatus'tan okuyunNativeRevocationError ve NativeTimeStampRevocationError üzerinden korur