Fix hkp imports

This commit is contained in:
askiiart 2024-02-28 10:11:43 -06:00
parent 9487a90c31
commit e605917d7e
Signed by untrusted user who does not match committer: askiiart
GPG key ID: BC3800E55FB54D67

View file

@ -17,11 +17,11 @@ if 'gpg-email-helper' not in os.listdir(f'{XDG_DATA_HOME}'):
with open(f'{XDG_DATA_HOME}/gpg-email-helper/log', 'a') as log: with open(f'{XDG_DATA_HOME}/gpg-email-helper/log', 'a') as log:
log.write(f'\n\nRunning on {filename}\n') log.write(f'\n\nRunning on {filename}\n')
# Untested as I'm missing a real email with this done properly - is this even supported by anything?
if email.rfind('-----BEGIN PGP PUBLIC KEY BLOCK-----') != -1 and email.rfind('-----END PGP PUBLIC KEY BLOCK-----') != -1: if email.rfind('-----BEGIN PGP PUBLIC KEY BLOCK-----') != -1 and email.rfind('-----END PGP PUBLIC KEY BLOCK-----') != -1:
public_key = email[email.rfind( public_key = email[email.rfind(
'-----BEGIN PGP PUBLIC KEY BLOCK-----'):email.rfind('-----END PGP PUBLIC KEY BLOCK-----')+35] '-----BEGIN PGP PUBLIC KEY BLOCK-----'):email.rfind('-----END PGP PUBLIC KEY BLOCK-----')+35]
public_key = public_key.replace('=3D', '=') # quoted-printable attachments have the equals sign escaped as =3D apparently # quoted-printable attachments have the equals sign escaped as =3D apparently
public_key = public_key.replace('=3D', '=')
log.write( log.write(
f'Attempted to import key from email: {gpg.Context(armor=True).key_import(public_key.encode())}\n') f'Attempted to import key from email: {gpg.Context(armor=True).key_import(public_key.encode())}\n')
@ -82,10 +82,12 @@ with open(f'{XDG_DATA_HOME}/gpg-email-helper/log', 'a') as log:
pubkey = hkp4py.KeyServer( pubkey = hkp4py.KeyServer(
# This isn't perfect, it's a loose search # This isn't perfect, it's a loose search
# for example searching for 7C79FCBB8372E5DE5B17E09A90D4B9641E092971 on keyserver.ubuntu.com returns the wrong key. But it works 99% of the time. # for example searching for 7C79FCBB8372E5DE5B17E09A90D4B9641E092971 on keyserver.ubuntu.com returns the wrong key. But it works 99% of the time.
f'hkp://{server}').search(fingerprint) f'hkp://{server}').search(f'0x{fingerprint}')
if pubkey != None: if pubkey != None:
log.write(f'{pubkey}\n') import_result = gpg.Context().key_import(pubkey[0].key.encode())
gpg.Context().key_import(pubkey) log.write(
f'Attempted to import from {server}: {import_result}\n')
if type(import_result) == gpg.results.ImportResult:
break break
else: else:
log.write('None\n') log.write('None\n')