PDFium Delphi Component Docs

FPdfCryptoWin-enhet

Unit: FPdfCryptoWin
Windows Cryptography API-backend för PAdES-signering, fristående CMS-verifiering och cachebaserad utvärdering av systemcertifikattillit

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 är den Windows-specifika kryptobackenden som FPdfCrypto konsumerar. Den öppnar current-user- och local-machine-certifikatbutikerna via CryptoAPI, lokaliserar certifikatet som matchar det begärda tumavtrycket, hämtar det tillhörande NCRYPT-privatnyckelhandtaget och returnerar en TPadesResolvedSigner vars ICmsSigner signerar via CNG

WinCryptoAvailable gör den lätta kontrollen att Crypt32-/ncrypt-bindningarna kan lösas upp, så att anropare kan avgöra vid uppstart om PAdES-signering kommer att vara möjlig på den här maskinen

VerifyWinDetachedCms validerar ett fristående CMS-värde mot två anroparägda bytesegment, returnerar signerarcertifikatet och utvärderar dess kedja med Windows baspolicy i enbart cache-läge utan nätverkshämtning

De utökade verifieringsfunktionerna accepterar TWinCmsVerifyOptions så att anropare kan aktivera onlinehämtning av certifikat, begära återkallningskontroll, sätta en hämtningstimeout och observera verifieringscheckpoints

Signaturgiltighet och certifikattillit är oberoende resultat, så en autentisk signatur från ett obetrott eller självsignerat certifikat förblir skiljbar från manipulerat innehåll

Functions

FunctionDescription
WinCryptoAvailableReturnerar True när Windows Crypt32- och ncrypt-bindningarna kan lösas upp vid körning
WinCmsVerificationAvailableReturnerar True när fristående CMS-verifiering och certifikatkedjepolicy-API:er är tillgängliga
VerifyWinDetachedCmsVerifierar CMS:ens signerade attribut och signatur över två fristående innehållssegment och rapporterar aktuell systemtillit i enbart cache-läge separat
VerifyWinDetachedCmsExVerifierar fristående CMS-innehåll med explicita alternativ för onlinehämtning, återkallning, timeout och checkpoints
VerifyWinAttachedCmsExVerifierar ett bifogat CMS-värde och utvärderar dess signerarcertifikat med de angivna alternativen
ResolveWinSignerLöser upp ett tumavtryck till en signerare, certifikat-DER och kedja med Windows-certifikatbutiken och CNG-privatnyckeln
TestBuildWinCmsTrustTestvillkorad krok som bara kompileras under PDFIUMPAS_CRYPTO_TESTS: byter CNG-funktionspekarna för kedjepolicyn mot anroparlevererade stubbar, kör tillitsbyggnaden med signaturstatusen förinställd på valid och återställer pekarna, så kryptoenhetstesterna kan öva BuildWinCmsTrust utan en riktig certifikatkedja

Verification Types

TypeMembers and purpose
TWinCmsVerifyStatuswcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported eller wcvsIndeterminate
TWinCmsVerifyStagewcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval eller wcvstRevocationCheck
TWinCmsVerifyCheckpointCallback för objektmetod som tar emot varje TWinCmsVerifyStage
TWinCmsVerifyOptionsOnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint och den statiska fabriken Default
TWinCmsVerifyResultAlias av TPdfCmsVerifyResult, med SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason och RevocationError

Revocation results

Med CheckRevocation påslagen bygger backenden en separat återkallningskedja och fyller RevocationStatus, RevocationReason och RevocationError. Underkända återkallningskontroller skriver inte över signaturresultatet eller den oberoende utvärderade TrustStatus och TrustError

För en välbildad nativ kedja ger bekräftad återkallning wcvsInvalid med pcrrCertificateRevoked. Utan bekräftad återkallning ger en obetrodd kedja wcvsIndeterminate med pcrrChainUntrusted; ofullständiga nativa strukturer och andra ouppklarade återkallningskontroller förblir wcvsIndeterminate med pcrrUnknown

Ett giltigt resultat kräver en betrodd kedja, inga kedjefel, minst ett certifikat som kräver återkallningskontroll och ett lyckat nativt återkallningsresultat för varje sådant certifikat. Bara ett slutcertifikat som uttryckligen är markerat som självsignerat, eller en betrodd CA-ankare, undantas från det täckningskravet; en kedja med bara roten eller saknat evidens per certifikat förblir indeterminerad

RevocationError bevarar ett rått DWORD från CERT_REVOCATION_INFO.dwRevocationResult, eller det omedelbara GetLastError-värdet när anropet av återkallningskedjan misslyckas. Noll betyder att ingen nativ diagnostik finns, även när en kedjestatus fastställer återkallning utan motsvarande leverantörskod. De aggregerade CERT_TRUST_STATUS.dwErrorStatus-bitarna används för klassificering och kopieras inte in i det här fältet som ett påhittat nativt fel

Tolka råvärdet i dess Windows-leverantörs- eller API-kontext; det är inte garanterat att det är ett HRESULT. Offline-, inaktuellt eller okänt återkallningsevidens identifierar inte utgånga CRL:er, felformade CRL:er eller felaktiga CRL-signaturer, så denna backend härleder inte de där detaljerade orsakerna

Med OnlineRetrieval = False använder både kedjebyggnad och återkallningskontroll enbart cachad hämtning. Aktiverad onlinehämtning tillåter Windows kedjemotor att hämta stödevidensen inom den konfigurerade hämtningstimeouten

Remarks

See Also

FPdfCrypto, FPdfCms