![从 p7s(签名文件) 中提取时间戳](https://linux22.com/image/761163/%E4%BB%8E%20p7s(%E7%AD%BE%E5%90%8D%E6%96%87%E4%BB%B6)%20%E4%B8%AD%E6%8F%90%E5%8F%96%E6%97%B6%E9%97%B4%E6%88%B3.png)
我想了解如何从 p7s 文件中提取时间戳信息(文件签名时)。
我目前正在通过 asn1parse 提取时间戳并使用字符串 (id-smime-aa-timeStampToken)
我解析的文件中的内容如下所示。
19120:d=7 hl=2 l= 11 prim: OBJECT :id-smime-aa-timeStampToken
19133:d=7 hl=4 l=2165 cons: SET
19137:d=8 hl=4 l=2161 cons: SEQUENCE
我正在从偏移量 19137 中提取长度为 2165 的数据(我假设它与偏移量 hl=4 l=2161 位于同一行),不确定是否正确,但我得到了正确的时间详细信息。
但是有没有办法直接从 p7s 中提取时间戳?
答案1
您可以使用 OpenSSL 的cms
命令查看已签名的 PKCS#7 文件的内容。假设您没有签名者的证书,因此不会验证签名而只是查看结构,则可以使用:
openssl cms -verify -noverify -cmsout -print -inform DER -in file.p7s
这将转储结构的详细信息,其中包括以下摘录:
signedAttrs:
object: contentType (1.2.840.113549.1.9.3)
set:
OBJECT:pkcs7-data (1.2.840.113549.1.7.1)
object: signingTime (1.2.840.113549.1.9.5)
set:
GENERALIZEDTIME:Aug 3 23:50:00 2020 GMT
您可以使用awk
或grep
对必填signingTime
字段进行过滤。
如果您不喜欢过滤 OpenSSL 的文本输出,还有其他更适合检查任何 ASN.1 结构内容的工具。例如,如果您精通 Python,您可以使用pyasn1crypto。