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 è il backend crittografico specifico di Windows consumato da FPdfCrypto. Apre gli archivi certificati dell'utente corrente e della macchina locale tramite CryptoAPI, individua il certificato corrispondente all'identificazione personale (thumbprint) richiesta, acquisisce l'handle associato della chiave privata NCRYPT e restituisce un TPadesResolvedSigner il cui ICmsSigner firma attraverso CNG
WinCryptoAvailable esegue il controllo leggero che i binding Crypt32 / ncrypt si risolvano, così i chiamanti possono decidere all'avvio se la firma PAdES sarà possibile su questa macchina
VerifyWinDetachedCms valida un valore CMS detached rispetto a due segmenti di byte di proprietà del chiamante, restituisce il certificato del firmatario e ne valuta la catena con la policy base di Windows basata solo su cache, senza eseguire recupero di rete
Le funzioni di verifica estese accettano TWinCmsVerifyOptions, così i chiamanti possono abilitare il recupero online dei certificati, richiedere il controllo di revoca, impostare un timeout di recupero e osservare i checkpoint di verifica
Validità della firma e attendibilità del certificato sono risultati indipendenti, così una firma autentica proveniente da un certificato non attendibile o autofirmato resta distinguibile da contenuto manomesso
| Function | Description |
|---|---|
WinCryptoAvailable | Restituisce True quando i binding Windows Crypt32 e ncrypt possono essere risolti a runtime |
WinCmsVerificationAvailable | Restituisce True quando la verifica CMS detached e le API di policy della catena di certificati sono disponibili |
VerifyWinDetachedCms | Verifica gli attributi firmati CMS e la firma su due segmenti di contenuto detached e riporta separatamente l'attendibilità di sistema corrente basata solo su cache |
VerifyWinDetachedCmsEx | Verifica il contenuto CMS detached con opzioni esplicite di recupero online, revoca, timeout e checkpoint |
VerifyWinAttachedCmsEx | Verifica un valore CMS attached e valuta il certificato del firmatario usando le opzioni fornite |
ResolveWinSigner | Risolve un'identificazione personale (thumbprint) in un firmatario, un DER del certificato e una catena usando l'archivio certificati di Windows e la chiave privata CNG |
TestBuildWinCmsTrust | Hook condizionato ai test compilato solo sotto PDFIUMPAS_CRYPTO_TESTS: sostituisce i puntatori a funzione della policy di catena CNG con stub forniti dal chiamante, esegue la costruzione della fiducia con lo stato della firma preimpostato a valido e ripristina i puntatori, così gli unit test crittografici possono esercitare BuildWinCmsTrust senza una catena di certificati reale |
| Type | Members and purpose |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported o wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval o wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Callback object-method che riceve ogni TWinCmsVerifyStage |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint e la factory statica Default |
TWinCmsVerifyResult | Alias di TPdfCmsVerifyResult, contenente SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason e RevocationError |
Con CheckRevocation abilitato, il backend costruisce una catena di revoca separata e compila RevocationStatus, RevocationReason e RevocationError. I guasti di revoca non sovrascrivono il risultato della firma né TrustStatus e TrustError valutati indipendentemente
Per una catena nativa ben formata, la revoca confermata produce wcvsInvalid con pcrrCertificateRevoked. Senza revoca confermata, una catena non affidabile produce wcvsIndeterminate con pcrrChainUntrusted; strutture native incomplete e altri controlli di revoca non risolti restano wcvsIndeterminate con pcrrUnknown
Un risultato valido richiede una catena affidabile, nessun errore di catena, almeno un certificato che richieda il controllo di revoca e un esito nativo di revoca positivo per ognuno di questi certificati. Solo un certificato terminale esplicitamente marcatato come autofirmato o un anchor CA fidato è escluso da questo requisito di copertura; una catena di sole root o prove mancanti per singolo certificato restano indeterminate
RevocationError preserva un DWORD grezzo da CERT_REVOCATION_INFO.dwRevocationResult, oppure il valore GetLastError immediato quando la chiamata alla catena di revoca fallisce. Zero significa che non è disponibile nessuna diagnostica nativa, incluso quando uno stato di catena stabilisce la revoca senza un codice provider corrispondente. I bit aggregati di CERT_TRUST_STATUS.dwErrorStatus servono per la classificazione e non vengono copiati in questo campo come errore nativo inventato
Il valore grezzo va interpretato nel contesto del provider Windows o dell'API di provenienza; non è garantito che sia un HRESULT. Prove di revoca offline, datate o sconosciute non identificano scadenza CRL, CRL malformate o firme CRL errate, quindi questo backend non deduce questi motivi dettagliati
Con OnlineRetrieval = False, sia la costruzione della catena sia il controllo di revoca usano solo il recupero da cache. Abilitare il recupero online consente al motore di catena di Windows di ottenere le prove di supporto entro il timeout di recupero configurato
PadesCryptoAvailable = False a meno che non sia registrato un altro backendTWinCmsVerifyOptions.Default preserva la verifica basata solo su cache; attivare il recupero online e il controllo di revoca solo quando l'applicazione accetta l'accesso di rete e la sua latenzaRevocationReason: TPdfCmsRevocationReason e RevocationError: Cardinal. Quando la revoca è disattivata o il suo passaggio non viene raggiunto, questi campi conservano pcrrNone e zero; gli stessi valori accompagnano un controllo riuscito, quindi usare RevocationStatus per il verdettoNativeRevocationError e NativeTimeStampRevocationError