Нативные свидетельства валидации подписей

HPDFHeadlessLTV аутентифицирует цепочки сертификатов и свидетельства DER OCSP или CRL, прежде чем хранилище безопасности документа будет добавлено в подписанный PDF

AddSignatureValidationEvidence проверяет исходные ByteRanges PDF, подпись CMS, доверенную цепочку подписанта и обязательную метку времени подписи RFC3161, затем проверяет покрытие отзыва для каждого не-корневого сертификата в цепочках подписанта и TSA

Проверка OCSP сверяет подпись, цепочку и полномочия ответчика, полные идентификаторы сертификата issuer-name и issuer-key, серийные номера, статус good, producedAt, thisUpdate, nextUpdate и настроенные окна свежести; отозванные, неизвестные, посторонние, дублирующиеся, устаревшие, будущие или неаутентифицированные ответы отклоняются

Проверка CRL использует изолированное хранилище для каждого переданного списка издателей и сверяет издателя, подпись, охват, окно действия и статус отзыва сертификатов; более старый CRL, загруженный из другого источника, не может заменить реально переданные свидетельства

DSS в catalog содержит глобальные массивы Certs, OCSPs и CRLs с записью VRI, ссылающейся на проверенные свидетельства выбранной подписи; её ключ SHA-1 в верхнем регистре покрывает полную строку Contents, включая зарезервированное нулевое заполнение, как требуется для индекса VRI PDF

SHA-1 используется только для предписанного индекса VRI или переданного идентификатора сертификата OCSP; он не выбирает алгоритм подписи PDF-подписанта, TSA, ответчика или сертификата

Писатель сохраняет исходные подписанные байты и существующие записи DSS и добавляет инкрементальную ревизию; источники Standard AES-256 сохраняют шифрование для новых сгенерированных потоков свидетельств с учётом права на изменение или аутентификации владельца

Проверки доверия и свидетельств используют текущие часы верификации; этот API не устанавливает историческую валидацию после истечения сертификата и не добавляет метку времени документа, защищающую поздние ревизии DSS

Данные DSS, добавленные после подписи, находятся вне ByteRange этой подписи; аутентифицируйте встроенные свидетельства независимо при каждом использовании, а для аутентифицированной архивной ревизии применяйте более позднюю подпись или метку времени документа

Поведение ресурсов и сбоев

Явные доверенные корни от вызывающего обязательны, а требование метки времени по умолчанию равно True; инициализируйте THPDFHeadlessLTVOptions через Default

Лимиты байтов, объектов, декодированных потоков, вывода и отмены проверяются до публикации графа; отклонённые свидетельства оставляют документ без изменений, а SaveToFile публикует через существующий атомарный писатель

Приёмка

Run-HeadlessLTVTests.sh, Run-HeadlessLTVTests-Windows.cmd и Run-HeadlessLTVTests-Delphi.ps1 прогоняют реальные ответы OpenSSL OCSP, CRL, CMS и локальные ответы RFC3161 на Linux и Windows без десктопа и PDF-читалки

Verify-HeadlessLTV.py независимо проверяет подписи и идентификаторы свидетельств через cryptography, ссылки DSS/VRI через pypdf, исключение шифрования Contents подписи через MuPDF и точные ByteRanges PDF через OpenSSL