summaryrefslogtreecommitdiff
path: root/alot/db/message.py
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-03-05 12:17:50 +0100
committerAnton Khirnov <anton@khirnov.net>2020-03-05 13:51:46 +0100
commit54cac0fc755f79a6f5ab848233517e8f6afc52cb (patch)
treefa0ccd77efaa77d4a5f452d182f6229d7cb0a19c /alot/db/message.py
parentd4b8a1ccacda08c29ad93cdb344c6fc1debcac30 (diff)
db/message: remove unnecessary get_params()
Diffstat (limited to 'alot/db/message.py')
-rw-r--r--alot/db/message.py43
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