1
私は完全に署名文字列のために働く次のコードを持っています。しかし、私は今、プログラム的に署名し、私はコマンドラインpythonとpyopensslを使用してファイル/ファイルオブジェクトに署名する
e.g. openssl dgst -sha1 –sign key.pem -out sig1 file.tar
にOpenSSLを使用したのと同じ方法でファイルの署名を取得する必要があります。
import OpenSSL
from OpenSSL import crypto
import base64
key_file = open("key.pem", "r")
key = key_file.read()
key_file.close()
password = "password"
if key.startswith('-----BEGIN '):
pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key, password)
else:
pkey = crypto.load_pkcs12(key, password).get_privatekey()
print pkey
data = "data"
sign = OpenSSL.crypto.sign(pkey, data, "sha256")
print sign
data_base64 = base64.b64encode(sign)
print data_base64
開いているファイルの場合とサインインしよう:
with open('file.tar', 'r') as the_file:
sign = OpenSSL.crypto.sign(pkey, the_file, "sha256")
the_file.write(sign)
the_file.close()
OpenSSLは、エラーがスローされます:
sign = OpenSSL.crypto.sign(pkey, the_file, "sha256")
TypeError: must be string or read-only buffer, not file
はどのようにファイルオブジェクトに署名することができますか?