diff options
Diffstat (limited to 'src/mailman_pgp/pgp/mime.py')
| -rw-r--r-- | src/mailman_pgp/pgp/mime.py | 60 |
1 files changed, 5 insertions, 55 deletions
diff --git a/src/mailman_pgp/pgp/mime.py b/src/mailman_pgp/pgp/mime.py index a791a1d..3674f85 100644 --- a/src/mailman_pgp/pgp/mime.py +++ b/src/mailman_pgp/pgp/mime.py @@ -21,7 +21,6 @@ from email import message_from_string from email.encoders import encode_7or8bit from email.iterators import walk from email.mime.application import MIMEApplication -from email.mime.multipart import MIMEMultipart from email.utils import collapse_rfc2231_value from mailman.email.message import Message, MultipartDigestMessage @@ -48,24 +47,15 @@ class MIMEWrapper: 'This is an OpenPGP/MIME signed message (RFC 4880 and 3156)' _encryption_preamble = \ 'This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)' - _multiple_signature_preamble = \ - 'This is an OpepPGP/MIME signed message' \ - '(RFC 4880, 3156 and draft-ietf-openpgp-multsig).\n' \ - 'see https://tools.ietf.org/html/draft-ietf-openpgp-multsig-02' \ - 'for more details.' - def __init__(self, msg, allow_draft_multisig=True): + def __init__(self, msg): """ Wrap the given message. :param msg: The message to wrap. :type msg: mailman.email.message.Message - :param allow_draft_multisig: Whether to allow creating multisigs as per - https://tools.ietf.org/html/draft-ietf-openpgp-multsig-02. - :type allow_draft_multisig: bool """ self.msg = msg - self.allow_draft_multisig = allow_draft_multisig def get_payload(self): yield self.msg.as_string() @@ -266,36 +256,6 @@ class MIMEWrapper: copy_headers(msg, out) return out - def _wrap_signed_multiple(self, msg, signature): - """ - As per https://tools.ietf.org/html/draft-ietf-openpgp-multsig-02. - - :param msg: - :param signature: - :return: - """ - micalg = ', '.join(self._micalg(sig.hash_algorithm) - for sig in signature) - out = MultipartDigestMessage('signed', micalg=micalg, - protocol=MIMEWrapper._signed_type) - out.preamble = MIMEWrapper._signature_preambleň - - second_part = MIMEMultipart() - for sig in signature: - sig_part = MIMEApplication(_data=str(sig), - _subtype=MIMEWrapper._signature_subtype, - _encoder=encode_7or8bit, - name='signature.asc') - sig_part.add_header('Content-Description', - 'OpenPGP digital signature') - sig_part.add_header('Content-Disposition', 'attachment', - filename='signature.asc') - second_part.attach(sig_part) - out.attach(copy.deepcopy(msg)) - out.attach(second_part) - copy_headers(msg, out) - return out - def sign(self, key, hash=None): """ Sign a message with key. @@ -307,15 +267,9 @@ class MIMEWrapper: :return: The signed message. :rtype: mailman.email.message.Message """ - if self.is_signed() and self.allow_draft_multisig: - payload = next(iter(self.get_signed())) - signature = next(iter(self.get_signature())) - signature |= key.sign(payload, hash=hash) - return self._wrap_signed_multiple(self.msg, signature) - else: - payload = next(iter(self.get_payload())) - signature = key.sign(payload, hash=hash) - return self._wrap_signed(self.msg, signature) + payload = next(iter(self.get_payload())) + signature = key.sign(payload, hash=hash) + return self._wrap_signed(self.msg, signature) def decrypt(self, key): """ @@ -335,11 +289,7 @@ class MIMEWrapper: out = message_from_string(dmsg, _class=Message) if decrypted.is_signed: - if len(decrypted.signatures) != 1 and self.allow_draft_multisig: - out = self._wrap_signed_multiple(out, - decrypted.detached_signature) - else: - out = self._wrap_signed(out, decrypted.signatures.pop()) + out = self._wrap_signed(out, decrypted.signatures.pop()) copy_headers(self.msg, out) return out |
