PDFium Component Docs

FPdfCryptoWin unit

Unit: FPdfCryptoWin
Windows Cryptography API-backend voor PAdES-ondertekening, detached CMS-verificatie en cache-only vertrouwenbeoordeling van systeemcertificaten

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 is de Windowsspecifieke cryptobackend die door FPdfCrypto wordt verbruikt. De unit opent de certificaatstores van de huidige gebruiker en de lokale machine via CryptoAPI, zoekt het certificaat dat bij de gevraagde thumbprint hoort, verkrijgt de bijbehorende NCRYPT private-key-handle en geeft een TPadesResolvedSigner terug waarvan de ICmsSigner via CNG ondertekent

WinCryptoAvailable voert de lichtgewicht controle uit dat de Crypt32-/ncrypt-bindingen oplosbaar zijn, zodat aanroepers bij het opstarten kunnen besluiten of PAdES-ondertekening op deze machine mogelijk zal zijn

VerifyWinDetachedCms valideert een detached CMS-waarde tegen twee door de aanroeper eigen bytesegementen, geeft het signercertificaat terug en beoordeelt zijn keten met het cache-only Windows-basisbeleid zonder netwerkophaling

De uitgebreide verificatiefuncties accepteren TWinCmsVerifyOptions, zodat aanroepers online certificaatophaling kunnen inschakelen, revocationcontrole kunnen vragen, een ophaal-timeout kunnen instellen en verificatiecheckpoints kunnen volgen

Handtekeninggeldigheid en certificaatvertrouwen zijn onafhankelijke uitkomsten, zodat een authentieke handtekening van een niet-vertrouwd of self-signed certificaat onderscheidbaar blijft van gemanipuleerde content

Functions

FunctionDescription
WinCryptoAvailableGeeft True terug wanneer de Windows Crypt32- en ncrypt-bindingen tijdens runtime oplosbaar zijn
WinCmsVerificationAvailableGeeft True terug wanneer detached CMS-verificatie en certificaatketen-beleids-API's beschikbaar zijn
VerifyWinDetachedCmsVerifieert de CMS signed attributes en de handtekening over twee detached contentsegmenten en rapporteert het huidige cache-only systeemvertrouwen apart
VerifyWinDetachedCmsExVerifieert detached CMS-content met expliciete opties voor online ophaling, revocation, timeout en checkpoints
VerifyWinAttachedCmsExVerifieert een attached CMS-waarde en beoordeelt zijn signercertificaat met de aangeleverde opties
ResolveWinSignerZet een thumbprint om naar signer, certificaat-DER en keten met de Windows-certificaatstore en de CNG private key
TestBuildWinCmsTrustAlleen gecompileerd onder PDFIUMPAS_CRYPTO_TESTS: verwisselt de functiepointers van het CNG-ketenbeleid voor door de aanroeper geleverde stubs, draait trust building met de handtekeningsstatus op geldig gezet en zet de pointers terug, zodat crypto-unittests BuildWinCmsTrust kunnen oefenen zonder een echte certificaatketen

Verification Types

TypeMembers and purpose
TWinCmsVerifyStatuswcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported of wcvsIndeterminate
TWinCmsVerifyStagewcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval of wcvstRevocationCheck
TWinCmsVerifyCheckpointObject-method-callback die elke TWinCmsVerifyStage ontvangt
TWinCmsVerifyOptionsOnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint en de statische Default-factory
TWinCmsVerifyResultAlias van TPdfCmsVerifyResult, met daarin SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason en RevocationError

Revocation results

Met CheckRevocation aan bouwt de backend een aparte revocatieketen en vult hij RevocationStatus, RevocationReason en RevocationError. Revocatiefouten overschrijven het handtekeningresultaat of de onafhankelijk beoordeelde TrustStatus en TrustError niet

Voor een goed gevormde native keten levert bevestigde intrekking wcvsInvalid op met pcrrCertificateRevoked. Zonder bevestigde intrekking geeft een onbetrouwbare keten wcvsIndeterminate met pcrrChainUntrusted; onvolledige native structuren en andere onopgeloste revocatiecontroles blijven wcvsIndeterminate met pcrrUnknown

Een geldig resultaat eist een vertrouwde keten, geen ketenfouten, minstens één certificaat dat revocatiecontrole vereist en een geslaagde native revocatie-uitkomst voor elk van die certificaten. Alleen een eindcertificaat dat expliciet als self-signed of als vertrouwd CA-anker staat aangemerkt, valt buiten die dekkingseis; een keten met alleen een root of ontbrekend bewijs per certificaat blijft indeterminaat

RevocationError bewaart een ruwe DWORD uit CERT_REVOCATION_INFO.dwRevocationResult, of de directe GetLastError-waarde wanneer de revocatieketenaanroep faalt. Nul betekent dat er geen native diagnose beschikbaar is, ook wanneer een ketenstatus intrekking vaststelt zonder bijbehorende providercode. Geaggregeerde CERT_TRUST_STATUS.dwErrorStatus-bits worden voor de classificatie gebruikt en niet als verzonnen native fout in dit veld gekopieerd

Interpreteer de ruwe waarde in zijn Windows-provider- of API-context; het is niet gegarandeerd een HRESULT. Offline, verouderd of onbekend revocatiebewijs wijst geen CRL-verloop, misvormde CRL's of slechte CRL-handtekeningen aan, dus deze backend leidt die gedetailleerde redenen niet af

Met OnlineRetrieval = False gebruiken zowel het bouwen van de keten als revocatiecontrole uitsluitend cache. Online ophaling aanzetten geeft de Windows-ketenengine ruimte om het ondersteunende bewijs binnen de ingestelde ophaal-timeout op te halen

Remarks

See Also

FPdfCrypto, FPdfCms