Timestamps RFC3161 nativos

HPDFHeadlessTimestamp ofrece creación nativa de solicitudes con OpenSSL 3 y verificación autenticada de respuestas y tokens RFC3161 en Linux y Windows

HPDFSignHeadlessCMS, SignToFile y SignPFXToFile hashean los octetos reales de la firma CMS con SHA-256 y adjuntan el token de respuesta verificado como atributo sin firmar signatureTimeStampToken

Configura THPDFHeadlessCMSOptions.Timestamp.TrustedCAFile y Transport antes de firmar, y pon RequireTimestamp cuando un token autenticado sea obligatorio

Options := THPDFHeadlessCMSOptions.Default;
Options.TrustedCAFile := SignerTrustFile;
Options.RequireTimestamp := True;
Options.Timestamp.TrustedCAFile := TSATrustFile;
Options.Timestamp.TrustedCRLFile := TSACRLFile;
Options.Timestamp.RequireRevocation := True;
Options.Timestamp.Transport := RequestTimestamp;
Options.Timestamp.TransportContext := TransportContext;
Report := Document.SignPFXToFile(FieldIndex, OutputFile, IdentityPFX,
  IdentityPassword, Options);

El transporte propiedad del llamador recibe un TimeStampReq DER completo y devuelve un TimeStampResp DER completo, permitiendo al llamador controlar la autenticación HTTP, la política TLS, los deadlines y la cancelación durante la I/O de red

Las solicitudes contienen nonces criptográficos frescos y piden los certificados del TSA; las respuestas deben coincidir tanto con el nonce de la solicitud como con el valor de firma suministrado

La verificación autentica el token CMS completo, comprueba la ruta del certificado del TSA y el EKU crítico de timestamp, verifica el binding ESS del certificado de firma, y coteja el messageImprint SHA-256, SHA-384 o SHA-512 contra los octetos reales de la firma usando el algoritmo que porta el TSTInfo

RequireRevocation carga el archivo explícito de CRLs y habilita las verificaciones de revocación de certificados verificadas por issuer; la evidencia ausente, vencida o revocada falla en lugar de producir un resultado confiable

Los tokens existentes pueden verificarse offline sin el nonce de la solicitud original; la verificación de respuestas frescas comprueba adicionalmente el nonce original de la solicitud y el estado de la respuesta

Callbacks que ya proveen un imprint

Las funciones ForImprint aceptan un digest precalculado SHA256, SHA384 o SHA512 y su valor THPDFHeadlessTimestampDigest, y luego preservan esos bytes exactos de digest en la solicitud RFC3161 sin hashearlos de nuevo

Usa estas funciones cuando un callback de firma ya suministra el messageImprint, incluido el THPDFCMSTimestampCallback de Windows; los helpers de solicitud de firma cruda siguen usando SHA256, mientras que la verificación offline de tokens hashea los octetos originales de la firma con el algoritmo realmente soportado del TSTInfo

Token := HPDFRequestHeadlessTimestampForImprint(MessageImprint,
  htdSHA384, TimestampOptions);

La longitud del imprint debe ser de 32, 48 o 64 bytes para el digest seleccionado; la verificación vinculada a la solicitud comprueba además el nonce fresco original, el OID del digest, la firma CMS, el binding del certificado del TSA, las raíces de trust explícitas, el EKU y la evidencia de revocación configurada

Consulta la creación de solicitudes, la verificación de respuestas, la verificación offline de tokens, el transporte y los valores de digest

La validez de certificados y CRLs confiables se evalúa en el momento de la verificación, así que un token archivado cuyo certificado del TSA haya vencido necesita una política de validación de archivo y evidencia, en lugar de saltarse las verificaciones actuales de trust

Los tokens malformados, los atributos de timestamp duplicados, los imprints que no coinciden, las raíces desconocidas, los EKUs inválidos, los certificados del TSA vencidos o revocados, las CRLs vencidas, los presupuestos de respuesta y la cancelación están cubiertos por tests nativos e independientes de aceptación

Los reportes de verificación de timestamps son separados del trust del certificado del signer del documento; un timestamp de firma no autentica revisiones posteriores sin firmar del PDF

Las funciones de timestamp cargan sus símbolos de timestamp de OpenSSL solo cuando se usan; pon HOTPDF_OPENSSL_LIBRARY en una librería compartida explícita de OpenSSL 3 de arquitectura coincidente cuando sea necesario