Gnus development mailing list
 help / color / mirror / Atom feed
From: Daniel Dehennin <daniel.dehennin@baby-gnu.org>
To: ding@gnus.org
Subject: [PATCH] Cleanup selecting a key for sign and encryption.
Date: Wed, 28 Jan 2009 13:01:07 +0100	[thread overview]
Message-ID: <87ocxr3aik.fsf@hati.baby-gnu.org> (raw)
In-Reply-To: <87d4e7skx6.fsf@hati.baby-gnu.org>

[-- Attachment #1: Type: text/plain, Size: 398 bytes --]



------------------------------------------------------------
revno: 116
committer: Daniel Dehennin <daniel.dehennin@baby-gnu.org>
branch nick: gnus.mml2015
timestamp: Tue 2009-01-27 22:36:43 +0100
message:
  Cleanup selecting a key for sign and encryption.
  
  * lisp/mml2015.el (mml2015-epg-prompt-select-keys): New function.
    (mml2015-epg-sign): Use it.
    (mml2015-epg-encrypt): Use it.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Gnus116.patch --]
[-- Type: text/x-patch, Size: 5007 bytes --]

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: daniel.dehennin@baby-gnu.org-20090127213643-\
#   wdsvibfo9rhmi3es
# target_branch: ../../gnus.head
# testament_sha1: f616e0abc7ccd21f7deb0f85564d74f5c0ff97ff
# timestamp: 2009-01-28 13:00:48 +0100
# source_branch: .
# base_revision_id: daniel.dehennin@baby-gnu.org-20090126152327-\
#   ccpvwbbxys1zto9f
# 
# Begin patch
=== modified file 'lisp/mml2015.el'
--- lisp/mml2015.el	2009-01-22 07:02:15 +0000
+++ lisp/mml2015.el	2009-01-27 21:36:43 +0000
@@ -1025,6 +1025,43 @@
 	  (setq pointer (cdr pointer))))
       (setq keys (cdr keys)))))
 
+(defun mml2015-epg-split-addresses (config addresses)
+  "Split a string of addresses delimited by [ \f\t\n\r\v,]+."
+  (apply #'nconc
+	 (mapcar
+	  (lambda (recipient)
+	    (or (epg-expand-group config recipient)
+		(list (concat "<" recipient ">"))))
+	  (split-string
+	   (or addresses
+	       (read-string "Addresses: "))
+	   "[ \f\t\n\r\v,]+"))))
+
+(defun mml2015-epg-prompt-select-keys (context &optional names usage)
+  "Return a key matching NAME.
+USAGE is nil or encrypt to search private keyring.
+USAGE is t or sign to search secret keyring.
+Mostly a wrapper around epa-select-keys."
+  (let ((action (cond
+		 ((memq usage '(t sign)) "signing")
+		 ((memq usage '(nil encrypt)) "encryption")
+		 (t "encryption")))
+	(key-type (cond
+		   ((memq usage '(t sign)) 'secret)
+		   ((memq usage '(nil encrypt)) 'public)
+		   (t 'public)))
+	(no-selection (cond
+		       ((memq usage '(t sign)) "default secret key is used")
+		       ((memq usage '(nil encrypt)) "symmetric encryption will be performed")
+		       (t "symmetric encryption will be performed"))))
+    (epa-select-keys context
+		     (format "\
+Select a key for %s.
+If no one is selected, %s
+If more than one is select, first one is used.  "
+			     action no-selection)
+		     names key-type)))
+
 (defun mml2015-epg-decrypt (handle ctl)
   (catch 'error
     (let ((inhibit-redisplay t)
@@ -1182,17 +1219,15 @@
   (let* ((inhibit-redisplay t)
 	 (context (epg-make-context))
 	 (boundary (mml-compute-boundary cont))
+	 (sender (message-options-get 'message-sender))
 	 signer-key
 	 (signers
 	  (or (message-options-get 'mml2015-epg-signers)
 	      (message-options-set
 	       'mml2015-epg-signers
 	       (if mml2015-verbose
-		   (epa-select-keys context "\
-Select keys for signing.
-If no one is selected, default secret key is used.  "
-				    mml2015-signers t)
-		 (if mml2015-signers
+		   (mml2015-epg-prompt-select-keys context sender 'sign)
+		 (if sender
 		     (delq nil
 			   (mapcar
 			    (lambda (signer)
@@ -1206,7 +1241,7 @@
 					    signer)))
 				(error "No secret key for %s" signer))
 			      signer-key)
-			    mml2015-signers)))))))
+			    (list sender))))))))
 	 signature micalg)
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)
@@ -1249,32 +1284,23 @@
   (let ((inhibit-redisplay t)
 	(context (epg-make-context))
 	(config (epg-configuration))
+	(sender (message-options-get 'message-sender))
 	(recipients (message-options-get 'mml2015-epg-recipients))
 	cipher signers
 	(boundary (mml-compute-boundary cont))
 	recipient-key signer-key)
     (unless recipients
       (setq recipients
-	    (apply #'nconc
-		   (mapcar
-		    (lambda (recipient)
-		      (or (epg-expand-group config recipient)
-			  (list (concat "<" recipient ">"))))
-		    (split-string
-		     (or (message-options-get 'message-recipients)
-			 (message-options-set 'message-recipients
-					      (read-string "Recipients: ")))
-		     "[ \f\t\n\r\v,]+"))))
+	    (mml2015-epg-split-addresses
+	     config
+	     (message-options-get 'message-recipients)))
       (when mml2015-encrypt-to-self
-	(unless mml2015-signers
-	  (error "mml2015-signers not set"))
-	(setq recipients (nconc recipients mml2015-signers)))
+	(unless sender
+	  (error "Message sender not set"))
+	(setq recipients (nconc recipients (list sender))))
       (if mml2015-verbose
 	  (setq recipients
-		(epa-select-keys context "\
-Select recipients for encryption.
-If no one is selected, symmetric encryption will be performed.  "
-				 recipients))
+		(mml2015-epg-prompt-select-keys context recipients 'encrypt))
 	(setq recipients
 	      (delq nil
 		    (mapcar
@@ -1298,11 +1324,8 @@
 		(message-options-set
 		 'mml2015-epg-signers
 		 (if mml2015-verbose
-		     (epa-select-keys context "\
-Select keys for signing.
-If no one is selected, default secret key is used.  "
-				      mml2015-signers t)
-		   (if mml2015-signers
+		     (mml2015-epg-prompt-select-keys context sender 'sign)
+		   (if sender
 		       (delq nil
 			     (mapcar
 			      (lambda (signer)
@@ -1316,7 +1339,7 @@
 					      signer)))
 				  (error "No secret key for %s" signer))
 				signer-key)
-			      mml2015-signers)))))))
+			      (list sender))))))))
       (epg-context-set-signers context signers))
     (epg-context-set-armor context t)
     (epg-context-set-textmode context t)


  parent reply	other threads:[~2009-01-28 12:01 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-25 20:11 mml2015-epg-sign do not use from header Daniel Dehennin
2009-01-25 20:37 ` Reiner Steib
2009-01-25 20:43   ` Daniel Dehennin
2009-01-26  1:34 ` Daiki Ueno
2009-02-28 11:25   ` Reiner Steib
2009-03-01  3:27     ` Daiki Ueno
2009-01-28 11:57 ` Daniel Dehennin
2009-01-28 11:59   ` [PATCH] mml2015-epg-sign does " Daniel Dehennin
2009-03-01 17:13     ` Daiki Ueno
2009-03-03 18:59       ` Daniel Dehennin
2009-04-13 20:31     ` Daniel Dehennin
2009-04-13 20:32     ` [PATCH] mml2015-epg-encrypt do not use from header to sign Daniel Dehennin
2009-01-28 12:00   ` [PATCH] Factor spliting mail addresses Daniel Dehennin
2009-04-13 20:32     ` Daniel Dehennin
2009-01-28 12:01   ` Daniel Dehennin [this message]
2009-04-13 20:32     ` [PATCH] Cleanup selecting a key for sign and encryption Daniel Dehennin
2009-01-28 12:02   ` [PATCH] Only one sender Daniel Dehennin
2009-04-13 20:32     ` Daniel Dehennin
2009-01-28 12:02   ` Daniel Dehennin
2009-04-13 20:32     ` Daniel Dehennin
2009-01-28 12:02   ` [PATCH] Factorize choosing a key Daniel Dehennin
2009-04-13 20:33     ` Daniel Dehennin
2009-01-28 12:02   ` [PATCH] mml2015-epg-choose-keys handle the verbose selection of keys Daniel Dehennin
2009-04-13 20:33     ` Daniel Dehennin
2009-01-28 12:02   ` [PATCH] Fix variable name, only one sender Daniel Dehennin
2009-01-28 12:02   ` [PATCH] Remove useless variables Daniel Dehennin
2009-04-13 20:33     ` Daniel Dehennin
2009-01-28 12:03   ` [PATCH] Permit to select a key if more than one match a mail address Daniel Dehennin
2009-04-13 20:33     ` Daniel Dehennin
2009-04-13 20:31   ` mml2015-epg-sign do not use from header Daniel Dehennin
2009-04-13 22:48     ` Daiki Ueno
2010-11-15 23:11 ` Daniel Dehennin
2010-11-15 23:13   ` mml2015-epg-sign does not use From header Daniel Dehennin
2010-11-15 23:23     ` Daniel Dehennin
2010-11-16 18:21   ` mml2015-epg-sign do not use from header Lars Magne Ingebrigtsen
2010-11-16 20:23     ` Daniel Dehennin
2010-11-16 20:27       ` Lars Magne Ingebrigtsen
2010-11-16 20:45         ` Daniel Dehennin
2010-11-17  7:34           ` Katsumi Yamaoka
2010-11-17 17:06             ` Daniel Dehennin
2010-11-17 17:13               ` Lars Magne Ingebrigtsen
2010-11-17 17:37                 ` Merging ChangeLogs (was: mml2015-epg-sign do not use from header) Sven Joachim
2010-11-21  4:51                   ` Merging ChangeLogs Lars Magne Ingebrigtsen
2010-11-21  7:38                     ` Sven Joachim
2010-11-21  7:43                       ` Lars Magne Ingebrigtsen
2010-11-21  8:12                         ` Sven Joachim
2010-11-21  8:19                           ` Sven Joachim
2010-11-22 19:42                         ` Ted Zlatanov
2010-11-24 21:13                           ` Lars Magne Ingebrigtsen
2010-11-17 18:07                 ` mml2015-epg-sign do not use from header Julien Danjou
2010-11-21  4:49                   ` Lars Magne Ingebrigtsen
2010-11-17 23:08                 ` Daniel Dehennin
2010-11-21  4:47                   ` Lars Magne Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ocxr3aik.fsf@hati.baby-gnu.org \
    --to=daniel.dehennin@baby-gnu.org \
    --cc=ding@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).