function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;
Łączy fakty podpisowe z PDFium z inspekcją algorytmów i polityk CMS, stanem zaufania i unieważnień certyfikatów, stanem znaczników czasu RFC 3161, pokryciem DSS/VRI oraz analizą polityk rewizji przyrostowych
Metoda zachowuje pojedynczy, niezmienny zapis oryginalnych bajtów źródłowych i wielokrotnie go używa w etapach zgodności, zaufania, DSS i rewizji, bez ponownego zapisu dokumentu
Tożsamości podpisujących i uporządkowanej ścieżki certyfikatów są emitowane jako wartości SHA-256, zamiast kopiować treści certyfikatów do raportu
TrustOptions steruje ewaluacją zaufania w trybie offline albo online, sprawdzaniem unieważnień, sprawdzaniem znaczników czasu, postępem, limitem czasu i anulowaniemMaxSourceBytes odrzuza zbyt duże zachowane źródła, zanim rozpocznie się analiza dowodówMaxSignatures ogranicza zbierane dowody per podpisMaxRevisionChangesPerSignature ogranicza zachowane zmiany rewizji na poziomie obiektów dla każdego podpisuMaxValidationMaterials i MaxStoredValidationBytes ograniczają dowody certyfikatów, OCSP i CRL bez dekodowania skompresowanych strumieniMaxVriEntries ogranicza słowniki VRI właściwe dla podpisówTPadesEvidenceReport zawiera podsumowania walidacji i rewizji, rekordy materiałów DSS zapisane jako skróty, grafy odwołań VRI, liczbę podpisów z PDFium, stan ucięcia oraz po jednym TPadesSignatureEvidence na zachowany podpis
ToJson emituje zagnieżdżony dokument dowodowy, a ToCsv emituje jeden wiersz na zachowaną zmianę rewizji albo jeden wiersz podsumowania, gdy podpis nie ma zachowanych zmian
TPadesSignatureEvidence.Validation zachowuje RevocationReason i NativeRevocationError podpisu niezależnie od TimeStampRevocationReason i NativeTimeStampRevocationError znacznika czasu
Każdy wpis JSON w signatures zawiera revocationReason, nativeRevocationError, timeStampSignatureStatus, timeStampTrustStatus, timeStampRevocationStatus, timeStampRevocationReason i nativeTimeStampRevocationError. Istniejące składowe i ich znaczenia są bez zmian; format JSON nie ma składowej wersji schematu, więc konsumenci powinni czytać pola po nazwie i tolerować dodatkowe składowe
CSV zachowuje oryginalne 40 kolumn w oryginalnej kolejności i dokłada te same siedem pól w podanej wyżej kolejności, co daje łącznie 47 kolumn. Zarówno wiersze podsumowania, jak i wiersze zmian rewizji zawierają diagnostykę; istniejące pozycje kolumn się nie zmieniają. Czytniki powinny opierać się na nazwach z nagłówka albo tolerować dodatkowe kolumny na końcu, zamiast wymagać dokładnie 40 kolumn
Stringi powodów to none, certificateRevoked, crlExpired, crlNotYetValid, crlUnavailable, crlSignatureInvalid, crlInvalid, chainUntrusted lub unknown. Natywne kody błędów to numeryczne kody zależne od backendu, na przykład błędy weryfikacji X509 w OpenSSL albo surowe wartości DWORD dostawcy Windows czy GetLastError, przy czym zero oznacza brak natywnej diagnostyki. Wartości z Windows są eksportowane bez zmian i nie wolno ich interpretować jako zagregowanych masek zaufania łańcucha ani wspólnej przestrzeni HRESULT
Werdykt ustalaj po revocationStatus i timeStampRevocationStatus. Powód none albo zerowy błąd pojawia się też, gdy sprawdzanie jest wyłączone, nieosiągnięte albo pozbawione szczegółowej diagnostyki backendu; eksport dowodów nie wykonuje dodatkowego przebiegu weryfikacji
Active było TrueIsTruncated jest ustawiane, gdy dowolny budżet podpisów, zmian rewizji, materiałów walidacyjnych, zapisanych bajtów lub wpisów VRI utnie szczegóły raportupvssIncomplete
var
Options: TPadesEvidenceReportOptions;
Report: TPadesEvidenceReport;
begin
Options := TPadesEvidenceReportOptions.Default;
Report := Pdf1.BuildPadesEvidenceReport(Options);
TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;