summaryrefslogtreecommitdiff
path: root/service/pixelated/support
diff options
context:
space:
mode:
authorBruno Wagner & Victor Shyba <bwgpro+victor.shyba@gmail.com>2015-02-27 19:16:39 -0300
committerPixpoa pairing <pixpoapairing@pixelated-project.org>2015-02-27 19:23:09 -0300
commitc35150d99dfcddc5a519c14299bacc50f0a14c77 (patch)
treea523a8e7293ef870fc2d414a053322aaed6195be /service/pixelated/support
parentfab6c7e5e8021ec2e417a1c5d5c9fbe9d405b574 (diff)
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
Diffstat (limited to 'service/pixelated/support')
-rw-r--r--service/pixelated/support/ext_fetch.py33
1 files changed, 27 insertions, 6 deletions
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)