diff options
Diffstat (limited to 'src/mailman_pgp/pgp/mime.py')
| -rw-r--r-- | src/mailman_pgp/pgp/mime.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/mailman_pgp/pgp/mime.py b/src/mailman_pgp/pgp/mime.py index c702eb8..2801b0f 100644 --- a/src/mailman_pgp/pgp/mime.py +++ b/src/mailman_pgp/pgp/mime.py @@ -98,8 +98,13 @@ class MIMEWrapper: """ :return: + :rtype: typing.Generator[pgpy.PGPSignature] """ - yield self.msg.get_payload(1).get_payload() + try: + msg = PGPSignature.from_blob(self.msg.get_payload(1).get_payload()) + except: + return + yield msg def is_encrypted(self): """ @@ -130,8 +135,13 @@ class MIMEWrapper: """ :return: + :rtype: typing.Generator[pgpy.PGPMessage] """ - yield self.msg.get_payload(1).get_payload() + try: + msg = PGPMessage.from_blob(self.msg.get_payload(1).get_payload()) + except: + return + yield msg def is_keys(self): """ @@ -202,9 +212,8 @@ class MIMEWrapper: :return: The verified signature. :rtype: Generator[pgpy.types.SignatureVerification] """ - clear_text = self.msg.get_payload(0).as_string() - sig_text = self.msg.get_payload(1).get_payload() - signature = PGPSignature.from_blob(sig_text) + clear_text = next(iter(self.get_signed())) + signature = next(iter(self.get_signature())) yield key.verify(clear_text, signature) def _micalg(self, hash_algo): @@ -250,7 +259,7 @@ class MIMEWrapper: :return: The signed message. :rtype: mailman.email.message.Message """ - payload = self.msg.as_string() + payload = next(iter(self.get_payload())) signature = key.sign(payload, hash=hash) return self._wrap_signed(self.msg, signature) @@ -263,7 +272,7 @@ class MIMEWrapper: :return: The decrypted message. :rtype: mailman.email.message.Message """ - msg_text = self.msg.get_payload(1).get_payload() + msg_text = next(iter(self.get_encrypted())) pmsg = PGPMessage() pmsg.parse(msg_text) decrypted = key.decrypt(pmsg) @@ -357,7 +366,7 @@ class MIMEWrapper: if len(keys) == 0: raise ValueError('At least one key necessary.') - payload = self.msg.as_string() + payload = next(iter(self.get_payload())) pmsg = PGPMessage.new(payload) pmsg |= key.sign(pmsg, hash=hash) pmsg = self._encrypt(pmsg, *keys, cipher=cipher, **kwargs) |
