diff options
| author | J08nY | 2017-08-23 23:15:23 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-23 23:15:23 +0200 |
| commit | 024a2481dfe320b7e4604d8e3088d6b88dab7325 (patch) | |
| tree | 8e347edc1156290b89df312eb279dc0133a2523d /src/mailman_pgp/pgp | |
| parent | 77c2dc1feed19224e1884250341873b88444a041 (diff) | |
| download | mailman-pgp-024a2481dfe320b7e4604d8e3088d6b88dab7325.tar.gz mailman-pgp-024a2481dfe320b7e4604d8e3088d6b88dab7325.tar.zst mailman-pgp-024a2481dfe320b7e4604d8e3088d6b88dab7325.zip | |
Diffstat (limited to 'src/mailman_pgp/pgp')
| -rw-r--r-- | src/mailman_pgp/pgp/inline.py | 10 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/mime.py | 11 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/mime_multisig.py | 3 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/wrapper.py | 15 |
4 files changed, 39 insertions, 0 deletions
diff --git a/src/mailman_pgp/pgp/inline.py b/src/mailman_pgp/pgp/inline.py index 410078c..24809d2 100644 --- a/src/mailman_pgp/pgp/inline.py +++ b/src/mailman_pgp/pgp/inline.py @@ -95,6 +95,16 @@ class InlineWrapper(BaseWrapper): continue yield msg + def strip_signature(self): + for part in walk(self.msg): + if not part.is_multipart() and self._is_signed(part): + try: + msg = PGPMessage.from_blob(part.get_payload()) + except: + continue + part.set_payload(msg.message) + return self + def _is_encrypted(self, part): try: msg = PGPMessage.from_blob(part.get_payload()) diff --git a/src/mailman_pgp/pgp/mime.py b/src/mailman_pgp/pgp/mime.py index 9ea6384..47e1037 100644 --- a/src/mailman_pgp/pgp/mime.py +++ b/src/mailman_pgp/pgp/mime.py @@ -103,6 +103,17 @@ class MIMEWrapper(BaseWrapper): return yield sig + def strip_signature(self): + """ + + :return: + :rtype: MIMEWrapper + """ + inner = self.msg.get_payload(0) + copy_headers(inner, self.msg, True) + self.msg.set_payload(inner.get_payload()) + return self + def is_encrypted(self): """ Whether the whole message is MIME encrypted as per RFC3156 section 4. diff --git a/src/mailman_pgp/pgp/mime_multisig.py b/src/mailman_pgp/pgp/mime_multisig.py index fb06cad..88886c0 100644 --- a/src/mailman_pgp/pgp/mime_multisig.py +++ b/src/mailman_pgp/pgp/mime_multisig.py @@ -74,6 +74,9 @@ class MIMEMultiSigWrapper(MIMEWrapper): continue yield sig + def strip_signature(self): + pass + def sign(self, key, **kwargs): """ Sign a message with key. diff --git a/src/mailman_pgp/pgp/wrapper.py b/src/mailman_pgp/pgp/wrapper.py index f746229..fdb7eeb 100644 --- a/src/mailman_pgp/pgp/wrapper.py +++ b/src/mailman_pgp/pgp/wrapper.py @@ -112,6 +112,21 @@ class PGPWrapper(BaseWrapper): elif self.inline.is_signed(): yield from self.inline.get_signature() + def strip_signature(self): + """ + + :return: + :rtype: PGPWrapper + """ + result = None + if self.mime.is_signed(): + result = self.mime.strip_signature() + elif self.multisig.is_signed(): + result = self.multisig.strip_signature() + elif self.inline.is_signed(): + result = self.inline.strip_signature() + return self._rewrap(result) + def sign(self, key, **kwargs): """ Sign a message with key. |
