summaryrefslogtreecommitdiff
path: root/service/pixelated/extensions/incoming_decrypt_header.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/extensions/incoming_decrypt_header.py')
-rw-r--r--service/pixelated/extensions/incoming_decrypt_header.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/service/pixelated/extensions/incoming_decrypt_header.py b/service/pixelated/extensions/incoming_decrypt_header.py
new file mode 100644
index 00000000..2db5dd1d
--- /dev/null
+++ b/service/pixelated/extensions/incoming_decrypt_header.py
@@ -0,0 +1,35 @@
+import leap.mail.imap.fetch as fetch
+
+
+def mark_as_encrypted_inline(f):
+
+ def w(*args, **kwargs):
+ 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 = fetch.PGP_BEGIN not in msg.as_string() and fetch.PGP_END not 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_inline(fetch.LeapIncomingMail._maybe_decrypt_inline_encrypted_msg)
+fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg = mark_as_encrypted_multipart(fetch.LeapIncomingMail._decrypt_multipart_encrypted_msg)