function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;
Combine les faits de signature PDFium avec l’inspection des algorithmes et politiques CMS, la confiance et l’état de révocation des certificats, l’état des horodatages RFC 3161, la couverture DSS/VRI et l’analyse des politiques de révisions incrémentielles
La méthode conserve une capture immuable des octets sources et la réutilise à travers les étapes de conformité, de confiance, de DSS et de révisions sans réenregistrer le document
Les identités du signataire et du chemin de certificats ordonné sont émises sous forme de valeurs SHA-256 plutôt que de copier les corps de certificats dans le rapport
TrustOptions contrôle l’évaluation de confiance hors ligne ou en ligne, la vérification de révocation, la vérification des horodatages, la progression, le délai d’attente et l’annulationMaxSourceBytes rejette les sources conservées surdimensionnées avant que l’analyse des preuves ne commenceMaxSignatures limite les preuves collectées par signatureMaxRevisionChangesPerSignature limite les changements de révision au niveau objet conservés pour chaque signatureMaxValidationMaterials et MaxStoredValidationBytes bornent les preuves de certificats, OCSP et CRL sans décoder les flux compressésMaxVriEntries limite les dictionnaires VRI propres à chaque signatureLe TPadesEvidenceReport inclut des résumés de validation et de révisions, des records de matériel DSS hachés, des graphes de références VRI, le nombre de signatures PDFium, l’état de troncature et un TPadesSignatureEvidence par signature conservée
ToJson émet un document de preuves imbriqué et ToCsv émet une ligne par changement de révision conservé, ou une ligne de résumé lorsqu’une signature n’a aucun changement conservé
TPadesSignatureEvidence.Validation conserve le RevocationReason et le NativeRevocationError de la signature indépendamment du TimeStampRevocationReason et du NativeTimeStampRevocationError de l’horodatage
Chaque entrée JSON de signatures inclut revocationReason, nativeRevocationError, timeStampSignatureStatus, timeStampTrustStatus, timeStampRevocationStatus, timeStampRevocationReason et nativeTimeStampRevocationError. Les membres existants et leur signification ne changent pas ; le format JSON n’a aucun membre de version de schéma, les consommateurs doivent donc lire les champs par nom et tolérer des membres supplémentaires
Le CSV conserve ses 40 colonnes d’origine dans leur ordre d’origine et ajoute ces mêmes sept champs dans l’ordre listé ci-dessus, soit 47 colonnes au total. Les lignes de résumé comme les lignes de changement de révision incluent les diagnostics ; les positions de colonnes existantes restent inchangées. Les lecteurs doivent s’appuyer sur les noms d’en-tête ou tolérer des colonnes supplémentaires en fin de ligne plutôt que d’exiger exactement 40 colonnes
Les chaînes de raison sont none, certificateRevoked, crlExpired, crlNotYetValid, crlUnavailable, crlSignatureInvalid, crlInvalid, chainUntrusted ou unknown. Les erreurs natives sont des codes numériques propres au backend, comme les erreurs de vérification X509 d’OpenSSL ou les valeurs DWORD brutes de fournisseur Windows ou de GetLastError, zéro signifiant l’absence de diagnostic natif. Les valeurs Windows sont exportées telles quelles et ne doivent pas être interprétées comme des masques de confiance de chaîne agrégés ni comme un espace HRESULT commun
Utilisez revocationStatus et timeStampRevocationStatus pour déterminer le verdict. Une raison none ou une erreur zéro survient aussi quand la vérification est désactivée, jamais atteinte ou dépourvue de diagnostics backend détaillés ; exporter des preuves n’effectue aucune passe de vérification supplémentaire
Active soit TrueIsTruncated est défini lorsqu’un budget de signature, de changement de révision, de matériel de validation, d’octets stockés ou de VRI rogne le détail du rapportpvssIncomplete
var
Options: TPadesEvidenceReportOptions;
Report: TPadesEvidenceReport;
begin
Options := TPadesEvidenceReportOptions.Default;
Report := Pdf1.BuildPadesEvidenceReport(Options);
TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;