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 es el backend criptográfico específico de Windows consumido por FPdfCrypto. Abre los almacenes de certificados del usuario actual y de la máquina local a través de CryptoAPI, localiza el certificado que coincide con la huella solicitada, adquiere el manejador asociado de clave privada NCRYPT y devuelve un TPadesResolvedSigner cuyo ICmsSigner firma a través de CNG
WinCryptoAvailable realiza la comprobación ligera de que los enlaces Crypt32 / ncrypt se resuelven, de modo que quienes llaman puedan decidir al arrancar si la firma PAdES será posible en esta máquina
VerifyWinDetachedCms valida un valor CMS desacoplado contra dos segmentos de bytes propiedad del llamador, devuelve el certificado del firmante y evalúa su cadena con la política base de Windows solo con caché, sin realizar recuperación por red
Las funciones de verificación extendidas aceptan TWinCmsVerifyOptions para que quienes llaman puedan habilitar la recuperación en línea de certificados, solicitar la comprobación de revocación, fijar un tiempo de espera de recuperación y observar los puntos de control de la verificación
La validez de la firma y la confianza en el certificado son resultados independientes, de modo que una firma auténtica de un certificado que no es de confianza o autofirmado sigue siendo distinguible del contenido manipulado
| Función | Descripción |
|---|---|
WinCryptoAvailable | Devuelve True cuando los enlaces Crypt32 y ncrypt de Windows pueden resolverse en tiempo de ejecución |
WinCmsVerificationAvailable | Devuelve True cuando la verificación CMS desacoplada y las API de política de cadena de certificados están disponibles |
VerifyWinDetachedCms | Verifica los atributos firmados y la firma del CMS sobre dos segmentos de contenido desacoplados e informa por separado de la confianza actual del sistema solo con caché |
VerifyWinDetachedCmsEx | Verifica el contenido CMS desacoplado con opciones explícitas de recuperación en línea, revocación, tiempo de espera y puntos de control |
VerifyWinAttachedCmsEx | Verifica un valor CMS adjunto y evalúa su certificado de firmante usando las opciones suministradas |
ResolveWinSigner | Resuelve una huella en un firmante, el DER del certificado y la cadena usando el almacén de certificados de Windows y la clave privada CNG |
TestBuildWinCmsTrust | Hook condicionado a compilación de pruebas, solo bajo PDFIUMPAS_CRYPTO_TESTS: sustituye los punteros a función de política de cadena CNG por stubs suministrados por quien llama, ejecuta la construcción de confianza con el estado de firma prefijado a válido y restaura los punteros, de modo que las pruebas unitarias de criptografía pueden ejercitar BuildWinCmsTrust sin una cadena de certificados real |
| Tipo | Miembros y propósito |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported o wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval o wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Devolución de llamada de método de objeto que recibe cada TWinCmsVerifyStage |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint y la fábrica estática Default |
TWinCmsVerifyResult | Alias de TPdfCmsVerifyResult, que contiene SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason y RevocationError |
Con CheckRevocation activado, el backend construye una cadena de revocación aparte y rellena RevocationStatus, RevocationReason y RevocationError. Los fallos de revocación no sobrescriben el resultado de la firma ni el TrustStatus y el TrustError evaluados de forma independiente
Para una cadena nativa bien formada, la revocación confirmada produce wcvsInvalid con pcrrCertificateRevoked. Sin revocación confirmada, una cadena no confiable produce wcvsIndeterminate con pcrrChainUntrusted; las estructuras nativas incompletas y otras comprobaciones de revocación sin resolver permanecen en wcvsIndeterminate con pcrrUnknown
Un resultado válido exige una cadena de confianza, sin errores de cadena, al menos un certificado que requiera comprobación de revocación y un resultado nativo de revocación con éxito para cada uno de esos certificados. Solo un certificado terminal marcado explícitamente como autofirmado o como ancla CA de confianza queda excluido de ese requisito de cobertura; una cadena de solo raíz o la falta de evidencia por certificado sigue quedando indeterminada
RevocationError conserva un DWORD sin procesar de CERT_REVOCATION_INFO.dwRevocationResult, o el valor inmediato de GetLastError cuando la llamada a la cadena de revocación falla. Cero significa que no hay diagnóstico nativo disponible, incluido el caso en que un estado de cadena establece la revocación sin un código de proveedor correspondiente. Los bits agregados de CERT_TRUST_STATUS.dwErrorStatus se usan para la clasificación y no se copian en este campo como un error nativo inventado
Interprete el valor sin procesar en su contexto de proveedor o API de Windows; no hay garantía de que sea un HRESULT. La evidencia de revocación offline, caducada o desconocida no identifica caducidad de CRL, CRL malformadas ni firmas CRL erróneas, así que este backend no infiere esos reasons detallados
Con OnlineRetrieval = False, tanto la construcción de la cadena como la comprobación de revocación usan solo la caché. Activar la recuperación en línea permite al motor de cadenas de Windows obtener la evidencia de soporte dentro del tiempo de espera de recuperación configurado
PadesCryptoAvailable = False a menos que se registre otro backendTWinCmsVerifyOptions.Default preserva la verificación solo con caché; active la recuperación en línea y la comprobación de revocación solo cuando la aplicación acepte el acceso a la red y su latenciaRevocationReason: TPdfCmsRevocationReason y RevocationError: Cardinal. Cuando la revocación está desactivada o no se llega a su pasada, estos campos conservan pcrrNone y cero; los mismos valores acompañan a una comprobación con éxito, así que use RevocationStatus para el veredictoNativeRevocationError y NativeTimeStampRevocationError