diff options
author | Anton Khirnov <anton@khirnov.net> | 2020-03-05 12:17:50 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2020-03-05 13:51:46 +0100 |
commit | 54cac0fc755f79a6f5ab848233517e8f6afc52cb (patch) | |
tree | fa0ccd77efaa77d4a5f452d182f6229d7cb0a19c /alot/db/message.py | |
parent | d4b8a1ccacda08c29ad93cdb344c6fc1debcac30 (diff) |
db/message: remove unnecessary get_params()
Diffstat (limited to 'alot/db/message.py')
-rw-r--r-- | alot/db/message.py | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/alot/db/message.py b/alot/db/message.py index 7263c6fe..3cf89d7a 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -4,7 +4,9 @@ import email import email.charset as charset import email.policy +import logging import mailcap +import os import tempfile from datetime import datetime @@ -71,22 +73,7 @@ def _add_signature_headers(mail, sigs, error_msg): 'False' if (error_msg or not sig_known) else 'True') mail.add_header(X_SIGNATURE_MESSAGE_HEADER, msg) -def _get_params(mail, failobj=None, header='content-type', unquote=True): - '''Get Content-Type parameters as dict. - - RFC 2045 specifies that parameter names are case-insensitive, so - we normalize them here. - - :param mail: :class:`email.message.Message` - :param failobj: object to return if no such header is found - :param header: the header to search for parameters, default - :param unquote: unquote the values - :returns: a `dict` containing the parameters - ''' - failobj = failobj or [] - return {k.lower(): v for k, v in mail.get_params(failobj, header, unquote)} - -def _handle_signatures(original, message, params): +def _handle_signatures(original, message): """Shared code for handling message signatures. RFC 3156 is quite strict: @@ -99,8 +86,6 @@ def _handle_signatures(original, message, params): :type original: :class:`email.message.Message` :param message: The multipart/signed payload to verify :type message: :class:`email.message.Message` - :param params: the message parameters as returned by :func:`get_params` - :type params: dict[str, str] """ malformed = None if len(message.get_payload()) != 2: @@ -115,9 +100,9 @@ def _handle_signatures(original, message, params): # TODO: RFC 3156 says the alg has to be lower case, but I've seen a message # with 'PGP-'. maybe we should be more permissive here, or maybe not, this # is crypto stuff... - if not params.get('micalg', 'nothing').startswith('pgp-'): - malformed = 'expected micalg=pgp-..., got: {0}'.format( - params.get('micalg', 'nothing')) + micalg = message.get_param('micalg', '') + if not micalg.startswith('pgp-'): + malformed = 'expected micalg=pgp-..., got: {0}'.format(micalg) sigs = [] if not malformed: @@ -224,16 +209,14 @@ def _decrypted_message_from_bytes(bytestring, session_keys = None): del enc[X_SIGNATURE_MESSAGE_HEADER] if enc.is_multipart(): - p = _get_params(enc) - # handle OpenPGP signed data if (enc.get_content_subtype() == 'signed' and - p.get('protocol') == _APP_PGP_SIG): - _handle_signatures(enc, enc, p) + enc.get_param('protocol') == _APP_PGP_SIG): + _handle_signatures(enc, enc) # handle OpenPGP encrypted data elif (enc.get_content_subtype() == 'encrypted' and - p.get('protocol') == _APP_PGP_ENC and + enc.get_param('protocol') == _APP_PGP_ENC and 'Version: 1' in enc.get_payload(0).get_payload()): _handle_encrypted(enc, enc, session_keys) @@ -243,13 +226,11 @@ def _decrypted_message_from_bytes(bytestring, session_keys = None): sub = enc.get_payload(0) if sub.is_multipart(): - p = _get_params(sub) - if (sub.get_content_subtype() == 'signed' and - p.get('protocol') == _APP_PGP_SIG): - _handle_signatures(enc, sub, p) + sub.get_param('protocol') == _APP_PGP_SIG): + _handle_signatures(enc, sub) elif (sub.get_content_subtype() == 'encrypted' and - p.get('protocol') == _APP_PGP_ENC): + sub.get_param('protocol') == _APP_PGP_ENC): _handle_encrypted(enc, sub, session_keys) return enc |