From c35150d99dfcddc5a519c14299bacc50f0a14c77 Mon Sep 17 00:00:00 2001 From: Bruno Wagner & Victor Shyba Date: Fri, 27 Feb 2015 19:16:39 -0300 Subject: X-Pixelated-encryption-status is now based on our checks For multipart mail, if a part is multipart/encrypted, we consider the mail encrypted For inline encrypted mail, we do the same that LEAP does, check the PGP armor. That means we can have all the states we need, they are: Not encrypted Successfully decrypted Failed decryption --- service/pixelated/support/ext_fetch.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'service/pixelated/support') diff --git a/service/pixelated/support/ext_fetch.py b/service/pixelated/support/ext_fetch.py index ab0def9f..3529a6e2 100644 --- a/service/pixelated/support/ext_fetch.py +++ b/service/pixelated/support/ext_fetch.py @@ -1,14 +1,35 @@ import leap.mail.imap.fetch as fetch -def mark_as_encrypted(f): +def mark_as_encrypted_inline(f): def w(*args, **kwargs): - msg, was_decrypted = f(*args) - msg.add_header('X-Pixelated-encryption-status', 'true' if was_decrypted else 'false') - return msg, was_decrypted + msg, valid_sign = f(*args) + is_encrypted = fetch.PGP_BEGIN in args[1].as_string() and fetch.PGP_END in args[1].as_string() + decrypted_successfully = not fetch.PGP_BEGIN in msg.as_string() and not fetch.PGP_END in msg.as_string() + + if not is_encrypted: + encrypted = 'false' + else: + if decrypted_successfully: + encrypted = 'true' + else: + encrypted = 'fail' + + msg.add_header('X-Pixelated-encryption-status', encrypted) + return msg, valid_sign + + return w + + +def mark_as_encrypted_multipart(f): + + def w(*args, **kwargs): + msg, valid_sign = f(*args) + msg.add_header('X-Pixelated-encryption-status', 'true') + return msg, valid_sign return w -fetch.LeapIncomingMail._maybe_decrypt_inline_encrypted_msg = mark_as_encrypted(fetch.LeapIncomingMail._maybe_decrypt_inline_encrypted_msg) -fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg = mark_as_encrypted(fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg) +fetch.LeapIncomingMail._maybe_decrypt_inline_encrypted_msg = mark_as_encrypted_inline(fetch.LeapIncomingMail._maybe_decrypt_inline_encrypted_msg) +fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg = mark_as_encrypted_multipart(fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg) -- cgit v1.2.3