PDFium Component Docs

FPdfCryptoWin Moduł

Unit: FPdfCryptoWin
Zaplecze Windows Cryptography API dla podpisywania PAdES, weryfikacji odłączonego CMS i oceny zaufania certyfikatów systemowych z wyłącznym użyciem pamięci podręcznej

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 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

Functions

FunctionDescription
WinCryptoAvailableZwraca True, gdy powiązania Crypt32 i ncrypt dają się rozwiązać w czasie wykonania
WinCmsVerificationAvailableZwraca True, gdy dostępna jest weryfikacja odłączonego CMS i API polityki łańcucha certyfikatów
VerifyWinDetachedCmsWeryfikuje 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
VerifyWinDetachedCmsExWeryfikuje odłączoną treść CMS z jawnymi opcjami pobierania online, unieważnień, limitu czasu i punktów kontrolnych
VerifyWinAttachedCmsExWeryfikuje dołączoną wartość CMS i ocenia certyfikat podpisującego zgodnie z dostarczonymi opcjami
ResolveWinSignerRozwiązuje odcisk palca do postaci podpisującego, certyfikatu DER i łańcucha przy użyciu magazynu certyfikatów Windows i klucza prywatnego CNG
TestBuildWinCmsTrustHak 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

Verification Types

TypeMembers and purpose
TWinCmsVerifyStatuswcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported lub wcvsIndeterminate
TWinCmsVerifyStagewcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval lub wcvstRevocationCheck
TWinCmsVerifyCheckpointWywołanie zwrotne metody obiektu otrzymujące każdy TWinCmsVerifyStage
TWinCmsVerifyOptionsOnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint i statyczna fabryka Default
TWinCmsVerifyResultAlias TPdfCmsVerifyResult, zawierający SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason i RevocationError

Wyniki unieważnień

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

Remarks

See Also

FPdfCrypto, FPdfCms