VRI для подписи TimeStamp
У меня есть сомнения по поводу того, как создать запись VRI для метки времени, которая находится внутри подписи PAdES.
Предположим, что есть документ PDF с подписью, и эта подпись имеет временную метку для встраивания.
Пример:
\Sig
[...]
\Contents <1234567890ABCDEF[...]>
[...]
Type \DSS
\VRI <<
\Hash1 object1
\Hash2 object2
>>
[...]
Hash1 легко вычислить: это весь хэш подписи, включая метку времени ( 1234567890ABCDEF[...])
Но Hash2... Что я должен использовать для расчета? В документе ETSI это написано так (Профиль PAdES LTV - Часть 4 - V1.1.2 стр. 12):
Для подписи отметки времени это байты самой отметки времени, поскольку маркер отметки времени является подписанным объектом данных.
Но я должен сказать, что это не сильно помогло. Это время StampToken? Только содержание? Что такое "сама отметка времени"?
Кто-нибудь знает какой-либо документ, который разъясняет это? Ссылочная реализация
1 ответ
Определение, которое вы цитируете
Для подписи отметки времени это байты самой отметки времени, поскольку маркер отметки времени является подписанным объектом данных.
от ETSI TS, который первым определил pades структуры LTV.
Этот TS был заменен ETSI EN 319 142-1, где определение было переформулировано как:
Для подписей документов или подписей меток времени документа хешируемые байты должны быть байтами полной шестнадцатеричной строки в записи с ключом Содержимое связанного словаря подписи, содержащего объект двоичных данных в кодировке DER (например, PKCS#7, CMS). или объекты CAdES).
Таким образом, для отметок времени документа просто действуют так же, как для обычных подписей.
Кстати, эта же норма указывает:
Словарь VRI не должен использоваться. Включение словарных статей VRI необязательно. Все проверочные материалы, на которые есть ссылки в записях VRI, также упоминаются в записях DSS.
Таким образом, вам могут не понадобиться эти записи вообще.
Я только что понял, что ты должен
Существует документ в формате PDF с подписью, и эта подпись имеет временную метку для встраивания.
По общему признанию, встроенная метка времени не подпадает под приведенную выше цитату. Но на самом деле маркер времени является ContentInfo
обтекание объекта SignedData
объект, как обычный контейнер подписи CMS. Таким образом, маркер метки времени является объектом для хеширования.