From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.org!not-for-mail
From: Daiki Ueno <ueno@unixuser.org>
Newsgroups: gmane.emacs.bugs
Subject: bug#6654: 23.2;
	mml-secure-message-encrypt-smime can't handle multiple recipients
Date: Tue, 20 Jul 2010 11:08:51 +0900
Message-ID: <m37hkq3nws.fsf-ueno@unixuser.org>
References: <20100716142731.0632953242.qww314159@motoko.argon.local>
NNTP-Posting-Host: lo.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Trace: dough.gmane.org 1279593052 32665 80.91.229.12 (20 Jul 2010 02:30:52 GMT)
X-Complaints-To: usenet@dough.gmane.org
NNTP-Posting-Date: Tue, 20 Jul 2010 02:30:52 +0000 (UTC)
Cc: 6654@debbugs.gnu.org
To: Jay Berkenbilt <ejb@ql.org>
Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jul 20 04:30:50 2010
Return-path: <bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org>
Envelope-to: geb-bug-gnu-emacs@m.gmane.org
Original-Received: from lists.gnu.org ([199.232.76.165])
	by lo.gmane.org with esmtp (Exim 4.69)
	(envelope-from <bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org>)
	id 1Ob2bZ-0007Vi-Pj
	for geb-bug-gnu-emacs@m.gmane.org; Tue, 20 Jul 2010 04:30:50 +0200
Original-Received: from localhost ([127.0.0.1]:38196 helo=lists.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43)
	id 1Ob2bZ-0004jK-6K
	for geb-bug-gnu-emacs@m.gmane.org; Mon, 19 Jul 2010 22:30:49 -0400
Original-Received: from [140.186.70.92] (port=32862 helo=eggs.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Ob2bQ-0004hb-4z
	for bug-gnu-emacs@gnu.org; Mon, 19 Jul 2010 22:30:41 -0400
Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
	(envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1Ob2bO-0001ru-Nz
	for bug-gnu-emacs@gnu.org; Mon, 19 Jul 2010 22:30:40 -0400
Original-Received: from debbugs.gnu.org ([140.186.70.43]:42909)
	by eggs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1Ob2bO-0001rn-LL
	for bug-gnu-emacs@gnu.org; Mon, 19 Jul 2010 22:30:38 -0400
Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69)
	(envelope-from <Debian-debbugs@debbugs.gnu.org>)
	id 1Ob2GU-00055f-Ir; Mon, 19 Jul 2010 22:09:02 -0400
X-Loop: help-debbugs@gnu.org
Resent-From: Daiki Ueno <ueno@unixuser.org>
Original-Sender: debbugs-submit-bounces@debbugs.gnu.org
Resent-To: owner@debbugs.gnu.org
Resent-CC: bug-gnu-emacs@gnu.org, bugs@gnus.org
Resent-Date: Tue, 20 Jul 2010 02:09:02 +0000
Resent-Message-ID: <handler.6654.B6654.127959171819560@debbugs.gnu.org>
Resent-Sender: help-debbugs@gnu.org
X-GNU-PR-Message: followup 6654
X-GNU-PR-Package: emacs,gnus
X-GNU-PR-Keywords: 
Original-Received: via spool by 6654-submit@debbugs.gnu.org id=B6654.127959171819560
	(code B ref 6654); Tue, 20 Jul 2010 02:09:02 +0000
Original-Received: (at 6654) by debbugs.gnu.org; 20 Jul 2010 02:08:38 +0000
Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces@debbugs.gnu.org>)
	id 1Ob2G5-00055R-JI
	for submit@debbugs.gnu.org; Mon, 19 Jul 2010 22:08:37 -0400
Original-Received: from ivory4.scn-net.ne.jp ([219.117.176.192])
	by debbugs.gnu.org with smtp (Exim 4.69)
	(envelope-from <ueno@unixuser.org>) id 1Ob2G2-00055L-Ik
	for 6654@debbugs.gnu.org; Mon, 19 Jul 2010 22:08:36 -0400
Original-Received: from ([192.168.0.187]) (envelope sender: <ueno@unixuser.org>)
	by ivory4.scn-net.ne.jp with Active!Hunter esmtp server;
	Tue, 20 Jul 2010 11:08:52 +0900
Original-Received: Received: from well-done.deisui.org (g187018.scn-net.ne.jp
	[202.83.187.18]) (authenticated)
	by blue17.scn-net.ne.jp (unknown) with ESMTP id o6K28qVt004877;
	Tue, 20 Jul 2010 11:08:52 +0900
In-Reply-To: <20100716142731.0632953242.qww314159@motoko.argon.local> (Jay
	Berkenbilt's message of "Fri, 16 Jul 2010 14:27:31 -0400")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
Resent-Date: Mon, 19 Jul 2010 22:09:02 -0400
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
X-BeenThere: bug-gnu-emacs@gnu.org
List-Id: "Bug reports for GNU Emacs,
	the Swiss army knife of text editors" <bug-gnu-emacs.gnu.org>
List-Unsubscribe: <http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs>,
	<mailto:bug-gnu-emacs-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/archive/html/bug-gnu-emacs>
List-Post: <mailto:bug-gnu-emacs@gnu.org>
List-Help: <mailto:bug-gnu-emacs-request@gnu.org?subject=help>
List-Subscribe: <http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs>,
	<mailto:bug-gnu-emacs-request@gnu.org?subject=subscribe>
Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org
Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org
Xref: news.gmane.org gmane.emacs.bugs:38674
Archived-At: <http://permalink.gmane.org/gmane.emacs.bugs/38674>

--=-=-=

Hi,

Jay Berkenbilt <ejb@ql.org> writes:

> When attempting to send an encrypted message to multiple recipients,
> mml-secure-message-encrypt-smime creates a "secure" mml tag contains a
> separate certfile attribute for each recipient.  For example (with !
> below replaced by #):
>
> <!secure method=smime mode=signencrypt keyfile="~/certs/key.pem" certfile="~/certs/c1.pem" certfile="~/certs/c2.pem">
[...]
> you can see that certfile is set by calling (assq 'certfile taginfo),
> which loses all but the first certfile.  This causes it to be mapped
> into this:
>
> <!part sign=smime encrypt=smime keyfile="~/certs/key.pem" certfile="~/certs/c1.pem">

Thanks for the analysis.  Could you try the attached patch?  If ok, I'll
apply it to the trunk and close this bug.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline;
 filename=mml-secure-smime-multiple-certfile.diff

=== modified file 'lisp/gnus/mml.el'
--- lisp/gnus/mml.el	2010-05-06 04:15:34 +0000
+++ lisp/gnus/mml.el	2010-07-20 01:56:14 +0000
@@ -228,7 +228,10 @@
 	(let* (secure-mode
 	       (taginfo (mml-read-tag))
 	       (keyfile (cdr (assq 'keyfile taginfo)))
-	       (certfile (cdr (assq 'certfile taginfo)))
+	       (certfiles (delq nil (mapcar (lambda (tag)
+					      (if (eq (car-safe tag) 'certfile)
+						  (cdr tag)))
+					    taginfo)))
 	       (recipients (cdr (assq 'recipients taginfo)))
 	       (sender (cdr (assq 'sender taginfo)))
 	       (location (cdr (assq 'tag-location taginfo)))
@@ -254,8 +257,10 @@
 				 ,@tags
 				 ,(if keyfile "keyfile")
 				 ,keyfile
-				 ,(if certfile "certfile")
-				 ,certfile
+				 ,@(apply #'append
+					  (mapcar (lambda (certfile)
+						    (list "certfile" certfile))
+						  certfiles))
 				 ,(if recipients "recipients")
 				 ,recipients
 				 ,(if sender "sender")


--=-=-=


Regards,
-- 
Daiki Ueno

--=-=-=--