Delete temporary files when Gnus exits instead of using timers
[gnus] / lisp / mml-smime.el
index e7f9de7..6ea5537 100644 (file)
@@ -77,6 +77,13 @@ Whether the passphrase is cached at all is controlled by
 (defcustom mml-smime-sign-with-sender nil
   "If t, use message sender so find a key to sign with."
   :group 'mime-security
+  :version "24.4"
+  :type 'boolean)
+
+(defcustom mml-smime-encrypt-to-self nil
+  "If t, add your own key ID to recipient list when encryption."
+  :group 'mime-security
+  :version "24.4"
   :type 'boolean)
 
 (defun mml-smime-sign (cont)
@@ -328,6 +335,7 @@ Whether the passphrase is cached at all is controlled by
   (autoload 'epg-encrypt-string "epg")
   (autoload 'epg-passphrase-callback-function "epg")
   (autoload 'epg-context-set-passphrase-callback "epg")
+  (autoload 'epg-sub-key-fingerprint "epg")
   (autoload 'epg-configuration "epg-config")
   (autoload 'epg-expand-group "epg-config")
   (autoload 'epa-select-keys "epa"))
@@ -473,13 +481,17 @@ Content-Disposition: attachment; filename=smime.p7s
     (goto-char (point-max))))
 
 (defun mml-smime-epg-encrypt (cont)
-  (let ((inhibit-redisplay t)
-       (context (epg-make-context 'CMS))
-       (config (epg-configuration))
-       (recipients (message-options-get 'mml-smime-epg-recipients))
-       cipher signers
-       (boundary (mml-compute-boundary cont))
-       recipient-key)
+  (let* ((inhibit-redisplay t)
+        (context (epg-make-context 'CMS))
+        (config (epg-configuration))
+        (recipients (message-options-get 'mml-smime-epg-recipients))
+        cipher signers
+        (sender (message-options-get 'message-sender))
+        (signer-names (or mml-smime-signers
+                          (if (and mml-smime-sign-with-sender sender)
+                              (list (concat "<" sender ">")))))
+        (boundary (mml-compute-boundary cont))
+        recipient-key)
     (unless recipients
       (setq recipients
            (apply #'nconc
@@ -492,6 +504,10 @@ Content-Disposition: attachment; filename=smime.p7s
                         (message-options-set 'message-recipients
                                              (read-string "Recipients: ")))
                     "[ \f\t\n\r\v,]+"))))
+      (when mml-smime-encrypt-to-self
+       (unless signer-names
+         (error "Neither message sender nor mml-smime-signers are set"))
+       (setq recipients (nconc recipients signer-names)))
       (if (eq mm-encrypt-option 'guided)
          (setq recipients
                (epa-select-keys context "\