aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/pgp/mime.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/pgp/mime.py')
-rw-r--r--src/mailman_pgp/pgp/mime.py25
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)