Нативные свидетельства валидации подписей
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