aboutsummaryrefslogtreecommitdiffhomepage
path: root/emacs
diff options
context:
space:
mode:
authorGravatar Jani Nikula <jani@nikula.org>2014-04-05 12:18:06 +0300
committerGravatar David Bremner <david@tethera.net>2014-04-12 22:37:03 -0300
commit30a0ed197efae461912138fb4e5f70849124fee3 (patch)
treebfb6357c913904104220fdb8a67148da7bcef6fa /emacs
parentb8327ab483a3f018b9c7c72502f2b30f8a80ccbe (diff)
emacs: sign/encrypt replies to signed/encrypted messages
This is a simple approach to improving security when replying to signed or encrypted messages. If the message being replied to was signed, add mml tag to sign the reply. If the message being replied to was encrypted, add mml tag to sign and encrypt the reply. This may need configuration; I for one might want to encrypt replies to encrypted messages, but not always sign replies to signed messages. This still includes a slight bug: if any mml tags are added, they are included in the region containing the quoted parts. Killing the region will kill the mml tags too.
Diffstat (limited to 'emacs')
-rw-r--r--emacs/notmuch-mua.el18
1 files changed, 16 insertions, 2 deletions
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index ba3ef275..bf6253fc 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -115,6 +115,15 @@ list."
(push header message-hidden-headers)))
notmuch-mua-hidden-headers))
+(defun notmuch-mua-reply-crypto (parts)
+ (loop for part in parts
+ if (notmuch-match-content-type (plist-get part :content-type) "multipart/signed")
+ do (mml-secure-message-sign)
+ else if (notmuch-match-content-type (plist-get part :content-type) "multipart/encrypted")
+ do (mml-secure-message-sign-encrypt)
+ else if (notmuch-match-content-type (plist-get part :content-type) "multipart/*")
+ do (notmuch-mua-reply-crypto (plist-get part :content))))
+
(defun notmuch-mua-get-quotable-parts (parts)
(loop for part in parts
if (notmuch-match-content-type (plist-get part :content-type) "multipart/alternative")
@@ -151,9 +160,10 @@ list."
(defun notmuch-mua-reply (query-string &optional sender reply-all)
(let ((args '("reply" "--format=sexp" "--format-version=1"))
+ (process-crypto notmuch-show-process-crypto)
reply
original)
- (when notmuch-show-process-crypto
+ (when process-crypto
(setq args (append args '("--decrypt"))))
(if reply-all
@@ -224,7 +234,11 @@ list."
(set-mark (point))
(goto-char start)
;; Quote the original message according to the user's configured style.
- (message-cite-original))))
+ (message-cite-original)))
+
+ ;; Sign and/or encrypt replies to signed and/or encrypted messages.
+ (when process-crypto
+ (notmuch-mua-reply-crypto (plist-get original :body))))
;; Push mark right before signature, if any.
(message-goto-signature)