]> rtime.felk.cvut.cz Git - notmuch.git/commitdiff
crypto: break out low-level crypto function into a separate crypto library
authorJameson Rollins <jrollins@finestructure.net>
Wed, 9 Mar 2011 08:58:54 +0000 (00:58 -0800)
committerJameson Graef Rollins <jrollins@finestructure.net>
Sun, 27 Mar 2011 05:49:05 +0000 (22:49 -0700)
There is a fairly clean feature separation here, and there will be
more crypto functions to come, so this seemed logical.

emacs/Makefile.local
emacs/notmuch-crypto.el [new file with mode: 0644]
emacs/notmuch-lib.el
emacs/notmuch-show.el

index 1c09d87aa8f33c2dd453392c2b7a15a346ae29d2..102277778a9902e4f1b978fdc541b3c00b5b4be5 100644 (file)
@@ -12,6 +12,7 @@ emacs_sources := \
        $(dir)/notmuch-address.el \
        $(dir)/notmuch-maildir-fcc.el \
        $(dir)/notmuch-message.el \
+       $(dir)/notmuch-crypto.el \
        $(dir)/coolj.el
 
 emacs_images := \
diff --git a/emacs/notmuch-crypto.el b/emacs/notmuch-crypto.el
new file mode 100644 (file)
index 0000000..f2171e4
--- /dev/null
@@ -0,0 +1,84 @@
+;; notmuch-crypto.el --- functions for handling display of cryptographic metadata.
+;;
+;; Copyright © Jameson Rollins
+;;
+;; This file is part of Notmuch.
+;;
+;; Notmuch is free software: you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; Notmuch is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with Notmuch.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;; Authors: Jameson Rollins <jrollins@finestructure.net>
+
+(defcustom notmuch-crypto-process-mime nil
+  "Should cryptographic MIME parts be processed?
+
+If this variable is non-nil signatures in multipart/signed
+messages will be verified and multipart/encrypted parts will be
+decrypted.  The result of the crypto operation will be displayed
+in a specially colored header button at the top of the processed
+part.  Signed parts will have variously colored headers depending
+on the success or failure of the verification process and on the
+validity of user ID of the signer.
+
+The effect of setting this variable can be seen temporarily by
+viewing a signed or encrypted message with M-RET in notmuch
+search."
+  :group 'notmuch
+  :type 'boolean)
+
+(define-button-type 'notmuch-crypto-status-button-type
+  'action '(lambda (button) (message (button-get button 'help-echo)))
+  'follow-link t
+  'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts."
+  'face '(:foreground "blue")
+  'mouse-face '(:foreground "blue"))
+
+(defun notmuch-crypto-insert-sigstatus-button (sigstatus from)
+  (let* ((status (plist-get sigstatus :status))
+        (help-msg nil)
+        (label "multipart/signed: signature not processed")
+        (face '(:background "red" :foreground "black")))
+    (cond
+     ((string= status "good")
+      ; if userid present, userid has full or greater validity
+      (if (plist-member sigstatus :userid)
+         (let ((userid (plist-get sigstatus :userid)))
+           (setq label (concat "Good signature by: " userid))
+           (setq face '(:background "green" :foreground "black")))
+       (let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint))))
+         (setq label (concat "Good signature by key: " fingerprint))
+         (setq face '(:background "orange" :foreground "black")))))
+     ((string= status "error")
+      (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
+       (setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
+       (setq face '(:background "red" :foreground "black"))))
+     ((string= status "bad")
+      (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
+       (setq label (concat "Bad signature (claimed key ID " keyid ")"))
+       (setq face '(:background "red" :foreground "black"))))
+     (t
+      (setq label "Unknown signature status")
+      (if status (setq label (concat label " \"" status "\"")))))
+    (insert-button
+     (concat "[ " label " ]")
+     :type 'notmuch-crypto-status-button-type
+     'help-echo help-msg
+     'face face
+     'mouse-face face
+     :notmuch-sigstatus sigstatus
+     :notmuch-from from)
+    (insert "\n")))
+
+;;
+
+(provide 'notmuch-crypto)
index ca609d3b29c83b9a3b7caebe7211ba0cd3e18530..dd180ee0d20a1a763a2a88f9ca559a38bbb637e0 100644 (file)
@@ -56,23 +56,6 @@ the user hasn't set this variable with the old or new value."
       '(("inbox" . "tag:inbox")
        ("unread" . "tag:unread")))))
 
-(defcustom notmuch-crypto-process-mime nil
-  "Should cryptographic MIME parts be processed?
-
-If this variable is non-nil signatures in multipart/signed
-messages will be verified and multipart/encrypted parts will be
-decrypted.  The result of the crypto operation will be displayed
-in a specially colored header button at the top of the processed
-part.  Signed parts will have variously colored headers depending
-on the success or failure of the verification process and on the
-validity of user ID of the signer.
-
-The effect of setting this variable can be seen temporarily by
-viewing a signed or encrypted message with M-RET in notmuch
-search."
-  :group 'notmuch
-  :type 'boolean)
-
 (defun notmuch-version ()
   "Return a string with the notmuch version number."
   (let ((long-string
index a30f345599ba0ecffb04b975a8c4eedcc6a6ca3e..da54763afd60a7d6e7fc79d08788d6a6e421fd6c 100644 (file)
@@ -32,6 +32,7 @@
 (require 'notmuch-query)
 (require 'notmuch-wash)
 (require 'notmuch-mua)
+(require 'notmuch-crypto)
 
 (declare-function notmuch-call-notmuch-process "notmuch" (&rest args))
 (declare-function notmuch-fontify-headers "notmuch" nil)
@@ -440,57 +441,14 @@ current buffer, if possible."
       (indent-rigidly start (point) 1)))
   t)
 
-(define-button-type 'notmuch-show-sigstatus-button-type
-  'action '(lambda (button) (message (button-get button 'help-echo)))
-  'follow-link t
-  'help-echo "Set notmuch-crypto-process-mime for automatic signature verification."
-  'face '(:foreground "blue")
-  'mouse-face '(:foreground "blue"))
-
-(defun notmuch-show-insert-sigstatus-header (sigstatus from)
-  (let* ((status (plist-get sigstatus :status))
-        (help-msg nil)
-        (label "multipart/signed: signature not processed")
-        (face '(:background "red" :foreground "black")))
-    (cond
-     ((string= status "good")
-      ; if userid present, userid has full or greater validity
-      (if (plist-member sigstatus :userid)
-         (let ((userid (plist-get sigstatus :userid)))
-           (setq label (concat "Good signature by: " userid))
-           (setq face '(:background "green" :foreground "black")))
-       (let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint))))
-         (setq label (concat "Good signature by key: " fingerprint))
-         (setq face '(:background "orange" :foreground "black")))))
-     ((string= status "error")
-      (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
-       (setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
-       (setq face '(:background "red" :foreground "black"))))
-     ((string= status "bad")
-      (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
-       (setq label (concat "Bad signature (claimed key ID " keyid ")"))
-       (setq face '(:background "red" :foreground "black"))))
-     (t
-      (setq label "Unknown signature status")
-      (if status (setq label (concat label " \"" status "\"")))))
-    (insert-button
-     (concat "[ " label " ]")
-     :type 'notmuch-show-sigstatus-button-type
-     'help-echo help-msg
-     'face face
-     'mouse-face face
-     :notmuch-sigstatus sigstatus
-     :notmuch-from from)
-    (insert "\n")))
-
 (defun notmuch-show-insert-part-multipart/signed (msg part content-type nth depth declared-type)
   (if (plist-member part :sigstatus)
       (let* ((headers (plist-get msg :headers))
             (from (plist-get headers :From))
             (sigstatus (car (plist-get part :sigstatus))))
-       (notmuch-show-insert-sigstatus-header sigstatus from))
+       (notmuch-crypto-insert-sigstatus-button sigstatus from))
     (insert-button "[ multipart/signed ]\n"
-                  :type 'notmuch-show-sigstatus-button-type))
+                  :type 'notmuch-crypto-status-button-type))
 
   (let ((inner-parts (plist-get part :content))
        (start (point)))
@@ -530,7 +488,7 @@ current buffer, if possible."
             (from (plist-get headers :From))
             (sigstatus (car (plist-get part :sigstatus))))
        (if (plist-member sigstatus :status)
-           (notmuch-show-insert-sigstatus-header sigstatus from))))
+           (notmuch-crypto-insert-sigstatus-button sigstatus from))))
 
   (let ((inner-parts (plist-get part :content))
        (start (point)))