diff options
author | Duda Dornelles <ddornell@thoughtworks.com> | 2015-09-02 18:07:51 -0300 |
---|---|---|
committer | Duda Dornelles <ddornell@thoughtworks.com> | 2015-09-02 18:09:33 -0300 |
commit | 19cda9ca7aa1aca18f61ebf659fc490f8ad4c15a (patch) | |
tree | 96095e86fe90c5505a27f689d515be45146685d7 /service/pixelated/adapter | |
parent | d01d60d4d7e9b8bdc7d8741e2567e30c8d476c0b (diff) |
[feature] adding security_casing to LeapMail so we can show in the UI the signature and encryption status
Diffstat (limited to 'service/pixelated/adapter')
-rw-r--r-- | service/pixelated/adapter/mailstore/leap_mailstore.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index 993f413c..a27ce5c4 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -16,13 +16,13 @@ import base64 from email.header import decode_header import quopri -import re from uuid import uuid4 + +import re from leap.mail.adaptors.soledad import SoledadMailAdaptor, ContentDocWrapper from twisted.internet import defer from pixelated.adapter.mailstore.body_parser import BodyParser from pixelated.adapter.mailstore.mailstore import MailStore, underscore_uuid - from leap.mail.mail import Message from pixelated.adapter.model.mail import Mail, InputMail @@ -75,6 +75,26 @@ class LeapMail(Mail): return self._mailbox_name @property + def security_casing(self): + casing = dict(imprints=self._signature_information(), locks=[]) + if self._encrypted() == "decrypted": + casing["locks"] = [{"state": "valid"}] + return casing + + def _encrypted(self): + return self.headers.get("X-Leap-Encryption", "false") + + def _signature_information(self): + signature = self.headers.get("X-Leap-Signature", None) + if signature is None or signature.startswith("could not verify"): + return [{"state": "no_signature_information"}] + else: + if signature.startswith("valid"): + return [{"state": "valid", "seal": {"validity": "valid"}}] + else: + return [] + + @property def raw(self): result = u'' for k, v in self._headers.items(): @@ -107,6 +127,7 @@ class LeapMail(Mail): 'tags': self.tags, 'status': list(self.status), 'body': self._body, + 'security_casing': self.security_casing, 'textPlainBody': self._body, 'replying': self._replying_dict(), 'mailbox': self._mailbox_name.lower(), |