forked from Qortal/Brooklyn
33 lines
850 B
Python
33 lines
850 B
Python
#! /usr/bin/python
|
|
|
|
import sys, binascii
|
|
from subprocess import check_output
|
|
|
|
def get_gpg_public_key(keygrip):
|
|
result = check_output(["gpg-connect-agent", "READKEY %s" % keygrip, "/bye"])
|
|
key = ""
|
|
while True:
|
|
i = result.find('%')
|
|
if i < 0:
|
|
key += result
|
|
break
|
|
hex_str = result[i+1:i+3]
|
|
key += result[0:i]
|
|
key += chr(int(hex_str,16))
|
|
result = result[i+3:]
|
|
|
|
pos = key.index("D (10:public-key(3:rsa(1:n257:") + 31 # skip NUL too
|
|
pos_last = key.index(")(1:e3:")
|
|
key = key[pos:pos_last]
|
|
if len(key) != 256:
|
|
raise ValueError, binascii.hexlify(key)
|
|
return key
|
|
|
|
if __name__ == '__main__':
|
|
keygrip = sys.argv[1]
|
|
k = get_gpg_public_key(keygrip)
|
|
shorthand = keygrip[0:8] + ".bin"
|
|
f = open(shorthand,"w")
|
|
f.write(k)
|
|
f.close()
|