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 и не обращается к службам меток времени и отзыва