aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-07-27 17:30:51 +0200
committerJ08nY2017-07-27 17:30:51 +0200
commitc401f2c6cc5f0aa4c6de245dcf252d3bbcc920fd (patch)
treefd39f7101ce620ed75b0db20f8961c84c892b94a
parent6dfc81e703c4ed7518a6342b24abb16f104c17b6 (diff)
downloadmailman-pgp-c401f2c6cc5f0aa4c6de245dcf252d3bbcc920fd.tar.gz
mailman-pgp-c401f2c6cc5f0aa4c6de245dcf252d3bbcc920fd.tar.zst
mailman-pgp-c401f2c6cc5f0aa4c6de245dcf252d3bbcc920fd.zip
-rw-r--r--src/mailman_pgp/pgp/inline.py22
-rw-r--r--src/mailman_pgp/pgp/mime.py18
-rw-r--r--src/mailman_pgp/pgp/wrapper.py21
3 files changed, 61 insertions, 0 deletions
diff --git a/src/mailman_pgp/pgp/inline.py b/src/mailman_pgp/pgp/inline.py
index d505585..d2ea05e 100644
--- a/src/mailman_pgp/pgp/inline.py
+++ b/src/mailman_pgp/pgp/inline.py
@@ -75,6 +75,10 @@ class InlineWrapper:
return any(self._walk(self._is_signed))
def get_signed(self):
+ """
+
+ :return:
+ """
for part in walk(self.msg):
if not part.is_multipart() and self._is_signed(part):
try:
@@ -83,6 +87,15 @@ class InlineWrapper:
continue
yield msg
+ def get_signature(self):
+ """
+
+ :return:
+ """
+ for part in walk(self.msg):
+ if not part.is_multipart() and self._is_signed(part):
+ yield part.get_payload()
+
def _is_encrypted(self, part):
try:
msg = PGPMessage.from_blob(part.get_payload())
@@ -109,6 +122,15 @@ class InlineWrapper:
"""
return any(self._walk(self._is_encrypted))
+ def get_encrypted(self):
+ """
+
+ :return:
+ """
+ for part in walk(self.msg):
+ if not part.is_multipart() and self._is_encrypted(part):
+ yield part.get_payload()
+
def _has_keys(self, part):
try:
dearm = Armorable.ascii_unarmor(part.get_payload())
diff --git a/src/mailman_pgp/pgp/mime.py b/src/mailman_pgp/pgp/mime.py
index 9978b54..c702eb8 100644
--- a/src/mailman_pgp/pgp/mime.py
+++ b/src/mailman_pgp/pgp/mime.py
@@ -88,8 +88,19 @@ class MIMEWrapper:
return self.is_signed()
def get_signed(self):
+ """
+
+ :return:
+ """
yield self.msg.get_payload(0).as_string()
+ def get_signature(self):
+ """
+
+ :return:
+ """
+ yield self.msg.get_payload(1).get_payload()
+
def is_encrypted(self):
"""
Whether the whole message is MIME encrypted as per RFC3156 section 4.
@@ -115,6 +126,13 @@ class MIMEWrapper:
def has_encryption(self):
return self.is_encrypted()
+ def get_encrypted(self):
+ """
+
+ :return:
+ """
+ yield self.msg.get_payload(1).get_payload()
+
def is_keys(self):
"""
Whether the message has only keys as per RFC3156 section 7.
diff --git a/src/mailman_pgp/pgp/wrapper.py b/src/mailman_pgp/pgp/wrapper.py
index cbfa7f2..a1041ad 100644
--- a/src/mailman_pgp/pgp/wrapper.py
+++ b/src/mailman_pgp/pgp/wrapper.py
@@ -81,6 +81,16 @@ class PGPWrapper():
elif self.inline.is_signed():
yield from self.inline.get_signed()
+ def get_signature(self):
+ """
+
+ :return:
+ """
+ if self.mime.is_signed():
+ yield from self.mime.get_signature()
+ elif self.inline.is_signed():
+ yield from self.inline.get_signature()
+
def sign(self, key, **kwargs):
"""
Sign a message with key.
@@ -129,6 +139,17 @@ class PGPWrapper():
"""
return self.mime.has_encryption() or self.inline.has_encryption()
+
+ def get_encrypted(self):
+ """
+
+ :return:
+ """
+ if self.mime.is_signed():
+ yield from self.mime.get_encrypted()
+ elif self.inline.is_signed():
+ yield from self.inline.get_encrypted()
+
def encrypt(self, *keys, **kwargs):
"""
Encrypt the message with key/s, using cipher.