function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;
Combina los hechos de firma de PDFium con la inspección de algoritmos y políticas CMS, la confianza y el estado de revocación de certificados, el estado de las marcas de tiempo RFC 3161, la cobertura DSS/VRI y el análisis de políticas de revisiones incrementales
El método retiene una única captura inmutable de los bytes de origen y la reutiliza en las etapas de cumplimiento, confianza, DSS y revisiones sin volver a guardar el documento
Las identidades del firmante y de la ruta de certificados ordenada se emiten como valores SHA-256 en lugar de copiar los cuerpos de los certificados al informe
TrustOptions controla la evaluación de confianza sin conexión o en línea, la comprobación de revocación, la comprobación de marcas de tiempo, el progreso, el tiempo de espera y la cancelaciónMaxSourceBytes rechaza las fuentes retenidas de tamaño excesivo antes de que comience el análisis de evidenciaMaxSignatures limita la evidencia recogida por firmaMaxRevisionChangesPerSignature limita los cambios de revisión a nivel de objeto retenidos para cada firmaMaxValidationMaterials y MaxStoredValidationBytes acotan la evidencia de certificados, OCSP y CRL sin decodificar flujos comprimidosMaxVriEntries limita los diccionarios VRI específicos de firmaTPadesEvidenceReport incluye resúmenes de validación y revisiones, registros con hash del material DSS, grafos de referencias VRI, el conteo de firmas de PDFium, el estado de truncamiento y un TPadesSignatureEvidence por cada firma retenida
ToJson emite un documento de evidencia anidado y ToCsv emite una fila por cada cambio de revisión retenido, o una fila de resumen cuando una firma no tiene cambios retenidos
TPadesSignatureEvidence.Validation conserva el RevocationReason y el NativeRevocationError de la firma de forma independiente del TimeStampRevocationReason y el NativeTimeStampRevocationError del timestamp
Cada entrada JSON de signatures incluye revocationReason, nativeRevocationError, timeStampSignatureStatus, timeStampTrustStatus, timeStampRevocationStatus, timeStampRevocationReason y nativeTimeStampRevocationError. Los miembros y significados existentes no cambian; el formato JSON no tiene ningún miembro de versión de esquema, así que los consumidores deben leer los campos por nombre y tolerar miembros adicionales
El CSV conserva sus 40 columnas originales en su orden original y añade esos mismos siete campos en el orden indicado, para un total de 47 columnas. Tanto las filas de resumen como las de cambio de revisión incluyen los diagnósticos; las posiciones de las columnas existentes no cambian. Quien lea el archivo debe usar los nombres de la cabecera o tolerar columnas finales adicionales, en lugar de exigir exactamente 40 columnas
Las cadenas de reason son none, certificateRevoked, crlExpired, crlNotYetValid, crlUnavailable, crlSignatureInvalid, crlInvalid, chainUntrusted o unknown. Los errores nativos son códigos numéricos específicos del backend, como los errores de verificación X509 de OpenSSL o los valores DWORD sin procesar de un proveedor de Windows o de GetLastError, donde cero significa que no hay diagnóstico nativo. Los valores de Windows se exportan sin cambios y no deben interpretarse como máscaras de confianza agregada de cadena ni como un espacio HRESULT común
Use revocationStatus y timeStampRevocationStatus para determinar el veredicto. Un reason none o un error cero también aparecen cuando la comprobación está desactivada, no se llega a ejecutar o carece de diagnósticos detallados del backend; exportar evidencia no realiza ninguna pasada de verificación adicional
Active sea TrueIsTruncated se establece cuando cualquier presupuesto de firmas, cambios de revisión, material de validación, bytes almacenados o VRI recorta el detalle del informepvssIncomplete
var
Options: TPadesEvidenceReportOptions;
Report: TPadesEvidenceReport;
begin
Options := TPadesEvidenceReportOptions.Default;
Report := Pdf1.BuildPadesEvidenceReport(Options);
TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;