Preflight профилей PAdES с адресацией по пунктам

THotPDF.PreflightLoadedPAdES оценивает загруженную подпись по одному кумулятивному базовому или расширенному профилю PAdES и возвращает каждое применимое требование, включая успешные проверки, с привязкой к пункту стандарта и доказательствам в PDF

Поддерживаемые цели

Базовые цели — palBaseline_B_B, palBaseline_B_T, palBaseline_B_LT и palBaseline_B_LTA; расширенные — palExtended_E_BES, palExtended_E_EPES и palExtended_E_LTV

Обобщённое значение palLegacy_adbePkcs7 профилем PAdES не является и как цель отклоняется

Контракт проверки

Перегрузка для stream сохраняет позицию источника, принадлежащую вызывающему коду, а перегрузка для файла заново открывает источник, использованный в LoadFromFile. Значение функции True означает, что проверка завершилась; соответствие профилю проверяйте через THPDFPAdESPreflightReport.Compliant

var
  Report: THPDFPAdESPreflightReport;
  Requirement: THPDFPAdESPreflightRequirement;
begin
  PDF.LoadFromFile('Signed.pdf');
  if not PDF.PreflightLoadedPAdES(0, palBaseline_B_LT, Report) then
    raise Exception.Create(string(Report.Issue));

  for Requirement in Report.Requirements do
    WriteLn(string(Requirement.RuleID), ': ',
      BoolToStr(Requirement.Passed, True), ' at ',
      string(Requirement.Clause), ' object ',
      Requirement.ObjectNumber, ' revision ',
      Requirement.RevisionIndex);
end;

Проверяемые доказательства

Базовые и расширенные проверки инспектируют словарь подписи, полное покрытие /ByteRange, валидность подписи CMS, мощность подписанных атрибутов, content type, message digest, ограничения времени подписания, /M, /Filter, /SubFilter, /Reason и запрещённые записи /Cert

Проверки ESS signing-certificate и signing-certificate-v2 хешируют фактический сертификат подписанта и требуют совпадающую ссылку ESSCertID, а не принимают атрибут лишь по имени

Более высокие уровни дополнительно инспектируют валидные timestamp подписи или документа, массивы сертификатов и отзывов DSS, ревизию, добавившую материал валидации, и покрывает ли более поздний timestamp документа ту ревизию DSS

Структурированные находки

Каждый THPDFPAdESPreflightRequirement сообщает вводящий его Profile, нормативный Level, стабильный RuleID, Clause, путь в PDF (Path), ObjectNumber, RevisionIndex, статус Passed и диагностическое Message

FailedRequirementCount считает проваленные правила уровня shall, а WarningCount — несоблюдённые рекомендации уровня should. HighestConformingProfile называет наивысший кумулятивный прошедший проверку профиль и имеет смысл только при истинном HasConformingProfile

См. Валидацию политики подписи PAdES, Пакетную валидацию подписей и Получение доказательств подписи