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, Пакетную валидацию подписей и Получение доказательств подписи