PDFium Delphi Component Docs

BuildPadesEvidenceReport Метод

Компонент: TPdf  ·  Модуль: PDFium
Строит один ограниченный по размеру отчёт о доказательствах по каждой подписи PAdES и метке времени документа в удерживаемом исходном PDF

Syntax

function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;

Description

Объединяет факты подписей от PDFium с инспекцией алгоритмов и политик CMS, статусом доверия и отзыва сертификатов, статусом меток времени RFC 3161, покрытием DSS/VRI и анализом политики инкрементных ревизий

Метод удерживает один неизменяемый снимок исходных байтов и повторно использует его на этапах соответствия, доверия, DSS и ревизий без пересохранения документа

Идентичности подписанта и упорядоченного пути сертификатов выдаются как значения SHA-256, а не копированием тел сертификатов в отчёт

Options

Result

TPadesEvidenceReport включает сводки проверки и ревизий, хешированные записи материалов DSS, графы ссылок VRI, счётчик подписей PDFium, состояние усечения и по одному TPadesSignatureEvidence на каждую удержанную подпись

ToJson выдаёт вложенный документ доказательств, а ToCsv выдаёт по строке на каждую удержанную ревизионную правку либо одну итоговую строку, когда у подписи нет удержанных правок

TPadesSignatureEvidence.Validation сохраняет RevocationReason и NativeRevocationError подписи независимо от TimeStampRevocationReason и NativeTimeStampRevocationError метки времени

Revocation export fields

Каждая запись JSON в signatures включает revocationReason, nativeRevocationError, timeStampSignatureStatus, timeStampTrustStatus, timeStampRevocationStatus, timeStampRevocationReason и nativeTimeStampRevocationError. Существующие члены и их смыслы не меняются; члена со схемой-версией в формате JSON нет, поэтому потребителям следует читать поля по именам и мириться с дополнительными членами

CSV сохраняет исходные 40 столбцов в исходном порядке и дописывает те же семь полей в перечисленном выше порядке — всего 47 столбцов. И итоговые строки, и строки ревизионных правок несут диагностику; существующие позиции столбцов не меняются. Читающим следует опираться на имена заголовков или терпеть дополнительные столбцы в конце, а не требовать ровно 40 столбцов

Строки причин — это none, certificateRevoked, crlExpired, crlNotYetValid, crlUnavailable, crlSignatureInvalid, crlInvalid, chainUntrusted или unknown. Нативные ошибки — числовые коды конкретного бэкенда, например ошибки проверки X509 в OpenSSL или сырые значения провайдера Windows либо DWORD из GetLastError, где ноль означает отсутствие нативной диагностики. Значения Windows экспортируются как есть, и их нельзя трактовать как агрегатные маски доверия цепочки или общее пространство HRESULT

Вердикт определяйте по revocationStatus и timeStampRevocationStatus. Причина none или нулевая ошибка встречаются и когда проверка выключена, не достигнута или лишена детальной диагностики бэкенда; экспорт доказательств не выполняет дополнительного прохода проверки

Remarks

Example

var
  Options: TPadesEvidenceReportOptions;
  Report: TPadesEvidenceReport;
begin
  Options := TPadesEvidenceReportOptions.Default;
  Report := Pdf1.BuildPadesEvidenceReport(Options);
  TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;

See Also

ValidatePadesTrust AnalyzeSignatureRevisions