summaryrefslogtreecommitdiff
path: root/mail/src/leap
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2013-08-08 14:47:49 -0300
committerTomás Touceda <chiiph@leap.se>2013-08-08 14:47:49 -0300
commit81c0e145c1664afa1c72468866c1eb9f6429d795 (patch)
treec263b29bc539b1348b42012d2bf0e5482ee7c1d3 /mail/src/leap
parent09a8dbd33e14950b15f090c0f54e1a33d2a4d826 (diff)
Decrypt double encrypted mail
Diffstat (limited to 'mail/src/leap')
-rw-r--r--mail/src/leap/mail/imap/fetch.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/mail/src/leap/mail/imap/fetch.py b/mail/src/leap/mail/imap/fetch.py
index f20c9967..9b76592f 100644
--- a/mail/src/leap/mail/imap/fetch.py
+++ b/mail/src/leap/mail/imap/fetch.py
@@ -168,8 +168,23 @@ class LeapIncomingMail(object):
return False
logger.debug('got incoming message: %s' % (rawmsg,))
- # add to inbox and delete from soledad
- self._inbox.addMessage(rawmsg, (self.RECENT_FLAG,))
- doc_id = doc.doc_id
- self._soledad.delete_doc(doc)
- log.msg("deleted doc %s from incoming" % doc_id)
+ try:
+ pgp_beg = "-----BEGIN PGP MESSAGE-----"
+ pgp_end = "-----END PGP MESSAGE-----"
+ if pgp_beg in rawmsg:
+ first = rawmsg.find(pgp_beg)
+ last = rawmsg.rfind(pgp_end)
+ pgp_message = rawmsg[first:first+last]
+
+ decrdata = (self._keymanager.decrypt(
+ pgp_message, self._pkey,
+ # XXX get from public method instead
+ passphrase=self._soledad._passphrase))
+ rawmsg = rawmsg.replace(pgp_message, decrdata)
+ # add to inbox and delete from soledad
+ self._inbox.addMessage(rawmsg, (self.RECENT_FLAG,))
+ doc_id = doc.doc_id
+ self._soledad.delete_doc(doc)
+ log.msg("deleted doc %s from incoming" % doc_id)
+ except Exception as e:
+ logger.error("Problem processing incoming mail: %r" % (e,))