* mml2015.el (mml2015-signers): New user option.
authorDaiki Ueno <ueno@unixuser.org>
Fri, 28 Jul 2006 02:44:47 +0000 (02:44 +0000)
committerDaiki Ueno <ueno@unixuser.org>
Fri, 28 Jul 2006 02:44:47 +0000 (02:44 +0000)
(mml2015-epg-sign): Reflect the value of mml2015-signers.
(mml2015-epg-encrypt): Allow to select signing keys.

* mml1991.el (mml1991-signers): New variable.
(mml1991-epg-sign): Reflect the value of mml1991-signers.
(mml1991-epg-encrypt): Allow to select signing keys.

lisp/ChangeLog
lisp/mml1991.el
lisp/mml2015.el

index 0c498ce..6146140 100644 (file)
@@ -1,3 +1,13 @@
+2006-07-28  Daiki Ueno  <ueno@unixuser.org>
+
+       * mml2015.el (mml2015-signers): New user option.
+       (mml2015-epg-sign): Reflect the value of mml2015-signers.
+       (mml2015-epg-encrypt): Allow to select signing keys.
+
+       * mml1991.el (mml1991-signers): New variable.
+       (mml1991-epg-sign): Reflect the value of mml1991-signers.
+       (mml1991-epg-encrypt): Allow to select signing keys.
+
 2006-07-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * nnheader.el (nnheader-insert-head): Make it work even if the file
index ca7f5b9..44e8c66 100644 (file)
@@ -64,6 +64,9 @@
 Whether the passphrase is cached at all is controlled by
 `mml1991-cache-passphrase'.")
 
+(defvar mml1991-signers nil
+  "A list of key ID which will be used to sign a message.")
+
 ;;; mailcrypt wrapper
 
 (eval-and-compile
@@ -356,10 +359,11 @@ Whether the passphrase is cached at all is controlled by
     (if mml1991-verbose
        (setq signers (epa-select-keys context "Select keys for signing.
 If no one is selected, default secret key is used.  "
-                                      nil t))
-      (setq signers (list (car (epg-list-keys
-                               context
-                               (message-options-get 'mml-sender) t)))))
+                                      mml1991-signers t))
+      (setq signers (mapcar (lambda (name)
+                             (car (epg-list-keys context name t)))
+                           (or mml1991-signers
+                               (list (message-options-get 'mml-sender))))))
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)
     (epg-context-set-signers context signers)
@@ -414,7 +418,7 @@ If no one is selected, default secret key is used.  "
       (when cte
        (mm-decode-content-transfer-encoding (intern (downcase cte))))))
   (let ((context (epg-make-context))
-       recipients cipher)
+       recipients cipher signers)
     (if (or mml1991-verbose
            (null (message-options-get 'message-recipients)))
        (setq recipients
@@ -430,6 +434,16 @@ If no one is selected, symmetric encryption will be performed.  "
                    (split-string
                     (message-options-get 'message-recipients)
                     "[ \f\t\n\r\v,]+"))))
+    (when sign
+      (if mml1991-verbose
+         (setq signers (epa-select-keys context "Select keys for signing.
+If no one is selected, default secret key is used.  "
+                                        mml1991-signers t))
+       (setq signers (mapcar (lambda (name)
+                               (car (epg-list-keys context name t)))
+                             (or mml1991-signers
+                                 (list (message-options-get 'mml-sender))))))
+      (epg-context-set-signers context signers))
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)
     (if mml1991-cache-passphrase
index 35d025a..54d5f35 100644 (file)
@@ -120,6 +120,11 @@ Whether the passphrase is cached at all is controlled by
   :group 'mime-security
   :type 'integer)
 
+(defcustom mml2015-signers nil
+  "A list of key ID which will be used to sign a message."
+  :group 'mime-security
+  :type '(repeat (string :tag "Key ID")))
+
 ;;; mailcrypt wrapper
 
 (eval-and-compile
@@ -1106,10 +1111,11 @@ Whether the passphrase is cached at all is controlled by
     (if mml2015-verbose
        (setq signers (epa-select-keys context "Select keys for signing.
 If no one is selected, default secret key is used.  "
-                                      nil t))
-      (setq signers (list (car (epg-list-keys
-                               context
-                               (message-options-get 'mml-sender) t)))))
+                                      mml2015-signers t))
+      (setq signers (mapcar (lambda (name)
+                             (car (epg-list-keys context name t)))
+                           (or mml2015-signers
+                               (list (message-options-get 'mml-sender))))))
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)
     (epg-context-set-signers context signers)
@@ -1150,10 +1156,9 @@ If no one is selected, default secret key is used.  "
 (defun mml2015-epg-encrypt (cont &optional sign)
   (let ((inhibit-redisplay t)
        (context (epg-make-context))
-       recipients cipher
+       recipients cipher signers
        (boundary (mml-compute-boundary cont)))
-    (if (or mml2015-verbose
-           (null (message-options-get 'message-recipients)))
+    (if mml2015-verbose
        (setq recipients
              (epa-select-keys context "Select recipients for encryption.
 If no one is selected, symmetric encryption will be performed.  "
@@ -1167,6 +1172,16 @@ If no one is selected, symmetric encryption will be performed.  "
                    (split-string
                     (message-options-get 'message-recipients)
                     "[ \f\t\n\r\v,]+"))))
+    (when sign
+      (if mml2015-verbose
+         (setq signers (epa-select-keys context "Select keys for signing.
+If no one is selected, default secret key is used.  "
+                                      mml2015-signers t))
+       (setq signers (mapcar (lambda (name)
+                               (car (epg-list-keys context name t)))
+                             (or mml2015-signers
+                                 (list (message-options-get 'mml-sender))))))
+      (epg-context-set-signers context signers))
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)
     (if mml2015-cache-passphrase