如果我复制了一篇文章,请提前道歉(请指给我看,等等?):我看到了很多关于导出铠装密钥的文档/Q&a,但关于如何以字符串格式导入块的内容不多。我无法在python中直接使用以下命令在windows命令行上复制我可以执行的操作:
gpg2 --import <textfilecontaining public key block in python code below>
返回:
^{pr2}$我在python中使用了python-gnupg library,如下所示:
import gnupg, tempfile, shutil
pubkey = '''-----BEGIN PGP PUBLIC KEY BLOCK-----
xsBNBFVjnlIBCACibzXOLCiZiL2oyzYUaTOCkYnSUhymg3pdbfKtd4mpBa58xKBj
t1pTHVpw3Sk03wmzhM/Ndlt1AV2YhLv++83WKr+gAHFYFiCV/tnY8bx3HqvVoy8O
CfxWhw4QZK7+oYzVmJj8ZJm3ZjOC4pzuegNWlNLCUdZDx9OKlHVXLCX1iUbjdYWa
qKV6tdV8hZolkbyjedQgrpvoWyeSHHpwHF7yk4gNJWMMI5rpcssL7i6mMXb/sDzO
VaAtU5wiVducsOa01InRFf7QSTxoAm6Xy0PGv/k48M6xCALa9nY+BzlOv47jUT57
vilf4Szy9dKD0v9S0mQ+IHB+gNukWrnwtXx5ABEBAAHNFm5hbWUgKGNvbW1lbnQp
IDxlbUBpbD7CwHUEEwECACkFAlVjnlIJEINgJNgv009/AhsDAhkBBgsJCAcDAgYV
CAIJCgsEFgIDAQAAxqMIAFBHuBA8P1v8DtHonIK8Lx2qU23t8Mh68HBIkSjk2H7/
oO2cDWCw50jZ9D91PXOOyMPvBWV2IE3tARzCvnNGtzEFRtpIEtZ0cuctxeIF1id5
crfzdMDsmZyRHAOoZ9VtuD6mzj0ybQWMACb7eIHjZDCee3Slh3TVrLy06YRdq2I4
bjMOPePtK5xnIpHGpAXkB3IONxyITpSLKsA4hCeP7gVvm7r7TuQg1ygiUBlWbBYn
iE5ROzqZjG1s7dQNZK/riiU2umGqGuwAb2IPvNiyuGR3cIgRE4llXH/rLuUlspAp
o4nlxaz65VucmNbN1aMbDXLJVSqR1DuE00vEsL1AItI=
=XQoy
-----END PGP PUBLIC KEY BLOCK-----'''
"""that block, minus the enveloping triple-quotes,
is all that's inside the file I am importing at the commandline
"""
tempfolder = tempfile.mkdtemp()#creates a temp directory
try:
gpg = gnupg.GPG(homedir=tempfolder)
keyfile = tempfolder+"\\test.txt"#defining temp pubkey file
f = open(keyfile, 'w')
f.write(pubkey)#saves file with string content
f.close()
f = file(keyfile, 'r')
f.close()
importres = gpg.import_keys(keyfile)
print importres
print importres.results
currfingerprint = gpg.list_keys()
print currfingerprint
finally:
shutil.rmtree(tempfolder)#removes temp directory
返回:
<gnupg._parsers.ImportResult object at 0x00000000038A8400>
[{'status': 'No valid data found', 'fingerprint': None}]
[]
。。。我的Python实现似乎无法识别这种文件/字符串表示。不知是否有人能用Python给我指出正确的方向?我尝试过清除字符串内容(binascii.a2b_base64),但是没有用。我不想在这里使用bog标准subprocess。也许是一些软弱无力的压痕fessup?在
env=Windows10, Python 2.7
代码示例正在向
import_keys
传递包含密钥的文件名:但是,
^{pr2}$import_keys
函数不接受文件名并从该文件中读取。相反,它期望接收实际的密钥文件内容。例如,下面是一个简化版本的程序,它只将pubkey
直接传递给import_keys
,而不使用临时文件:此版本的输出为:
如果您需要从文件导入的内容,那么您需要编写一些额外的代码,首先将文件的内容读入一个变量,然后将其传递给
import_keys
。(或者,您可以回到subprocess
解决方案,直接调用gpg import
,如您所述)相关问题 更多 >
编程相关推荐