私のコンテンツはタイムスタンプを取得しようとしていますので、いつ変更されたのか分かりました。最初に私はシェルスクリプトを使用しましたが、私はそれを私のpythonプログラムに実装したいと思います。シェルスクリプトは今はうまく動作しますが、私のために動作するPythonのバージョンを手に入れることはできません。 これは私がrfc3161 packageでこれを模倣しようとしましたが、期待通りの検証を行っていない作業シェルバージョンpython rfc3161の検証に失敗しましたが、opensslの検証はOKです
in_file='test_content'
out_file="${in_file}.tsr"
ts_server='http://time.certum.pl/'
openssl ts -query -data "$in_file" -sha1 -cert | curl -o "$out_file" -sSH 'Content-Type: application/timestamp-query' --data-binary @- "$ts_server"
openssl ts -verify -data "$in_file" -in "$out_file" -CAfile "/usr/lib/ssl/certs/Certum_Trusted_Network_CA.pem"
openssl ts -reply -in "$out_file" -text
です。これはPythonコード
import rfc3161
cert = file('/usr/lib/ssl/certs/Certum_Trusted_Network_CA.pem').read()
rt = rfc3161.RemoteTimestamper('http://time.certum.pl/', certificate=cert)
data_to_sign = file('test_content').read()
print rt.timestamp(data=data_to_sign)
>>> (False, 'Bad signature')
どちらのスクリプトも同じことをする必要があるので、私は何が間違っているのか分かりません。誰かが私に、pythonバージョンの何が間違っているかの手がかりを与えることができますか?
私はまず証明書を検証し、次にTSAの回答を検証する必要があります。元の投稿に追加します。ありがとう – melanholly