Commit b799cc27 authored by Philip K's avatar Philip K Committed by Lars Ingebrigtsen

Add support for the OpenPGP header to Emacs

* lisp/gnus/message.el (message-openpgp-header): New variable
(bug#39964).
(messasge-add-openpgp-header): New function to use it.
parent 289d6b22
......@@ -246,6 +246,11 @@ not.
** Message
*** Message now supports the OpenPGP header.
To generate these headers, add the new function
'messasge-add-openpgp-header' to 'message-send-hook'. The header will
be generated according to the new 'message-openpgp-header' variable.
---
*** A change to how Mail-Copies-To: never is handled.
If a user has specified Mail-Copies-To: never, and Message was asked
......
......@@ -2737,6 +2737,64 @@ systematically send encrypted emails when possible."
(when (message-all-epg-keys-available-p)
(mml-secure-message-sign-encrypt)))
(defcustom message-openpgp-header nil
"Specification for \"OpenPGP\" header.
Otherwise, the variable must be a
list with three elements, all strings:
- Key ID, in hexadecimal form
- Key URL or ASCII armoured key.
- Protection preference, one of: \"unprotected\", \"sign\",
\"encrypt\" or \"signencrypt\".
Each value may be nil, in which case it won't be inserted. If all
the values are nil, or `message-openpgp-header' is nil itself,
don't insert any header."
:type '(choice
(const nil :tag "Don't add OpenPGP header")
(list (choice (string :tag "ID")
(const nil :tag "No ID"))
(choice (string :tag "Key")
(const nil :tag "No Key"))
(choice (other nil :tag "None")
(const "unprotected" :tag "Unprotected")
(const "sign" :tag "Sign")
(const "encrypt" :tag "Encrypt")
(const "signencrypt" :tag "Sign and Encrypt"))))
:version "28.1")
(defun messasge-add-openpgp-header ()
"Add OpenPGP header to point to public key.
Header will be constructed as specified in `message-openpgp-header'.
Consider adding this function to `message-send-hook'."
;; See https://tools.ietf.org/html/draft-josefsson-openpgp-mailnews-header
(when (and message-openpgp-header
(or (nth 0 message-openpgp-header)
(nth 1 message-openpgp-header)
(nth 2 message-openpgp-header)))
(with-temp-buffer
(insert "OpenPGP: ")
;; add ID
(let (need-sep)
(when (nth 0 message-openpgp-header)
(insert "id=" (nth 0 message-openpgp-header))
(setq need-sep t))
;; add URL
(when (nth 1 message-openpgp-header)
(when need-sep (insert "; "))
(if (string-match-p ";")
(insert "url=\"" (nth 1 message-openpgp-header) "\"")
(insert "url=\"" (nth 1 message-openpgp-header) "\""))
(setq need-sep t))
;; add preference
(when (nth 2 message-openpgp-header)
(when need-sep (insert "; "))
(insert "preference=" (nth 2 message-openpgp-header))))
;; insert header
(message-add-header (buffer-string)))))
;;;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment