gpt4 book ai didi

python gnupg 验证文件

转载 作者:行者123 更新时间:2023-12-01 08:18:31 25 4
gpt4 key购买 nike

我不确定为什么这不起作用(Python 2.7.5) - 在临时目录中创建的文件我可以验证,但 python 不会。帮忙?

我不确定我是否使用了 gpg.verify_file 函数错误,或者我是否不理解告诉 python 我信任正在导入的 key 的正确方法,或者什么。当我打开 shell 并进入临时目录时,我可以根据 sig 验证文件,因此我知道它应该验证。

不幸的是,99% 的 Python GnuPG 示例都加密,而这不是。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
import gnupg
import tempfile
import shutil
from pprint import pprint

def getStartTlsPolicy():
policyURL = 'https://dl.eff.org/starttls-everywhere/policy.json'
policyASC = 'https://dl.eff.org/starttls-everywhere/policy.json.asc'
publicKEY = 'https://dl.eff.org/starttls-everywhere/public-key.txt'
try:
response = urllib2.urlopen(policyURL, timeout=5)
except:
return '{}'
try:
signature = urllib2.urlopen(policyASC, timeout=5)
except:
return '{}'
try:
keyblock = urllib2.urlopen(publicKEY, timeout=5)
except:
return '{}'
jsondata = response.read()
sigdata = signature.read()
keyfile = keyblock.read()
# GnuPG stuff here
dirpath = tempfile.mkdtemp()
gpg = gnupg.GPG(gnupghome=dirpath)
gpg.encoding = 'utf-8'
sigfile = open(dirpath + '/policy.json.asc', 'w+')
sigfile.write(sigdata)
jsonfile = open(dirpath + '/policy.json', 'w+')
jsonfile.write(jsondata)
jsonfile.close()
fingerlist = []
fingerlist.append('B693F33372E965D76D55368616EEA65D03326C9D')
gpg.import_keys(keyfile)
gpg.trust_keys(fingerlist, 'TRUST_FULLY')
verified = gpg.verify_file(sigfile, dirpath + '/policy.json', 'key_id=842AEA40C5BCD6E1')
if not verified:
print "signature verify failed"
public_keys = gpg.list_keys()
pprint(public_keys)
sigfile.close()
#shutil.rmtree(dirpath)
print dirpath
return '{}'
sigfile.close()
shutil.rmtree(dirpath)
return jsondata

jsondata = getStartTlsPolicy()
print jsondata

最佳答案

终于明白了。将签名写入文件是不够的,您必须关闭然后以只读模式重新打开它。为什么我不知道,但那是有效的。

关于python gnupg 验证文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com