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 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
| Function | Description |
|---|---|
WinCryptoAvailable | Geeft True terug wanneer de Windows Crypt32- en ncrypt-bindingen tijdens runtime oplosbaar zijn |
WinCmsVerificationAvailable | Geeft True terug wanneer detached CMS-verificatie en certificaatketen-beleids-API's beschikbaar zijn |
VerifyWinDetachedCms | Verifieert de CMS signed attributes en de handtekening over twee detached contentsegmenten en rapporteert het huidige cache-only systeemvertrouwen apart |
VerifyWinDetachedCmsEx | Verifieert detached CMS-content met expliciete opties voor online ophaling, revocation, timeout en checkpoints |
VerifyWinAttachedCmsEx | Verifieert een attached CMS-waarde en beoordeelt zijn signercertificaat met de aangeleverde opties |
ResolveWinSigner | Zet een thumbprint om naar signer, certificaat-DER en keten met de Windows-certificaatstore en de CNG private key |
TestBuildWinCmsTrust | Alleen 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 |
| Type | Members and purpose |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported of wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval of wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Object-method-callback die elke TWinCmsVerifyStage ontvangt |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint en de statische Default-factory |
TWinCmsVerifyResult | Alias van TPdfCmsVerifyResult, met daarin SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason en RevocationError |
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
PadesCryptoAvailable = False tenzij een andere backend is geregistreerdTWinCmsVerifyOptions.Default behoudt cache-only verificatie; kies alleen voor online ophaling en revocationcontrole wanneer de applicatie netwerktoegang en de bijbehorende latentie accepteertRevocationReason: TPdfCmsRevocationReason en RevocationError: Cardinal. Als revocation uit staat of zijn pass niet wordt bereikt, houden deze velden pcrrNone en nul aan; dezelfde waarden horen bij een geslaagde controle, dus gebruik RevocationStatus voor het oordeelNativeRevocationError en NativeTimeStampRevocationError