From 3eea7435edf68ee9694d2af8f6fff472829a5fd2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 28 Feb 2024 14:13:22 -0600 Subject: [PATCH] Fix quoted-printable signatures too --- gpg-email-helper.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/gpg-email-helper.py b/gpg-email-helper.py index 341f3f9..2cb7999 100644 --- a/gpg-email-helper.py +++ b/gpg-email-helper.py @@ -17,23 +17,33 @@ 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: log.write(f'\n\nRunning on {filename}\n') - if email.rfind('-----BEGIN PGP PUBLIC KEY BLOCK-----') != -1 and email.rfind('-----END PGP PUBLIC KEY BLOCK-----') != -1: - public_key = email[email.rfind( - '-----BEGIN PGP PUBLIC KEY BLOCK-----'):email.rfind('-----END PGP PUBLIC KEY BLOCK-----')+35] + if ( + email.rfind('-----BEGIN PGP PUBLIC KEY BLOCK-----') != -1 + and email.rfind('-----END PGP PUBLIC KEY BLOCK-----') != -1 + ): + public_key = email[ + email.rfind('-----BEGIN PGP PUBLIC KEY BLOCK-----') : email.rfind( + '-----END PGP PUBLIC KEY BLOCK-----' + ) + + 35 + ] # quoted-printable attachments have the equals sign escaped as =3D apparently public_key = public_key.replace('=3D', '=') 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' + ) elif ( email.rfind('-----BEGIN PGP SIGNATURE-----') != -1 and email.rfind('-----END PGP SIGNATURE-----') != -1 ): signature = email[ - email.rfind('-----BEGIN PGP SIGNATURE-----'): email.rfind( + email.rfind('-----BEGIN PGP SIGNATURE-----') : email.rfind( '-----END PGP SIGNATURE-----' - )+27 + ) + + 27 ] + signature.replace('=3D', '=') try: # Needed to skip geting the key if it already exists. @@ -82,11 +92,15 @@ with open(f'{XDG_DATA_HOME}/gpg-email-helper/log', 'a') as log: pubkey = hkp4py.KeyServer( # 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. - f'hkp://{server}').search(f'0x{fingerprint}') + f'hkp://{server}' + ).search(f'0x{fingerprint}') if pubkey != None: - import_result = gpg.Context().key_import(pubkey[0].key.encode()) + import_result = gpg.Context().key_import( + pubkey[0].key.encode() + ) log.write( - f'Attempted to import from {server}: {import_result}\n') + f'Attempted to import from {server}: {import_result}\n' + ) if type(import_result) == gpg.results.ImportResult: break else: