%E3%81%8B%E3%82%89%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%97%E3%82%92%E6%8A%BD%E5%87%BA.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
長さ 2165 のオフセット 19137 からデータを抽出しています (これはオフセット 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。