从 p7s(签名文件) 中提取时间戳

从 p7s(签名文件) 中提取时间戳

我想了解如何从 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

您可以使用awkgrep对必填signingTime字段进行过滤。

如果您不喜欢过滤 OpenSSL 的文本输出,还有其他更适合检查任何 ASN.1 结构内容的工具。例如,如果您精通 Python,您可以使用pyasn1crypto

相关内容