我对如何为PAdES签名中的时间戳创建VRI条目表示怀疑。
假设有一个带签名的pdf文档,这个签名有一个嵌入时间戳。
示例:
\Sig
[...]
\Contents <1234567890ABCDEF[...]>
[...]
Type \DSS
\VRI <<
\Hash1 object1
\Hash2 object2
>>
[...]
Hash1很容易计算:它是整个签名哈希,包括时间戳(1234567890ABCDEF [...])
但Hash2 ......我应该用它来计算它?在ETSI文件中,它是这样写的(PAdES LTV Profile - Part 4 - V1.1.2第12页):
对于时间戳的签名,它是时间戳本身的字节,因为时间戳令牌是带符号的数据对象
但我必须说这没有多大帮助。是timeStampToken吗?只有内容?什么是“时间戳本身”?
有没有人知道澄清这一点的任何文件?参考实施
答案 0 :(得分:1)
您引用的定义
对于时间戳签名,它是时间戳本身的字节,因为时间戳令牌是签名数据对象
来自ETSI TS,它首先定义了LTV结构。
此TS同时已被ETSI EN 319 142-1取代,其定义被重新制定为:
对于文档签名或文档时间戳签名,散列的字节应为 条目中的完整十六进制字符串,其中包含关联的签名词典的内容 包含签名的DER编码二进制数据对象(例如PKCS#7,CMS或CAdES对象)。
因此,对于文档时间戳,只需像常规签名一样进行。
顺便说一句,相同的规范指定:
不应使用VRI字典。包含VRI字典条目是可选的。所有验证 VRI条目中引用的材料也在DSS条目中引用
所以你可能根本不需要这些条目。
我刚才意识到你应该
有一个带有签名的pdf文档,此签名有一个嵌入时间戳。
嵌入式时间戳无疑不受上述引用的约束。但实际上,时间戳令牌是一个包裹ContentInfo
对象的SignedData
对象,就像常规的CMS签名容器一样。因此,时间戳令牌是要散列的对象。