質問: S/MIMEで受信したデータを平文化した後、OpenSSLを使って自分で メッセージダイジェストを求めて、改ざんがないかチェックをしたいと思います。 ただ、smime.p7sからメッセージダイジェストを求める手順がわかりませんでした。 OpenSSLでなくても構わないのですが、求め方を教えて頂けますか。 今のところ、以下の手順でメッセージダイジェストの取得を進めていました。 平文部分をdata.txt、署名部をsmime.p7sとしています。 1. 平文のメッセージダイジェスト > > % openssl sha1 data.txt > > > 2. 署名部のメッセージダイジェスト 64bitデコード > > % openssl enc -d -base64 -in smime.p7s -out smime64.p7s > > > ここから、smime64.p7sに含まれる署名の取得、電子証明書の取得、署名の復号(メッセージダイジェストの取得)と進める必要があるかと思いますが、進め方がわかりません。 以下を元に、含まれる証明書の表示までは手順がわかっています。似たような方法で署名も表示できるのではないかと思ったのですが、OpenSSLのコマンド一覧などを読んでもどれが該当するのかよくわかりませんでした。 smime.p7sをASN.1形式のファイルをGUIで参照できるaatool2などを元に確認しましたが、 どの箇所が署名にあたるのかわかりませんでした。ASN.1に関する知識もあまりないため、 以下などを確認していますが、署名データの箇所となる部分を見つけられませんでした。
回答: PKCS7 のデータ構造は、 に定義があります。ASN.1 になじみがないとデコードした結果とつきあわせるのは難しいかもしれません。