從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,您可以使用pyasn1加密

相關內容