HPDFSignHeadlessCMS
function HPDFSignHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): SysUtils.TBytes;
Функция подписывает объявленные диапазоны источника явным PEM-сертификатом и незашифрованным PEM-ключом через OpenSSL 3, возвращает DER CMS SignedData с отсоединённым контентом и восстанавливает позицию источника вызывающего
Источник читается инкрементально через тот же ограниченный BIO, что использует верификатор; PEM-вход и сгенерированный DER должны помещаться в MaxCMSBytes, а подписываемые диапазоны — в MaxSignedBytes
RequireCAdES добавляет атрибут ESS сертификата подписанта при генерации CMS; результат с требованием верификации CAdES валидируйте явным доверенным файлом CA
Приватные ключи остаются байтовыми массивами вызывающего; объект ключа OpenSSL освобождается после подписания, а функция никогда не запрашивает пароль ключа
Зашифрованные PEM-ключи, несовпадения сертификата и ключа, недопустимые диапазоны, отмена, ошибки runtime и сбои лимитов вывода вызывают EHPDFHeadlessCMSError
Этот примитив только генерирует CMS; он не создаёт поле подписи PDF, не резервирует место Contents, не публикует подписанный PDF и не обращается к службам меток времени и отзыва