
我正在尋找如何從 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,您可以使用pyasn1加密。