diff options
| author | Tomás Touceda <chiiph@leap.se> | 2013-12-20 12:33:02 -0300 | 
|---|---|---|
| committer | Tomás Touceda <chiiph@leap.se> | 2013-12-20 12:33:02 -0300 | 
| commit | f7c0791687deee4a67a33ec0a34dc3b13888c62c (patch) | |
| tree | e89641e3eeff61a7202584dee692a6fbe5cdbbe4 | |
| parent | eabff1070531efaf30899fb13f66710233e04dd0 (diff) | |
| parent | aa69b820df0db9a277833a74927e315c083ccbaf (diff) | |
Merge remote-tracking branch 'refs/remotes/drebs/feature/4335_4671' into develop
| -rw-r--r-- | mail/changes/feature_4335_stop-providing-hostname-for-helo | 1 | ||||
| -rw-r--r-- | mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted | 1 | ||||
| -rw-r--r-- | mail/src/leap/mail/imap/fetch.py | 4 | ||||
| -rw-r--r-- | mail/src/leap/mail/smtp/gateway.py | 3 | ||||
| -rw-r--r-- | mail/src/leap/mail/smtp/rfc3156.py | 2 | ||||
| -rw-r--r-- | mail/src/leap/mail/smtp/tests/test_gateway.py | 15 | 
6 files changed, 17 insertions, 9 deletions
| diff --git a/mail/changes/feature_4335_stop-providing-hostname-for-helo b/mail/changes/feature_4335_stop-providing-hostname-for-helo new file mode 100644 index 00000000..f4b6c29e --- /dev/null +++ b/mail/changes/feature_4335_stop-providing-hostname-for-helo @@ -0,0 +1 @@ +  o Stop providing hostname for helo in smtp gateway (#4335). diff --git a/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted b/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted new file mode 100644 index 00000000..de3bb86d --- /dev/null +++ b/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted @@ -0,0 +1 @@ +  o Only try to fetch keys for multipart signed or encrypted emails (#4671). diff --git a/mail/src/leap/mail/imap/fetch.py b/mail/src/leap/mail/imap/fetch.py index f69681a5..b1c34ba5 100644 --- a/mail/src/leap/mail/imap/fetch.py +++ b/mail/src/leap/mail/imap/fetch.py @@ -389,7 +389,9 @@ class LeapIncomingMail(object):          # try to obtain sender public key          senderPubkey = None          fromHeader = msg.get('from', None) -        if fromHeader is not None: +        if fromHeader is not None \ +                and (msg.get_content_type() == 'multipart/encrypted' \ +                     or msg.get_content_type() == 'multipart/signed'):              _, senderAddress = parseaddr(fromHeader)              try:                  senderPubkey = self._keymanager.get_key_from_cache( diff --git a/mail/src/leap/mail/smtp/gateway.py b/mail/src/leap/mail/smtp/gateway.py index a24115b9..bef5c6d2 100644 --- a/mail/src/leap/mail/smtp/gateway.py +++ b/mail/src/leap/mail/smtp/gateway.py @@ -52,6 +52,7 @@ from leap.common.events import proto, signal  from leap.keymanager import KeyManager  from leap.keymanager.openpgp import OpenPGPKey  from leap.keymanager.errors import KeyNotFound +from leap.mail import __version__  from leap.mail.smtp.rfc3156 import (      MultipartSigned,      MultipartEncrypted, @@ -492,7 +493,7 @@ class EncryptedMessage(object):              heloFallback=True,              requireAuthentication=False,              requireTransportSecurity=True) -        factory.domain = LOCAL_FQDN +        factory.domain = __version__          signal(proto.SMTP_SEND_MESSAGE_START, self._user.dest.addrstr)          reactor.connectSSL(              self._host, self._port, factory, diff --git a/mail/src/leap/mail/smtp/rfc3156.py b/mail/src/leap/mail/smtp/rfc3156.py index b0288b4d..97395316 100644 --- a/mail/src/leap/mail/smtp/rfc3156.py +++ b/mail/src/leap/mail/smtp/rfc3156.py @@ -361,7 +361,7 @@ class PGPSignature(MIMEApplication):      """      def __init__(self, _data, name='signature.asc'):          MIMEApplication.__init__(self, _data, 'pgp-signature', -                                 encoder=lambda x: x, name=name) +                                 _encoder=lambda x: x, name=name)          self.add_header('Content-Description', 'OpenPGP Digital Signature') diff --git a/mail/src/leap/mail/smtp/tests/test_gateway.py b/mail/src/leap/mail/smtp/tests/test_gateway.py index 5b15b5b8..88ee5f70 100644 --- a/mail/src/leap/mail/smtp/tests/test_gateway.py +++ b/mail/src/leap/mail/smtp/tests/test_gateway.py @@ -137,7 +137,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):              self._config['port'], self._config['cert'], self._config['key'])          for line in self.EMAIL_DATA[4:12]:              m.lineReceived(line) -        m.eomReceived() +        #m.eomReceived()  # this includes a defer, so we avoid calling it here +        m.lines.append('')  # add a trailing newline          # we need to call the following explicitelly because it was deferred          # inside the previous method          m._maybe_encrypt_and_sign() @@ -157,7 +158,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):              m._msg.get_payload(1).get_payload(), privkey)          self.assertEqual(              '\n' + '\r\n'.join(self.EMAIL_DATA[9:12]) + '\r\n\r\n--\r\n' + -            'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n', +            'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',              decrypted,              'Decrypted text differs from plaintext.') @@ -180,7 +181,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):          for line in self.EMAIL_DATA[4:12]:              m.lineReceived(line)          # trigger encryption and signing -        m.eomReceived() +        #m.eomReceived()  # this includes a defer, so we avoid calling it here +        m.lines.append('')  # add a trailing newline          # we need to call the following explicitelly because it was deferred          # inside the previous method          m._maybe_encrypt_and_sign() @@ -202,7 +204,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):              m._msg.get_payload(1).get_payload(), privkey, verify=pubkey)          self.assertEqual(              '\n' + '\r\n'.join(self.EMAIL_DATA[9:12]) + '\r\n\r\n--\r\n' + -            'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n', +            'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',              decrypted,              'Decrypted text differs from plaintext.') @@ -227,7 +229,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):          for line in self.EMAIL_DATA[4:12]:              m.lineReceived(line)          # trigger signing -        m.eomReceived() +        #m.eomReceived()  # this includes a defer, so we avoid calling it here +        m.lines.append('')  # add a trailing newline          # we need to call the following explicitelly because it was deferred          # inside the previous method          m._maybe_encrypt_and_sign() @@ -240,7 +243,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):          # assert content of message          self.assertEqual(              '\r\n'.join(self.EMAIL_DATA[9:13]) + '\r\n--\r\n' + -            'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n', +            'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',              m._msg.get_payload(0).get_payload(decode=True))          # assert content of signature          self.assertTrue( | 
