Function: mml-secure-passphrase-callback
mml-secure-passphrase-callback is a byte-compiled function defined in
mml-sec.el.gz.
Signature
(mml-secure-passphrase-callback CONTEXT KEY-ID STANDARD)
Documentation
Ask for passphrase in CONTEXT for KEY-ID for STANDARD.
The passphrase is read and cached.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mml-sec.el.gz
(defun mml-secure-passphrase-callback (context key-id _standard)
"Ask for passphrase in CONTEXT for KEY-ID for STANDARD.
The passphrase is read and cached."
;; Based on mml2015-epg-passphrase-callback.
(if (eq key-id 'SYM)
(epa-passphrase-callback-function context key-id nil)
(let* ((password-cache-key-id
(if (eq key-id 'PIN)
"PIN"
key-id))
(entry (assoc key-id epg-user-id-alist))
(passphrase
(password-read
(if (eq key-id 'PIN)
"Passphrase for PIN: "
(if entry
(format "Passphrase for %s %s: " key-id (cdr entry))
(format "Passphrase for %s: " key-id)))
;; TODO: With mml-smime.el, password-cache-key-id is not passed
;; as argument to password-read.
;; Is that on purpose? If so, the following needs to be placed
;; inside an if statement.
password-cache-key-id)))
(when passphrase
(let ((password-cache-expiry (mml-secure-cache-expiry-interval
(epg-context-protocol context))))
;; FIXME test passphrase works before caching it.
(password-cache-add password-cache-key-id passphrase))
(mml-secure-add-secret-key-id password-cache-key-id)
(copy-sequence passphrase)))))