我试图看看我是否可以让python-gnupg模块使用python脚本来签名和验证文件。我有以下代码,在调用时不解释任何错误。
然而,当我认为我已经签署了文件(example.txt
)时,代码最后打印出“未验证”。
我必须在文档中遗漏一些内容,但在我阅读之后,这就是我提出的用于签名和验证的内容。有什么帮助吗?
import gnupg
gpg = gnupg.GPG(gnupghome="/home/myname")
stream = open("example.txt", "rb")
signed_data = gpg.sign_file(stream)
verified = gpg.verify_file(stream)
print "Verified" if verified else "Unverified"
答案 0 :(得分:3)
您的代码存在一些问题,
1。)gpg = gnupg.GPG(gnupghome="/home/myname")
需要gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")
2.。)您正在尝试使用verify_file(stream)
验证流,但是流仍然是原始未签名文件的句柄。您首先需要将签名数据写入新文件,并针对该文件的句柄调用verify_file()
,或验证结果sign_file
。
下面是您的演示的一个工作示例,使用sign_file的结果 - 但在我们开始之前,解决脚本中发生的事情的方法,您可以在gnupg的返回对象上查看stderr的输出方法。例如,您可以通过打印signed_data.stderr
来查看已签名数据的结果。同样,返回verify_file
方法。
代码 -
import gnupg
gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")
stream = open("example.txt", "rb")
signed_data = gpg.sign_file(stream)
verified = gpg.verify(signed_data.data)
print "Verified" if verified else "Unverified"
我希望这有帮助!