HPDFVerifyHeadlessCMS
HPDFHeadlessCMS верифицирует отсоединённые подписи CMS по TStream во владении вызывающего, используя OpenSSL 3 и общий валидатор ByteRange подписей
function HPDFVerifyHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;
Диапазон из двух элементов должен покрывать весь поток; диапазон из четырёх элементов начинается с нуля и исключает один непустой интервал, с упорядоченными ограниченными парами и безопасной к переполнению арифметикой
CMS должен содержать отсоединённое содержимое и хотя бы одного подписанта; верификатор аутентифицирует дайджест содержимого, подписанные атрибуты и каждого подписанта без агрегации всего источника, принимает замыкающее нулевое заполнение и отклоняет ненулевые хвостовые данные CMS
Владение источником остаётся у вызывающего, его позиция восстанавливается, а вызывающий должен обеспечить эксклюзивный последовательный доступ во время верификации
SignatureValid описывает криптографическую целостность; доверие сертификатам оценивается отдельно, только когда TrustedCAFile передаёт явные якоря доверия PEM
RequireCAdES требует аутентифицированной привязки сертификата подписанта ESS v1 или v2; хеш её сертификата и опциональные издатель и серийный номер должны идентифицировать реального подписанта независимо от доверия сертификату
Существующие атрибуты ESS проверяются даже при выключенном RequireCAdES; дубликаты атрибутов, множественные значения, испорченные последовательности и хвостовые байты ASN.1 отклоняются, а явные якоря доверия включают отдельный проход верификации цепочки сертификатов
Функция валидирует числовые диапазоны, но не связывает исключённый зазор с токеном Contents PDF; для проверки уровня документа используйте THPDFHeadlessDocument.VerifySignature
Загрузчик использует HOTPDF_OPENSSL_LIBRARY, когда задана, иначе libcrypto.so.3 на Linux или libcrypto-3.dll на Windows; runtime-библиотека должна совпадать с архитектурой процесса, а первая успешно загруженная библиотека остаётся активной до финализации модуля
Испорченный CMS, бюджеты, отсутствующие runtime-символы, сбои чтения источника и отмена возбуждают EHPDFHeadlessCMSError; некорректные подписи и недоверенные цепочки сертификатов возвращают явные ложные поля результата с деталями OpenSSL
Эта функция не загружает свидетельства отзыва, якоря доверия, метки времени или удалённые данные сертификатов и не устанавливает историческое время подписания