From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Damien Cassou Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Mar 2018 15:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 30962@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15221649554012 (code B ref -1); Tue, 27 Mar 2018 15:36:02 +0000 Received: (at submit) by debbugs.gnu.org; 27 Mar 2018 15:35:55 +0000 Received: from localhost ([127.0.0.1]:56148 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0qdY-00012X-JX for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:55 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46284) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0qdX-00012L-91 for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0qdQ-0002NB-HK for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:42 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:55659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0qdQ-0002N2-Cs for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0qdO-000749-U2 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0qdL-0002KK-A5 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:38 -0400 Received: from mail.choca.pics ([2001:bc8:20ab::1]:49610) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0qdK-0002Hf-R8 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:35 -0400 Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id EF3862330E00 for ; Tue, 27 Mar 2018 17:35:24 +0200 (CEST) Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10032) with ESMTP id Pa8IwMkjU6pw for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id 61AC72330E03 for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.choca.pics 61AC72330E03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cassou.me; s=9EA44F5C-DEF4-11E6-A83F-A08DF322D8FB; t=1522164922; bh=jvmZ8P6Y1FrV1x8GZ+W3R8KsGW5uDcEJ3NZ2NZn0eBM=; h=From:To:Date:Message-ID:MIME-Version; b=M6nCGniPcSrFclck8ueiz8cbhMNF7SZcRBkC6ZKg4E+a5e8mYs7M2fXihP9j/xVLJ dBQ8A1R/0b326lJLq7Pw3tndj1hFrU0OR9BWyK/NMFni3IlgQAtcuKIkYlJtLCWERQ O2qRaTrbSkul8Udvc2+U54G3V7cgvCeMyBucl6oFYjbdaHtwcaoxw3ZERJeiCikFXS gN5hWUuchdWeEhz/M+BiTHiCvl94t1925NwZTwShuxIgnqJn2hky3EO1/c7eLyFB0K 4ACKaNGGRTRudAvsHmQqeqqzxb+oWpe8lvmorTkGTEKEe0EFZLPcaMotL9Hsq/n/Pk +ip14wYkhFo9A== X-Virus-Scanned: amavisd-new at choca.pics Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10026) with ESMTP id JjJtz3CXf-5R for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) Received: from luz4 (20-44-190-109.dsl.ovh.fr [109.190.44.20]) by mail.choca.pics (Postfix) with ESMTPSA id 0C09E2330E00 for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) From: Damien Cassou Date: Tue, 27 Mar 2018 17:35:19 +0200 Message-ID: <87r2o58rbc.fsf@cassou.me> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.9 (/) --=-=-= Content-Type: text/plain Attached patch adds support to automatically encrypt email messages when the epg keyring contains a key for every recipient. -- Damien Cassou http://damiencassou.seasidehosting.st "Success is the ability to go from one failure to another without losing enthusiasm." --Winston Churchill --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Detect-if-a-message-can-be-encrypted-and-add-an-MML-.patch >From 483d0f6723d945ee828348fb9705c403305486fd Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Tue, 27 Mar 2018 16:57:51 +0200 Subject: [PATCH] Detect if a message can be encrypted and add an MML tag * lisp/gnus/message.el (message-recipients): Return a list of pairs, one for each recipient in To, Cc, Bcc. (message-all-epg-keys-available-p): Check that there is a public key in epg for each recipient of the current message. (message-sign-encrypt-if-all-keys-available): Add MML tag to sign and encrypt current message if there is a public key for every recipient in current message. * test/lisp/gnus/message-tests.el (message-recipients): Test for message-recipients. --- etc/NEWS | 8 ++++++++ lisp/gnus/message.el | 30 ++++++++++++++++++++++++++++++ test/lisp/gnus/message-tests.el | 12 ++++++++++++ 3 files changed, 50 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 04774c13e5..5ae52dfa38 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -315,6 +315,14 @@ or NextCloud hosted files and directories. It was obsolete since Emacs 22.1, replaced by customize. +** Message + ++++ +*** Messages can now be systematically encrypted +when the PGP keyring contains a public key for every recipient. To +achieve this, add 'message-add-encrypt-tag-if-can-encrypt' to +'message-send-hook'. + * New Modes and Packages in Emacs 27.1 +++ diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 37b994de99..4747d83f4d 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -2582,6 +2582,36 @@ message-info (t 'message))))) +(defun message-recipients () + "Return a list of all recipients in the message, looking at TO, CC and BCC. + +Each recipient is in the format of `mail-extract-address-components'." + (mapcan (lambda (header) + (let ((header-value (message-fetch-field header))) + (and + header-value + (mail-extract-address-components header-value t)))) + '("To" "Cc" "Bcc"))) + +(defun message-all-epg-keys-available-p () + "Return non-nil if the pgp keyring has a public key for each recipient." + (require 'epa) + (let ((context (epg-make-context epa-protocol))) + (catch 'break + (dolist (recipient (message-recipients)) + (let ((recipient-email (cadr recipient))) + (when (and recipient-email (not (epg-list-keys context recipient-email))) + (throw 'break nil)))) + t))) + +(defun message-sign-encrypt-if-all-keys-available () + "Add MML tag to encrypt message when there is a key for each recipient. + +Consider adding this function to `message-send-hook' to +systematically send encrypted emails when possible." + (when (message-all-epg-keys-available-p) + (mml-secure-message-sign-encrypt))) + ;;; diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index ec1f247020..3678fa8cc8 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -97,6 +97,18 @@ (should (string= stripped-was (message-strip-subject-trailing-was with-was))))))) +(ert-deftest message-recipients () + (ert-with-test-buffer (:name "message") + (insert "To: Person 1 , Person 2 \n") + (insert "CC: Person 3 , Person 4 \n") + (insert "BCC: Person 5 , Person 6 \n") + (should (equal (message-recipients) + '(("Person 1" "p1@p1.org") + ("Person 2" "p2@p2.org") + ("Person 3" "p3@p3.org") + ("Person 4" "p4@p4.org") + ("Person 5" "p5@p5.org") + ("Person 6" "p6@p6.org")))))) (provide 'message-mode-tests) -- 2.14.3 --=-=-=-- From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Nicolas Petton Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Apr 2018 08:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Damien Cassou , 30962@debbugs.gnu.org Received: via spool by 30962-submit@debbugs.gnu.org id=B30962.15228309092153 (code B ref 30962); Wed, 04 Apr 2018 08:36:01 +0000 Received: (at 30962) by debbugs.gnu.org; 4 Apr 2018 08:35:09 +0000 Received: from localhost ([127.0.0.1]:37590 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3dsm-0000YZ-44 for submit@debbugs.gnu.org; Wed, 04 Apr 2018 04:35:09 -0400 Received: from petton.fr ([89.234.186.68]:35118) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3dsk-0000Y2-A4 for 30962@debbugs.gnu.org; Wed, 04 Apr 2018 04:35:03 -0400 From: Nicolas Petton In-Reply-To: <87r2o58rbc.fsf@cassou.me> References: <87r2o58rbc.fsf@cassou.me> Date: Wed, 04 Apr 2018 10:34:50 +0200 Message-ID: <87o9izxtcl.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1522830895; bh=v5B9JGHTapnZuY/nfM9EunrPs90m5fnf2lTPmWtJVEc=; h=From:To:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=hG6zYja6ebxo2fICF/x+j+x+Enztd8qccNVtPSLQFHXkAwufFmziBo3fZBj03Mcy4hv4uymXowoIklU90Q2fVZG0ZtxsL23/VK+dIbdptz8WGvvIGbTKJKyszV8FeulLePmDWcBfmPuR+sgNIY/ay/lBX5X5XIO0lrIbsAx4uSc= X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Damien Cassou writes: Hi Damien, > Attached patch adds support to automatically encrypt email messages when > the epg keyring contains a key for every recipient. Thanks, I've been using it for a few days without any issue. > +(defun message-recipients () ^^^^^^^^^^^^^^^^^^ Would `message-all-recipients' be a better name? > [...] > +(ert-deftest message-recipients () > + (ert-with-test-buffer (:name "message") > + (insert "To: Person 1 , Person 2 \n") > + (insert "CC: Person 3 , Person 4 \n") > + (insert "BCC: Person 5 , Person 6 \n") > + (should (equal (message-recipients) > + '(("Person 1" "p1@p1.org") > + ("Person 2" "p2@p2.org") > + ("Person 3" "p3@p3.org") > + ("Person 4" "p4@p4.org") > + ("Person 5" "p5@p5.org") > + ("Person 6" "p6@p6.org")))))) Could you add tests for `message-all-epg-keys-available-p' as well? Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEE1AWqLIYsVPF+7mvg6LzXhmr8+XgFAlrEjioACgkQ6LzXhmr8 +Xi9TggAiDm1BiD4j5hh95JLlOPyB1xwVG1xmBM73qK+Cab33ZqOS58O8dw0o2i8 JLD2EQJbik5P+tHBlvPRaeb53JPn1SYZfZ5r559SpgA4D7D7pgejFFeYK7VLBblm lbAaZX0hLRFEik3kOKoX2yZa3X7oL3NOlhOmkb3zHrj6OtPllOIJwhHvuXPBPIyG 1Pb7On9WZ3B7Yhf5kAhObYpzx827SXyUSNHatvY0yMdc5Bw5Q7oBENDeSeyLLNTh Sukui+06m7eUz1FDjKJVnQt6vrNrVSz2JSyB3Qz3TUPy1s4RuLTFjtH953tzBncH +PrYcAWep7qBoCw7eR46egqNe7A8jg== =aScx -----END PGP SIGNATURE----- --=-=-=-- From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Damien Cassou Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Apr 2018 09:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Nicolas Petton , 30962@debbugs.gnu.org Received: via spool by 30962-submit@debbugs.gnu.org id=B30962.15228345737403 (code B ref 30962); Wed, 04 Apr 2018 09:37:01 +0000 Received: (at 30962) by debbugs.gnu.org; 4 Apr 2018 09:36:13 +0000 Received: from localhost ([127.0.0.1]:37628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3epq-0001vD-Lj for submit@debbugs.gnu.org; Wed, 04 Apr 2018 05:36:13 -0400 Received: from mail.choca.pics ([62.210.108.126]:52890) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3epm-0001ut-Fp for 30962@debbugs.gnu.org; Wed, 04 Apr 2018 05:36:05 -0400 Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id 4298C2331109; Wed, 4 Apr 2018 11:36:01 +0200 (CEST) Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10032) with ESMTP id VvLhcovT94Da; Wed, 4 Apr 2018 11:35:58 +0200 (CEST) Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id A4276233110A; Wed, 4 Apr 2018 11:35:58 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.choca.pics A4276233110A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cassou.me; s=9EA44F5C-DEF4-11E6-A83F-A08DF322D8FB; t=1522834558; bh=cYPtbF6kOwdGgM1yqED/1a5mjEzXlh2nUucSrK/EVDU=; h=From:To:Date:Message-ID:MIME-Version; b=hSB2wpYbBCkX8mTDRJqSu7hYl0t/BlifRdYLGIIUBzpUEZi49WOcqRw5U8uBaEZ8w O7LTgTG2x7EWo+1TwAiV3G0Fin0d+WMNu+V/zvS25vffRaurDo3PmFsZn0UEEkdUnr 6EJKqfn5aTb3beHhUq94xpjcAarRNW/agR40EHwmAg6swGuUP5/zsJ5o2Ry/c49GNE pDzLURBxEOUOvWzsf24gxyiPzUKVtrUPXGoVaajvaDcrI5RLeBblw2zQ4gvSg4EPtS aesdF+GxhWC1Gm8rwCRfLhNhBCdOHHxeOSr91/7A8qu2o6MdU9QbOo1ZHqxdrulcEe tlvFFzmk3n9XQ== X-Virus-Scanned: amavisd-new at choca.pics Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10026) with ESMTP id YBucPLreKYKr; Wed, 4 Apr 2018 11:35:58 +0200 (CEST) Received: from luz4 (20-44-190-109.dsl.ovh.fr [109.190.44.20]) by mail.choca.pics (Postfix) with ESMTPSA id 3DAC02331109; Wed, 4 Apr 2018 11:35:58 +0200 (CEST) From: Damien Cassou In-Reply-To: <87o9izxtcl.fsf@petton.fr> References: <87r2o58rbc.fsf@cassou.me> <87o9izxtcl.fsf@petton.fr> Date: Wed, 04 Apr 2018 11:35:55 +0200 Message-ID: <876057fh50.fsf@cassou.me> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) --=-=-= Content-Type: text/plain Nicolas Petton writes: > Would `message-all-recipients' be a better name? renamed > Could you add tests for `message-all-epg-keys-available-p' as well? done. Please find attached a new version. -- Damien Cassou http://damiencassou.seasidehosting.st "Success is the ability to go from one failure to another without losing enthusiasm." --Winston Churchill --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Detect-if-a-message-can-be-encrypted-and-add-an-MML-.patch >From 64bf9c2f6b15e82b5d077b1428408237ad1d1e74 Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Tue, 27 Mar 2018 16:57:51 +0200 Subject: [PATCH] Detect if a message can be encrypted and add an MML tag * lisp/gnus/message.el (message-recipients): Return a list of pairs, one for each recipient in To, Cc, Bcc. (message-all-epg-keys-available-p): Check that there is a public key in epg for each recipient of the current message. (message-sign-encrypt-if-all-keys-available): Add MML tag to sign and encrypt current message if there is a public key for every recipient in current message. * test/lisp/gnus/message-tests.el (message-recipients): Test for message-recipients. --- etc/NEWS | 8 +++++++ lisp/gnus/message.el | 30 +++++++++++++++++++++++++++ test/lisp/gnus/message-tests.el | 46 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index baff9664cf..02b31ecff4 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -337,6 +337,14 @@ or NextCloud hosted files and directories. It was obsolete since Emacs 22.1, replaced by customize. +** Message + ++++ +*** Messages can now be systematically encrypted +when the PGP keyring contains a public key for every recipient. To +achieve this, add 'message-add-encrypt-tag-if-can-encrypt' to +'message-send-hook'. + * New Modes and Packages in Emacs 27.1 +++ diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 37b994de99..fdb296fc24 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -2582,6 +2582,36 @@ message-info (t 'message))))) +(defun message-all-recipients () + "Return a list of all recipients in the message, looking at TO, CC and BCC. + +Each recipient is in the format of `mail-extract-address-components'." + (mapcan (lambda (header) + (let ((header-value (message-fetch-field header))) + (and + header-value + (mail-extract-address-components header-value t)))) + '("To" "Cc" "Bcc"))) + +(defun message-all-epg-keys-available-p () + "Return non-nil if the pgp keyring has a public key for each recipient." + (require 'epa) + (let ((context (epg-make-context epa-protocol))) + (catch 'break + (dolist (recipient (message-all-recipients)) + (let ((recipient-email (cadr recipient))) + (when (and recipient-email (not (epg-list-keys context recipient-email))) + (throw 'break nil)))) + t))) + +(defun message-sign-encrypt-if-all-keys-available () + "Add MML tag to encrypt message when there is a key for each recipient. + +Consider adding this function to `message-send-hook' to +systematically send encrypted emails when possible." + (when (message-all-epg-keys-available-p) + (mml-secure-message-sign-encrypt))) + ;;; diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index ec1f247020..9124dcf77a 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -29,6 +29,8 @@ (require 'ert) (require 'ert-x) +(require 'cl-lib) + (ert-deftest message-mode-propertize () (with-temp-buffer (unwind-protect @@ -97,6 +99,50 @@ (should (string= stripped-was (message-strip-subject-trailing-was with-was))))))) +(ert-deftest message-all-recipients () + (ert-with-test-buffer (:name "message") + (insert "To: Person 1 , Person 2 \n") + (insert "CC: Person 3 , Person 4 \n") + (insert "BCC: Person 5 , Person 6 \n") + (should (equal (message-all-recipients) + '(("Person 1" "p1@p1.org") + ("Person 2" "p2@p2.org") + ("Person 3" "p3@p3.org") + ("Person 4" "p4@p4.org") + ("Person 5" "p5@p5.org") + ("Person 6" "p6@p6.org")))))) + +(ert-deftest message-all-epg-keys-available-p () + (let ((person1 '("Person 1" "p1@p1.org")) + (person2 '("Person 2" "p2@p2.org")) + (person3 '("Person 3" "p3@p3.org")) + (recipients nil) + (keyring '("p1@p1.org" "p2@p2.org"))) + (cl-letf (((symbol-function 'epg-list-keys) + (lambda (_ email) (cl-find email keyring :test #'string=))) + ((symbol-function 'message-all-recipients) + (lambda () recipients))) + + (setq recipients (list)) + (should (message-all-epg-keys-available-p)) + + (setq recipients (list person1)) + (should (message-all-epg-keys-available-p)) + + (setq recipients (list person1 person2)) + (should (message-all-epg-keys-available-p)) + + (setq recipients (list person3)) + (should-not (message-all-epg-keys-available-p)) + + (setq recipients (list person1 person3)) + (should-not (message-all-epg-keys-available-p)) + + (setq recipients (list person3 person1)) + (should-not (message-all-epg-keys-available-p)) + + (setq recipients (list person1 person2 person3)) + (should-not (message-all-epg-keys-available-p))))) (provide 'message-mode-tests) -- 2.14.3 --=-=-=-- From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Nicolas Petton Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Apr 2018 13:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Damien Cassou , 30962@debbugs.gnu.org Cc: larsi@gnus.org Received: via spool by 30962-submit@debbugs.gnu.org id=B30962.15228485303962 (code B ref 30962); Wed, 04 Apr 2018 13:29:02 +0000 Received: (at 30962) by debbugs.gnu.org; 4 Apr 2018 13:28:50 +0000 Received: from localhost ([127.0.0.1]:37858 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3iT3-00011q-TY for submit@debbugs.gnu.org; Wed, 04 Apr 2018 09:28:50 -0400 Received: from petton.fr ([89.234.186.68]:42900) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3iT2-00011d-9V for 30962@debbugs.gnu.org; Wed, 04 Apr 2018 09:28:48 -0400 From: Nicolas Petton In-Reply-To: <876057fh50.fsf@cassou.me> References: <87r2o58rbc.fsf@cassou.me> <87o9izxtcl.fsf@petton.fr> <876057fh50.fsf@cassou.me> Date: Wed, 04 Apr 2018 15:28:38 +0200 Message-ID: <877epnxfqx.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1522848521; bh=MUxOb5p2GtCcxVsYY5o5ohmYvVWoUZDezCLMolA8bn4=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=NkOJv48EFI8jAQfb7z/dCGu+Ads4bcDQePyBQugAP1vpyvJqAGcvG5CT76nd5G/o1q6D/Ox26SrtngkVzhNwrApVPZVaC37eJW+0cCCrQ0Hyk8kElDYSCgj5Cro+83BtmgsW2qTvFUskon89sx6zR4D/TvdJecpxfhtmvKgjde8= X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Damien Cassou writes: > Nicolas Petton writes: >> Would `message-all-recipients' be a better name? > > > renamed > > >> Could you add tests for `message-all-epg-keys-available-p' as well? > > done. > > Please find attached a new version. Thanks. Lars, if that's ok with you, I'll install Damien's patch on master. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEE1AWqLIYsVPF+7mvg6LzXhmr8+XgFAlrE0wYACgkQ6LzXhmr8 +Xh1XAgA1y27dnLfkNZIKAqii5uRbgsGzkMJwji/KOQq6b8x+n5grYM2eDvll2/O avvQ7t3J4WDTHLT9U4/Cqmlm7C2OlPbUb07askxv5qT6j/yHyt+QNvfMSseDkYdB mvsL8zKJHhsRf5iVQwWB6gKjqMgSi/iQoKjFn0hydcVMa5ewnbu0xgHQf+u7IYj8 lUdA+W1kM1lH9lQxp9mojPYMyGluZXRQQgGFSEpvpPBwnY8yFE8zpr0rzvLhcQ9+ jEgzbrcZOuxEgZmaOeZ3JT00EErP/XQ8EDAiNE1cALaKPAS9ml/htf0e9VhXvgAG 0kJiZ6oTroyBZxbXDlh2vgyoZtFY+Q== =9fgQ -----END PGP SIGNATURE----- --=-=-=-- From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Apr 2018 15:44:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Nicolas Petton Cc: Damien Cassou , 30962@debbugs.gnu.org Received: via spool by 30962-submit@debbugs.gnu.org id=B30962.152285662316467 (code B ref 30962); Wed, 04 Apr 2018 15:44:01 +0000 Received: (at 30962) by debbugs.gnu.org; 4 Apr 2018 15:43:43 +0000 Received: from localhost ([127.0.0.1]:38497 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3kZb-0004HX-5A for submit@debbugs.gnu.org; Wed, 04 Apr 2018 11:43:43 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:38053) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3kZY-0004HN-3o for 30962@debbugs.gnu.org; Wed, 04 Apr 2018 11:43:41 -0400 Received: from cm-84.209.240.67.getinternet.no ([84.209.240.67] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f3kZU-0007PE-8t; Wed, 04 Apr 2018 17:43:38 +0200 From: Lars Ingebrigtsen References: <87r2o58rbc.fsf@cassou.me> <87o9izxtcl.fsf@petton.fr> <876057fh50.fsf@cassou.me> <877epnxfqx.fsf@petton.fr> Date: Wed, 04 Apr 2018 17:43:36 +0200 In-Reply-To: <877epnxfqx.fsf@petton.fr> (Nicolas Petton's message of "Wed, 04 Apr 2018 15:28:38 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Nicolas Petton writes: > Lars, if that's ok with you, I'll install Damien's patch on master. Looks good to me. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Tue Jun 24 05:14:40 2025 X-Loop: help-debbugs@gnu.org Subject: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient Resent-From: Nicolas Petton Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Apr 2018 18:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30962 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Lars Ingebrigtsen Cc: Damien Cassou , 30962@debbugs.gnu.org, 30962-done@debbugs.gnu.org Received: via spool by 30962-submit@debbugs.gnu.org id=B30962.152286694531780 (code B ref 30962); Wed, 04 Apr 2018 18:36:01 +0000 Received: (at 30962) by debbugs.gnu.org; 4 Apr 2018 18:35:45 +0000 Received: from localhost ([127.0.0.1]:38616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3nG1-0008GO-S6 for submit@debbugs.gnu.org; Wed, 04 Apr 2018 14:35:45 -0400 Received: from petton.fr ([89.234.186.68]:43150) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3nFs-0008Fy-GD; Wed, 04 Apr 2018 14:35:36 -0400 From: Nicolas Petton In-Reply-To: References: <87r2o58rbc.fsf@cassou.me> <87o9izxtcl.fsf@petton.fr> <876057fh50.fsf@cassou.me> <877epnxfqx.fsf@petton.fr> Date: Wed, 04 Apr 2018 20:35:15 +0200 Message-ID: <87woxmvmzg.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1522866926; bh=6KTeJSXWOmKJgoVQHaLINlHMhwnU77IQEH8ZVQiMmcQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=Ksn+YeBaIcf2CK2/eg1nmr2K5l1s1i6rLCz7dUSqccde46K/fbQCwwCAJPRavJWxp3Qy/K8e9cHOftEfPqnJ1H3pCCh36Llnd5GmKIt19ZD/RtqlfpkfFVLHBSe/Ka3O9ggmrOPylVmzrHCLwbmB3fnImnl/8oHBkVSRS4/JmoA= X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Lars Ingebrigtsen writes: >> Lars, if that's ok with you, I'll install Damien's patch on master. > > Looks good to me. Ok, I installed it in master, so I'm closing this issue. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEE1AWqLIYsVPF+7mvg6LzXhmr8+XgFAlrFGuMACgkQ6LzXhmr8 +XhcdAf+NFIP3SM/m28DKQZY2/Jj3e/FgL2RA+hT4/CSQ4+w04f/dAjzJaLXvZ09 nrOIzEQKCK/IL/97+fuQcN3sKYDgrLLCFqSF38mRshuSdyxPe64zdSNlEEC6A1SO S1aek6umfd4xwxU8ZvtryOEJocxpJzHkS6n3GkCoLLFP7nYaWSTtFI5opm/NOf05 1je3uTxMeVUgTC+OMEJxqThhRSZ/Y+E/Ec6li/a21QjLTj96WSd62nzANP178Rju 4Xe6y5W7bDpBaXvocrqTgQgm983/qr54BDtStl1MmrjQ5j2OEYarBB4n2YsOZZHl fbCSPhtkVwpES18UZN93hHToZ8Yw7g== =fWmu -----END PGP SIGNATURE----- --=-=-=-- From unknown Tue Jun 24 05:14:40 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Damien Cassou Subject: bug#30962: closed (Re: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient) Message-ID: References: <87woxmvmzg.fsf@petton.fr> <87r2o58rbc.fsf@cassou.me> X-Gnu-PR-Message: they-closed 30962 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 30962@debbugs.gnu.org Date: Wed, 04 Apr 2018 18:36:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1522866962-31816-1" This is a multi-part message in MIME format... ------------=_1522866962-31816-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #30962: 26.0.91; Encrypt message when there is a key for each recipient which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 30962@debbugs.gnu.org. --=20 30962: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D30962 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1522866962-31816-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 30962-done) by debbugs.gnu.org; 4 Apr 2018 18:35:41 +0000 Received: from localhost ([127.0.0.1]:38614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3nFx-0008GI-RX for submit@debbugs.gnu.org; Wed, 04 Apr 2018 14:35:41 -0400 Received: from petton.fr ([89.234.186.68]:43150) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3nFs-0008Fy-GD; Wed, 04 Apr 2018 14:35:36 -0400 From: Nicolas Petton To: Lars Ingebrigtsen Subject: Re: bug#30962: 26.0.91; Encrypt message when there is a key for each recipient In-Reply-To: References: <87r2o58rbc.fsf@cassou.me> <87o9izxtcl.fsf@petton.fr> <876057fh50.fsf@cassou.me> <877epnxfqx.fsf@petton.fr> Date: Wed, 04 Apr 2018 20:35:15 +0200 Message-ID: <87woxmvmzg.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1522866926; bh=6KTeJSXWOmKJgoVQHaLINlHMhwnU77IQEH8ZVQiMmcQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=Ksn+YeBaIcf2CK2/eg1nmr2K5l1s1i6rLCz7dUSqccde46K/fbQCwwCAJPRavJWxp3Qy/K8e9cHOftEfPqnJ1H3pCCh36Llnd5GmKIt19ZD/RtqlfpkfFVLHBSe/Ka3O9ggmrOPylVmzrHCLwbmB3fnImnl/8oHBkVSRS4/JmoA= X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 30962-done Cc: Damien Cassou , 30962@debbugs.gnu.org, 30962-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Lars Ingebrigtsen writes: >> Lars, if that's ok with you, I'll install Damien's patch on master. > > Looks good to me. Ok, I installed it in master, so I'm closing this issue. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEE1AWqLIYsVPF+7mvg6LzXhmr8+XgFAlrFGuMACgkQ6LzXhmr8 +XhcdAf+NFIP3SM/m28DKQZY2/Jj3e/FgL2RA+hT4/CSQ4+w04f/dAjzJaLXvZ09 nrOIzEQKCK/IL/97+fuQcN3sKYDgrLLCFqSF38mRshuSdyxPe64zdSNlEEC6A1SO S1aek6umfd4xwxU8ZvtryOEJocxpJzHkS6n3GkCoLLFP7nYaWSTtFI5opm/NOf05 1je3uTxMeVUgTC+OMEJxqThhRSZ/Y+E/Ec6li/a21QjLTj96WSd62nzANP178Rju 4Xe6y5W7bDpBaXvocrqTgQgm983/qr54BDtStl1MmrjQ5j2OEYarBB4n2YsOZZHl fbCSPhtkVwpES18UZN93hHToZ8Yw7g== =fWmu -----END PGP SIGNATURE----- --=-=-=-- ------------=_1522866962-31816-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 27 Mar 2018 15:35:55 +0000 Received: from localhost ([127.0.0.1]:56148 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0qdY-00012X-JX for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:55 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46284) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0qdX-00012L-91 for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0qdQ-0002NB-HK for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:42 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:55659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0qdQ-0002N2-Cs for submit@debbugs.gnu.org; Tue, 27 Mar 2018 11:35:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0qdO-000749-U2 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0qdL-0002KK-A5 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:38 -0400 Received: from mail.choca.pics ([2001:bc8:20ab::1]:49610) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0qdK-0002Hf-R8 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:35:35 -0400 Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id EF3862330E00 for ; Tue, 27 Mar 2018 17:35:24 +0200 (CEST) Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10032) with ESMTP id Pa8IwMkjU6pw for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) Received: from localhost (localhost.localdomain [IPv6:::1]) by mail.choca.pics (Postfix) with ESMTP id 61AC72330E03 for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.choca.pics 61AC72330E03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cassou.me; s=9EA44F5C-DEF4-11E6-A83F-A08DF322D8FB; t=1522164922; bh=jvmZ8P6Y1FrV1x8GZ+W3R8KsGW5uDcEJ3NZ2NZn0eBM=; h=From:To:Date:Message-ID:MIME-Version; b=M6nCGniPcSrFclck8ueiz8cbhMNF7SZcRBkC6ZKg4E+a5e8mYs7M2fXihP9j/xVLJ dBQ8A1R/0b326lJLq7Pw3tndj1hFrU0OR9BWyK/NMFni3IlgQAtcuKIkYlJtLCWERQ O2qRaTrbSkul8Udvc2+U54G3V7cgvCeMyBucl6oFYjbdaHtwcaoxw3ZERJeiCikFXS gN5hWUuchdWeEhz/M+BiTHiCvl94t1925NwZTwShuxIgnqJn2hky3EO1/c7eLyFB0K 4ACKaNGGRTRudAvsHmQqeqqzxb+oWpe8lvmorTkGTEKEe0EFZLPcaMotL9Hsq/n/Pk +ip14wYkhFo9A== X-Virus-Scanned: amavisd-new at choca.pics Received: from mail.choca.pics ([IPv6:::1]) by localhost (mail.choca.pics [IPv6:::1]) (amavisd-new, port 10026) with ESMTP id JjJtz3CXf-5R for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) Received: from luz4 (20-44-190-109.dsl.ovh.fr [109.190.44.20]) by mail.choca.pics (Postfix) with ESMTPSA id 0C09E2330E00 for ; Tue, 27 Mar 2018 17:35:22 +0200 (CEST) From: Damien Cassou To: bug-gnu-emacs@gnu.org Subject: 26.0.91; Encrypt message when there is a key for each recipient Date: Tue, 27 Mar 2018 17:35:19 +0200 Message-ID: <87r2o58rbc.fsf@cassou.me> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.9 (/) --=-=-= Content-Type: text/plain Attached patch adds support to automatically encrypt email messages when the epg keyring contains a key for every recipient. -- Damien Cassou http://damiencassou.seasidehosting.st "Success is the ability to go from one failure to another without losing enthusiasm." --Winston Churchill --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Detect-if-a-message-can-be-encrypted-and-add-an-MML-.patch >From 483d0f6723d945ee828348fb9705c403305486fd Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Tue, 27 Mar 2018 16:57:51 +0200 Subject: [PATCH] Detect if a message can be encrypted and add an MML tag * lisp/gnus/message.el (message-recipients): Return a list of pairs, one for each recipient in To, Cc, Bcc. (message-all-epg-keys-available-p): Check that there is a public key in epg for each recipient of the current message. (message-sign-encrypt-if-all-keys-available): Add MML tag to sign and encrypt current message if there is a public key for every recipient in current message. * test/lisp/gnus/message-tests.el (message-recipients): Test for message-recipients. --- etc/NEWS | 8 ++++++++ lisp/gnus/message.el | 30 ++++++++++++++++++++++++++++++ test/lisp/gnus/message-tests.el | 12 ++++++++++++ 3 files changed, 50 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 04774c13e5..5ae52dfa38 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -315,6 +315,14 @@ or NextCloud hosted files and directories. It was obsolete since Emacs 22.1, replaced by customize. +** Message + ++++ +*** Messages can now be systematically encrypted +when the PGP keyring contains a public key for every recipient. To +achieve this, add 'message-add-encrypt-tag-if-can-encrypt' to +'message-send-hook'. + * New Modes and Packages in Emacs 27.1 +++ diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 37b994de99..4747d83f4d 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -2582,6 +2582,36 @@ message-info (t 'message))))) +(defun message-recipients () + "Return a list of all recipients in the message, looking at TO, CC and BCC. + +Each recipient is in the format of `mail-extract-address-components'." + (mapcan (lambda (header) + (let ((header-value (message-fetch-field header))) + (and + header-value + (mail-extract-address-components header-value t)))) + '("To" "Cc" "Bcc"))) + +(defun message-all-epg-keys-available-p () + "Return non-nil if the pgp keyring has a public key for each recipient." + (require 'epa) + (let ((context (epg-make-context epa-protocol))) + (catch 'break + (dolist (recipient (message-recipients)) + (let ((recipient-email (cadr recipient))) + (when (and recipient-email (not (epg-list-keys context recipient-email))) + (throw 'break nil)))) + t))) + +(defun message-sign-encrypt-if-all-keys-available () + "Add MML tag to encrypt message when there is a key for each recipient. + +Consider adding this function to `message-send-hook' to +systematically send encrypted emails when possible." + (when (message-all-epg-keys-available-p) + (mml-secure-message-sign-encrypt))) + ;;; diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index ec1f247020..3678fa8cc8 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -97,6 +97,18 @@ (should (string= stripped-was (message-strip-subject-trailing-was with-was))))))) +(ert-deftest message-recipients () + (ert-with-test-buffer (:name "message") + (insert "To: Person 1 , Person 2 \n") + (insert "CC: Person 3 , Person 4 \n") + (insert "BCC: Person 5 , Person 6 \n") + (should (equal (message-recipients) + '(("Person 1" "p1@p1.org") + ("Person 2" "p2@p2.org") + ("Person 3" "p3@p3.org") + ("Person 4" "p4@p4.org") + ("Person 5" "p5@p5.org") + ("Person 6" "p6@p6.org")))))) (provide 'message-mode-tests) -- 2.14.3 --=-=-=-- ------------=_1522866962-31816-1--