From c02c73fea4901edd4002c3a317295c252ae426ca Mon Sep 17 00:00:00 2001 From: Thais Siqueira Date: Tue, 24 Jan 2017 18:48:08 -0200 Subject: Returns doc as None if we have some error during the encryption When we had an error during encryption, the doc property "_enc_json" was empty and we were saving this empty data on CouchDb. Then it was causing the [GNUPG:] NODATA 2 error during decryption. Related with: https://github.com/pixelated/pixelated-user-agent/issues/908 with @tayanefernandes --- src/leap/mx/mail_receiver.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/leap/mx/mail_receiver.py b/src/leap/mx/mail_receiver.py index 7c5a368..b8eb2ae 100644 --- a/src/leap/mx/mail_receiver.py +++ b/src/leap/mx/mail_receiver.py @@ -202,14 +202,22 @@ class MailReceiver(Service): with openpgp.TempGPGWrapper(gpgbinary='/usr/bin/gpg') as gpg: gpg.import_keys(pubkey) key = gpg.list_keys().pop() + + encryption_result = gpg.encrypt( + json.dumps(data, ensure_ascii=False), + key["fingerprint"], + symmetric=False) + + if encryption_result.ok == False: + log.msg("_encrypt_message: Encryption Failed" + "Status: %r" % (encryption_result.status,)) + return None + doc.content = { self.INCOMING_KEY: True, self.ERROR_DECRYPTING_KEY: False, ENC_SCHEME_KEY: EncryptionSchemes.PUBKEY, - ENC_JSON_KEY: str(gpg.encrypt( - json.dumps(data, ensure_ascii=False), - key["fingerprint"], - symmetric=False)) + ENC_JSON_KEY: str(encryption_result) } return doc -- cgit v1.2.3