X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-crypto.el;h=c201d0d740360f7ba3ebde66e170ffebbddbe736;hp=6df1dd649ceb25eb8ec442f149fa442d2e281e09;hb=HEAD;hpb=df3fab18fe70ea750f6f06da30291c67de7e74f2 diff --git a/emacs/notmuch-crypto.el b/emacs/notmuch-crypto.el index 6df1dd64..a1cf3ddd 100644 --- a/emacs/notmuch-crypto.el +++ b/emacs/notmuch-crypto.el @@ -1,4 +1,4 @@ -;;; 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 ;; @@ -26,8 +26,10 @@ (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 @@ -46,7 +48,7 @@ mode." :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) @@ -55,6 +57,8 @@ mode." :type 'string :group 'notmuch-crypto) +;;; Faces + (defface notmuch-crypto-part-header '((((class color) (background dark)) @@ -96,15 +100,16 @@ mode." :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) @@ -114,21 +119,21 @@ by user FROM." (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)) @@ -159,14 +164,14 @@ by user FROM." (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. @@ -219,7 +224,7 @@ corresponding key when the status button is pressed." (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 @@ -235,9 +240,9 @@ corresponding key when the status button is pressed." (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))))) @@ -260,7 +265,7 @@ corresponding key when the status button is pressed." 'mouse-face 'notmuch-crypto-decryption) (insert "\n")) -;; +;;; _ (provide 'notmuch-crypto)