From 01b8ff8391b0b4206ad59d4f6b9c0f5cd50cafbc Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Wed, 15 Nov 2017 23:12:22 +0100 Subject: crypto: Use session-key to decrypt messages if present in the index notmuch caches the OpenPGP session keys if configured to do so. See index.decrypt on: https://notmuchmail.org/manpages/notmuch-config-1/ Using the cached session key decryption of messages can be done without the need of having the private OpenPGP key. There is some speed up on decryption, mostly notable on long encrypted threads. --- alot/db/message.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'alot/db/message.py') diff --git a/alot/db/message.py b/alot/db/message.py index 3c860cac..ae06acc6 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -54,6 +54,11 @@ class Message(object): self._attachments = None # will be read upon first use self._tags = set(msg.get_tags()) + self._session_keys = [] + for name, value in msg.get_properties("session-key", exact=True): + if name == "session-key": + self._session_keys.append(value) + try: sender = decode_header(msg.get_header('From')) if not sender: @@ -102,7 +107,8 @@ class Message(object): if not self._email: try: with open(path, 'rb') as f: - self._email = utils.decrypted_message_from_bytes(f.read()) + self._email = utils.decrypted_message_from_bytes( + f.read(), self._session_keys) except IOError: self._email = email.message_from_string( warning, policy=email.policy.SMTP) -- cgit v1.2.3