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 to właściwe dla Windows zaplecze kryptograficzne konsumowane przez FPdfCrypto. Otwiera magazyny certyfikatów bieżącego użytkownika i maszyny lokalnej przez CryptoAPI, znajduje certyfikat pasujący do żądanego odcisku palca, pozyskuje powiązany uchwyt klucza prywatnego NCRYPT i zwraca TPadesResolvedSigner, którego ICmsSigner podpisuje przez CNG
WinCryptoAvailable wykonuje lekką kontrolę, czy powiązania Crypt32 / ncrypt dają się rozwiązać, więc wywołujący może już na starcie zdecydować, czy podpisywanie PAdES będzie na tej maszynie możliwe
VerifyWinDetachedCms waliduje odłączoną wartość CMS względem dwóch segmentów bajtów należących do wywołującego, zwraca certyfikat podpisującego i ocenia jego łańcuch polityką bazową Windows z wyłącznym użyciem pamięci podręcznej, bez pobierania z sieci
Rozszerzone funkcje weryfikacji przyjmują TWinCmsVerifyOptions, więc wywołujący może włączyć pobieranie certyfikatów w trybie online, zażądać kontroli unieważnień, ustawić limit czasu pobierania i obserwować punkty kontrolne weryfikacji
Ważność podpisu i zaufanie do certyfikatu są niezależnymi wynikami, więc autentyczny podpis certyfikatu niezaufanego albo samopodpisanego pozostaje odróżnialny od naruszonej treści
| Function | Description |
|---|---|
WinCryptoAvailable | Zwraca True, gdy powiązania Crypt32 i ncrypt dają się rozwiązać w czasie wykonania |
WinCmsVerificationAvailable | Zwraca True, gdy dostępna jest weryfikacja odłączonego CMS i API polityki łańcucha certyfikatów |
VerifyWinDetachedCms | Weryfikuje podpisane atrybuty CMS i podpis nad dwoma odłączonymi segmentami treści oraz osobno raportuje bieżące zaufanie systemowe z wyłącznym użyciem pamięci podręcznej |
VerifyWinDetachedCmsEx | Weryfikuje odłączoną treść CMS z jawnymi opcjami pobierania online, unieważnień, limitu czasu i punktów kontrolnych |
VerifyWinAttachedCmsEx | Weryfikuje dołączoną wartość CMS i ocenia certyfikat podpisującego zgodnie z dostarczonymi opcjami |
ResolveWinSigner | Rozwiązuje odcisk palca do postaci podpisującego, certyfikatu DER i łańcucha przy użyciu magazynu certyfikatów Windows i klucza prywatnego CNG |
TestBuildWinCmsTrust | Hak warunkowy kompilowany tylko pod PDFIUMPAS_CRYPTO_TESTS: podmienia wskaźniki funkcji polityki łańcucha CNG na zaślepki dostarczone przez wywołującego, buduje zaufanie z ustawionym z góry statusem podpisu na ważny i przywraca wskaźniki, dzięki czemu testy jednostkowe kryptografii mogą ćwiczyć BuildWinCmsTrust bez prawdziwego łańcucha certyfikatów |
| Type | Members and purpose |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported lub wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval lub wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Wywołanie zwrotne metody obiektu otrzymujące każdy TWinCmsVerifyStage |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint i statyczna fabryka Default |
TWinCmsVerifyResult | Alias TPdfCmsVerifyResult, zawierający SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason i RevocationError |
Przy włączonym CheckRevocation zaplecze buduje osobny łańcuch unieważnień i wypełnia RevocationStatus, RevocationReason oraz RevocationError. Awarie unieważnień nie nadpisują wyniku podpisu ani niezależnie liczonego TrustStatus i TrustError
Dla poprawnego natywnego łańcucha potwierdzone unieważnienie daje wcvsInvalid z pcrrCertificateRevoked. Bez potwierdzonego unieważnienia niezaufany łańcuch daje wcvsIndeterminate z pcrrChainUntrusted; niekompletne struktury natywne i inne nierozstrzygnięte kontrole unieważnień pozostają na wcvsIndeterminate z pcrrUnknown
Ważny wynik wymaga zaufanego łańcucha, braku błędów łańcucha, co najmniej jednego certyfikatu wymagającego sprawdzania unieważnień oraz pomyślnego natywnego wyniku unieważnienia dla każdego takiego certyfikatu. Z pokrycia wyłączony jest tylko certyfikat końcowy jawnie oznaczony jako samopodpisany albo zaufana kotwica CA; łańcuch z samym rootem albo brak dowodów dla któregoś certyfikatu pozostaje niejednoznaczny
RevocationError zachowuje surowy DWORD z CERT_REVOCATION_INFO.dwRevocationResult albo bezpośrednią wartość GetLastError, gdy wywołanie łańcucha unieważnień zawiedzie. Zero oznacza brak dostępnej natywnej diagnostyki, także wtedy, gdy status łańcucha ustanawia unieważnienie bez odpowiadającego kodu dostawcy. Zagregowane bity CERT_TRUST_STATUS.dwErrorStatus służą do klasyfikacji i nie są kopiowane do tego pola jako zmyślony kod natywny
Surową wartość interpretuj w kontekście danego dostawcy czy API Windows; nie ma gwarancji, że to HRESULT. Dowody unieważnień offline, przeterminowane lub nieznane nie identyfikują wygaśnięcia CRL, zniekształconych CRL ani złych sygnatur CRL, więc to zaplecze nie dedukuje tych szczegółowych powodów
Przy OnlineRetrieval = False i budowanie łańcucha, i sprawdzanie unieważnień korzysta wyłącznie z cache. Włączenie pobierania online pozwala silnikowi łańcuchów Windows zdobyć brakujące dowody w ramach skonfigurowanego limitu czasu pobierania
PadesCryptoAvailable = False, chyba że zarejestrowano inne zapleczeTWinCmsVerifyOptions.Default zachowuje weryfikację z wyłącznym użyciem pamięci podręcznej; włączaj pobieranie online i kontrolę unieważnień tylko wtedy, gdy aplikacja akceptuje dostęp do sieci i jego opóźnieniaRevocationReason: TPdfCmsRevocationReason i RevocationError: Cardinal. Gdy unieważnienia są wyłączone albo ich przebieg nie został osiągnięty, pola zachowują pcrrNone i zero; te same wartości towarzyszą pomyślnemu sprawdzeniu, więc werdykt czerp z RevocationStatusNativeRevocationError i NativeTimeStampRevocationError