Wanderlust: easily decrypt an inline-encrypted GPG/PGP message

Christian Kruse

As I recently switched to Emacs, I noticed that there seems to be no easy way to decrypt an inline-encrypted message. You basically have to switch to the message buffer, select the encryption block and call (manually) wl-message-decrypt-pgp-nonmime. This makes sense as one can encrypt only parts (plural, yes – a message may contain multiple encrypted blocks) of the message. But the default case for me is that the whole message is encrypted. Thus I created a small snippet for exactly this task:

<pre class=”brush: elisp”>(defun ck-message-decrypt-pgp-nonmime() (interactive) (if (and wl-message-buffer (get-buffer-window wl-message-buffer)) (let ((start) (ends)) (wl-summary-toggle-disp-msg ‘on) (save-excursion (set-buffer wl-message-buffer) (goto-char (point-min)) (re-search-forward “^—–BEGIN PGP MESSAGE—–$”) (setq start (point)) (goto-char (point-min)) (re-search-forward “^—–END PGP MESSAGE—–$”) (setq ends (point)) (goto-char start) (set-mark-command nil) (goto-char ends) (wl-message-decrypt-pgp-nonmime))) (message “no message to decrypt”)))(define-key wl-summary-mode-map (kbd “C-c d”) ‘ck-message-decrypt-pgp-nonmime)</pre></code><p> This opens a message (if not yet opened), searches for the first PGP block, marks it and decrypts it.</p>