aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/gnus/ChangeLog10
-rw-r--r--lisp/gnus/mm-decode.el8
-rw-r--r--lisp/gnus/mm-view.el9
-rw-r--r--lisp/gnus/smime.el9
4 files changed, 21 insertions, 15 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 0365b34e8e..64752711f9 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,13 @@
+2010-11-11 Katsumi Yamaoka <[email protected]>
+
+ * mm-decode.el (mm-dissect-buffer): Pass sender's mail address to
+ smime-decrypt-region using function argument.
+ (mm-possibly-verify-or-decrypt, mm-dissect-multipart): Relay it.
+
+ * mm-view.el (mm-view-pkcs7, mm-view-pkcs7-decrypt): Relay it.
+
+ * smime.el (smime-decrypt-region): Catch it.
+
2010-11-11 Stefan Monnier <[email protected]>
* smime.el (smime-mode-map): Move initialization into declaration.
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index bcd6a80f1e..2ab5a548e4 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -624,7 +624,7 @@ Postpone undisplaying of viewers for types in
no-strict-mime
(and cd (mail-header-parse-content-disposition cd))
description id)
- ctl))))
+ ctl from))))
(when id
(when (string-match " *<\\(.*\\)> *" id)
(setq id (match-string 1 id)))
@@ -666,7 +666,7 @@ Postpone undisplaying of viewers for types in
(save-restriction
(narrow-to-region start end)
(setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
- (mm-possibly-verify-or-decrypt (nreverse parts) ctl)))
+ (mm-possibly-verify-or-decrypt (nreverse parts) ctl from)))
(defun mm-copy-to-buffer ()
"Copy the contents of the current buffer to a fresh buffer."
@@ -1569,7 +1569,7 @@ If RECURSIVE, search recursively."
(autoload 'mm-view-pkcs7 "mm-view")
-(defun mm-possibly-verify-or-decrypt (parts ctl)
+(defun mm-possibly-verify-or-decrypt (parts ctl &optional from)
(let ((type (car ctl))
(subtype (cadr (split-string (car ctl) "/")))
(mm-security-handle ctl) ;; (car CTL) is the type.
@@ -1584,7 +1584,7 @@ If RECURSIVE, search recursively."
((eq mm-decrypt-option 'known) t)
(t (y-or-n-p
(format "Decrypt (S/MIME) part? "))))
- (mm-view-pkcs7 parts))
+ (mm-view-pkcs7 parts from))
(setq parts (mm-dissect-buffer t)))))
((equal subtype "signed")
(unless (and (setq protocol
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index f621475981..083781b0f9 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -653,9 +653,9 @@
(t
(error "Could not identify PKCS#7 type")))))
-(defun mm-view-pkcs7 (handle)
+(defun mm-view-pkcs7 (handle &optional from)
(case (mm-view-pkcs7-get-type handle)
- (enveloped (mm-view-pkcs7-decrypt handle))
+ (enveloped (mm-view-pkcs7-decrypt handle from))
(signed (mm-view-pkcs7-verify handle))
(otherwise (error "Unknown or unimplemented PKCS#7 type"))))
@@ -680,7 +680,7 @@
(replace-match "\n"))
t)
-(defun mm-view-pkcs7-decrypt (handle)
+(defun mm-view-pkcs7-decrypt (handle &optional from)
(insert-buffer-substring (mm-handle-buffer handle))
(goto-char (point-min))
(insert "MIME-Version: 1.0\n")
@@ -692,7 +692,8 @@
(smime-get-key-by-email
(gnus-completing-read
"Decipher using key"
- smime-keys nil nil nil (car-safe (car-safe smime-keys))))))
+ smime-keys nil nil nil (car-safe (car-safe smime-keys)))))
+ from)
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
(replace-match "\n"))
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index 5363a40c72..0695d5ac82 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -426,11 +426,7 @@ Any details (stdout and stderr) are left in the buffer specified by
(insert-buffer-substring smime-details-buffer)
nil))
-;; TODO: fix this properly by giving it a prefix.
-(if (featurep 'xemacs)
- (defvar from))
-
-(defun smime-decrypt-region (b e keyfile)
+(defun smime-decrypt-region (b e keyfile &optional from)
"Decrypt S/MIME message in region between B and E with key in KEYFILE.
On success, replaces region with decrypted data and return non-nil.
Any details (stderr on success, stdout and stderr on error) are left
@@ -454,8 +450,7 @@ in the buffer specified by `smime-details-buffer'."
(delete-file tmpfile)))
(progn
(delete-region b e)
- (when (boundp 'from)
- ;; `from' is dynamically bound in mm-dissect.
+ (when from
(insert "From: " from "\n"))
(insert-buffer-substring buffer)
(kill-buffer buffer)