SetPAdESSignatureTimeStampToken

Безопасность и подписи

Описание

Валидирует DER-кодированный TimeStampToken RFC 3161 и внедряет его как неподписанный атрибут id-aa-signatureTimeStampToken на выбранном SignerInfo CMS

Метод проверяет подпись токена, требует, чтобы единственное критичное расширенное назначение ключа было timeStamping, при наличии проверяет закодированное имя TSA и сравнивает отпечаток сообщения токена с настроенным дайджестом значения signatureValue подписанта

Существующие атрибуты метки времени подписи у выбранного подписанта заменяются, несвязанные неподписанные атрибуты сохраняются, а пересобранный набор атрибутов сортируется по DER

Синтаксис

Delphi

Function TPDFlib.SetPAdESSignatureTimeStampToken(STSProcessID: Integer;
  Const TimeStampTokenDER: AnsiString; SignerIndex: Integer= 0): Integer;

Параметры

STSProcessIDЗначение, возвращаемое одной из функций NewPAdESSignatureTimeStampProcessFrom*
TimeStampTokenDERПолный DER-кодированный TimeStampToken RFC 3161, возвращённый TSA
SignerIndexИндекс подписанта CMS с отсчетом от нуля, по умолчанию первый подписант

Возвращаемые значения

0Недопустимый идентификатор процесса
1Токен проверен и внедрён
11Недопустимы токен, CMS, выбранный подписант, ограничения TSA или отпечаток сообщения
OtherИсходный PDF или выбранную подпись не удалось подготовить, как сообщает GetPAdESSignatureTimeStampProcessResult

Рабочий процесс

  1. Зарезервируйте достаточно места под содержимое подписи через SetSignProcessReserveContentsBytes до создания исходной подписи
  2. Создайте процесс метки времени и выберите поле подписи и алгоритм дайджеста
  3. Вызовите GetPAdESSignatureValueHashHex и отправьте этот отпечаток сообщения в TSA
  4. Передайте возвращенный TimeStampToken в этот метод
  5. Завершите методом EndPAdESSignatureTimeStampProcessTo*

Библиотека проверяет и переписывает CMS, но HTTP-запрос к TSA не выполняет

См. также

GetPAdESSignatureValueHashHex, SetPAdESSignatureTimeStampDigestAlgorithm, SetSignProcessReserveContentsBytes, TPDFlibSignatureVerifier