From 81bca8ccae987a8c93e3d18342482814f94fb853 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 31 Mar 2022 02:26:13 +0200 Subject: [PATCH] Try to detect some more stranges cases --- envelope.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/envelope.py b/envelope.py index d599df7..cc1d68d 100644 --- a/envelope.py +++ b/envelope.py @@ -115,11 +115,21 @@ def check(msg, GNUPG_DIRECTORY, accept_public_key=True, beta=False): yield MailTest("Standalone non-armored signature file discovered. Avoid using binary signature over SMTP (see RFC2015 #2. PGP data formats).", 2) yield (part.get_payload(decode=True), lpart.get_payload(decode=True)) - elif part.get_filename() is not None and (part.get_filename()[len(part.get_filename())-4:] == ".gpg" or part.get_filename()[len(part.get_filename())-4:] == ".asc") or ( - payload is not None and not part.is_multipart() and part.get_payload(decode=True).find(b"-----BEGIN PGP MESSAGE-----") >= 0): + elif payload is not None and not part.is_multipart() and part.get_payload(decode=True).find(b"-----BEGIN PGP MESSAGE-----") >= 0: yield MailTest("Standalone PGP message discovered.") yield part.get_payload(decode=True) + elif part.get_filename() is not None and (part.get_filename()[len(part.get_filename())-4:] == ".gpg" or part.get_filename()[len(part.get_filename())-4:] == ".asc"): + yield MailTest("Standalone PGP message discovered with mismatched content-type: %s. This can lead to unexpected behaviour." % part.get_content_type(), 2) + data = part.get_payload(decode=True) + + mime = _guess_mime(data) + if mime == "application/octet-stream": + yield MailTest("Non-armored file discovered. Avoid using binary PGP message over SMTP (see RFC2015 #2. PGP data formats).", 2) + yield MailTest("Falling back to default automation as nothing helped. Be warned it'll most likely failed.", 2) + + yield data + lpart = part def skip(msg, gpgmail):