-;;; notmuch-crypto.el --- functions for handling display of cryptographic metadata.
+;;; notmuch-crypto.el --- functions for handling display of cryptographic metadata -*- lexical-binding: t -*-
;;
;; Copyright © Jameson Rollins
;;
(declare-function notmuch-show-get-message-id "notmuch-show" (&optional bare))
+;;; Options
+
(defcustom notmuch-crypto-process-mime t
- "Should cryptographic MIME parts be processed?
+ "Whether to process cryptographic MIME parts.
If this variable is non-nil signatures in multipart/signed
messages will be verified and multipart/encrypted parts will be
:group 'notmuch-crypto)
(defcustom notmuch-crypto-get-keys-asynchronously t
- "Retrieve gpg keys asynchronously."
+ "Whether to retrieve openpgp keys asynchronously."
:type 'boolean
:group 'notmuch-crypto)
:type 'string
:group 'notmuch-crypto)
+;;; Faces
+
(defface notmuch-crypto-part-header
'((((class color)
(background dark))
:group 'notmuch-crypto
:group 'notmuch-faces)
+;;; Functions
+
(define-button-type 'notmuch-crypto-status-button-type
- 'action (lambda (button) (message (button-get button 'help-echo)))
+ 'action (lambda (button) (message "%s" (button-get button 'help-echo)))
'follow-link t
'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts."
:supertype 'notmuch-button-type)
(defun notmuch-crypto-insert-sigstatus-button (sigstatus from)
- "Insert a button describing the signature status SIGSTATUS sent
-by user FROM."
+ "Insert a button describing the signature status SIGSTATUS sent by user FROM."
(let* ((status (plist-get sigstatus :status))
(show-button t)
(face 'notmuch-crypto-signature-unknown)
(cond
((string= status "good")
(let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint)))
- (userid (plist-get sigstatus :userid)))
- ;; If userid is present it has full or greater validity.
- (if userid
- (progn
- (setq label (concat "Good signature by: " userid))
- (setq face 'notmuch-crypto-signature-good))
- (setq label (concat "Good signature by key: " fingerprint))
- (setq face 'notmuch-crypto-signature-good-key))
+ (email-or-userid (or (plist-get sigstatus :email)
+ (plist-get sigstatus :userid))))
+ ;; If email or userid are present, they have full or greater validity.
+ (setq label (concat "Good signature by key: " fingerprint))
+ (setq face 'notmuch-crypto-signature-good-key)
+ (when email-or-userid
+ (setq label (concat "Good signature by: " email-or-userid))
+ (setq face 'notmuch-crypto-signature-good))
(setq button-action 'notmuch-crypto-sigstatus-good-callback)
(setq help-msg (concat "Click to list key ID 0x" fingerprint "."))))
((string= status "error")
(setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
(setq button-action 'notmuch-crypto-sigstatus-error-callback)
(setq help-msg (concat "Click to retrieve key ID " keyid
- " from keyserver.")))
+ " from key server.")))
((string= status "bad")
(setq label (concat "Bad signature (claimed key ID " keyid ")"))
(setq face 'notmuch-crypto-signature-bad))
(goto-char (point-max))
(insert (format "-- Key %s in message %s:\n"
fingerprint id))
- (call-process notmuch-crypto-gpg-program nil t t
+ (notmuch--call-process notmuch-crypto-gpg-program nil t t
"--batch" "--no-tty" "--list-keys" fingerprint))
(recenter -1))))
(declare-function notmuch-show-refresh-view "notmuch-show" (&optional reset-state))
(declare-function notmuch-show-get-message-id "notmuch-show" (&optional bare))
-(defun notmuch-crypto--async-key-sentinel (process event)
+(defun notmuch-crypto--async-key-sentinel (process _event)
"When the user asks for a GPG key to be retrieved
asynchronously, handle completion of that task.
(with-current-buffer buffer
(goto-char (point-max))
(insert (format "--- Retrieving key %s:\n" keyid)))
- (let ((p (make-process
+ (let ((p (notmuch--make-process
:name "notmuch GPG key retrieval"
:connection-type 'pipe
:buffer buffer
(with-current-buffer buffer
(goto-char (point-max))
(insert (format "--- Retrieving key %s:\n" keyid))
- (call-process notmuch-crypto-gpg-program nil t t "--recv-keys" keyid)
+ (notmuch--call-process notmuch-crypto-gpg-program nil t t "--recv-keys" keyid)
(insert "\n")
- (call-process notmuch-crypto-gpg-program nil t t "--list-keys" keyid))
+ (notmuch--call-process notmuch-crypto-gpg-program nil t t "--list-keys" keyid))
(recenter -1))
(notmuch-show-refresh-view)))))
'mouse-face 'notmuch-crypto-decryption)
(insert "\n"))
-;;
+;;; _
(provide 'notmuch-crypto)