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          

長さ 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

関連情報