[gnus git] branch master updated: n0-17-79-g3157f29 =1= More GPG token support: allow per-file configuration and fix XEmacs incompatibility.
Ted Zlatanov <[email protected]>
| Newsgroups | gmane.emacs.gnus.cvs |
|---|---|
| Message-ID | <[email protected]> |
via 3157f29aa216b3f6676e83f87c594e9abe8781ab (commit)
from 993d802352a0626fad27cace617c827a56a91d16 (commit)
- Log -----------------------------------------------------------------
commit 3157f29aa216b3f6676e83f87c594e9abe8781ab
Author: Ted Zlatanov <[email protected]>
Date: Sat Jun 18 12:02:21 2011 -0500
More GPG token support: allow per-file configuration and fix XEmacs incompatibility.
* auth-source.el (auth-source-netrc-use-gpg-tokens): Replace
`auth-source-save-secrets' with a more sensitive alist that can be
configured per file. Experimental, so defaults to 'never.
(auth-source-netrc-create): Use it. Still experimental code.
(with-auth-source-epa-overrides): Use `find-file-hooks' if
`find-file-hook' is unbound (XEmacs fix).
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b608c53..00f305c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,12 @@
+2011-06-18 Teodor Zlatanov <[email protected]>
+
+ * auth-source.el (auth-source-netrc-use-gpg-tokens): Replace
+ `auth-source-save-secrets' with a more sensitive alist that can be
+ configured per file. Experimental, so defaults to 'never.
+ (auth-source-netrc-create): Use it. Still experimental code.
+ (with-auth-source-epa-overrides): Use `find-file-hooks' if
+ `find-file-hook' is unbound (XEmacs fix).
+
2011-06-16 Teodor Zlatanov <[email protected]>
* auth-source.el (auth-source-save-secrets): New variable to control if
diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index 83e12d6..21df923 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -164,15 +164,30 @@ let-binding."
(const :tag "Never save" nil)
(const :tag "Ask" ask)))
-(defcustom auth-source-save-secrets nil
- "If set, auth-source will respect it for password tokens behavior."
+;; TODO: make the default (setq auth-source-netrc-use-gpg-tokens `((,(if (boundp 'epa-file-auto-mode-alist-entry) (car (symbol-value 'epa-file-auto-mode-alist-entry)) "\\.gpg\\'") never) (t gpg)))
+;; TODO: or maybe leave as (setq auth-source-netrc-use-gpg-tokens 'never)
+
+(defcustom auth-source-netrc-use-gpg-tokens 'never
+ "Set this to tell auth-source when to create GPG password
+tokens in netrc files. It's either an alist or `never'."
:group 'auth-source
:version "23.2" ;; No Gnus
:type `(choice
- :tag "auth-source new password token behavior"
- (const :tag "Use GPG tokens" gpg)
- (const :tag "Save unencrypted" nil)
- (const :tag "Ask" ask)))
+ (const :tag "Always use GPG password tokens" (t gpg))
+ (const :tag "Never use GPG password tokens" never)
+ (repeat :tag "Use a lookup list"
+ (list
+ (choice :tag "Matcher"
+ (const :tag "Match anything" t)
+ (const :tag "The EPA encrypted file extensions"
+ ,(if (boundp 'epa-file-auto-mode-alist-entry)
+ (car (symbol-value
+ 'epa-file-auto-mode-alist-entry))
+ "\\.gpg\\'"))
+ (regexp :tag "Regular expression"))
+ (choice :tag "What to do"
+ (const :tag "Save GPG-encrypted password tokens" gpg)
+ (const :tag "Don't encrypt tokens" never))))))
(defvar auth-source-magic "auth-source-magic ")
@@ -257,9 +272,11 @@ can get pretty complex."
,@auth-source-protocols-customize))
(list :tag "User" :inline t
(const :format "" :value :user)
- (choice :tag "Personality/Username"
+ (choice
+ :tag "Personality/Username"
(const :tag "Any" t)
- (string :tag "Name")))))))))
+ (string
+ :tag "Name")))))))))
(defcustom auth-source-gpg-encrypt-to t
"List of recipient keys that `authinfo.gpg' encrypted to.
@@ -960,8 +977,10 @@ Note that the MAX parameter is used so we can exit the parse early."
(remove (symbol-value 'epa-file-handler)
file-name-handler-alist)
file-name-handler-alist))
- (find-file-hook
- ',(remove 'epa-file-find-file-hook find-file-hook))
+ (,(if (boundp 'find-file-hook) 'find-file-hook 'find-file-hooks)
+ ',(remove
+ 'epa-file-find-file-hook
+ ,(if (boundp 'find-file-hook) 'find-file-hook 'find-file-hooks)))
(auto-mode-alist
',(if (boundp 'epa-file-auto-mode-alist-entry)
(remove (symbol-value 'epa-file-auto-mode-alist-entry)
@@ -1216,19 +1235,34 @@ See `auth-source-search' for details on SPEC."
(cond
((and (null data) (eq r 'secret))
;; Special case prompt for passwords.
- ;; Respect `auth-source-save-secrets'
- (let* ((ep (format "Do you want GPG password tokens? (%s)"
- "see `auth-source-save-secrets'"))
+;; TODO: make the default (setq auth-source-netrc-use-gpg-tokens `((,(if (boundp 'epa-file-auto-mode-alist-entry) (car (symbol-value 'epa-file-auto-mode-alist-entry)) "\\.gpg\\'") nil) (t gpg)))
+;; TODO: or maybe leave as (setq auth-source-netrc-use-gpg-tokens 'never)
+ (let* ((ep (format "Use GPG password tokens in %s?" file))
(gpg-encrypt
-;;; FIXME: this relies on .gpg files being handled by EPA/EPG
- ;; don't put GPG tokens in GPG-encrypted files
- (and (not (equal "gpg" (file-name-extension file)))
- (or (eq auth-source-save-secrets 'gpg)
- (and (eq auth-source-save-secrets 'ask)
- (setq auth-source-save-secrets
- (and (y-or-n-p ep) 'gpg))))))
+ (cond
+ ((eq auth-source-netrc-use-gpg-tokens 'never)
+ 'never)
+ ((listp auth-source-netrc-use-gpg-tokens)
+ (let ((check (copy-sequence
+ auth-source-netrc-use-gpg-tokens))
+ item ret)
+ (while check
+ (setq item (pop check))
+ (when (or (eq (car item) t)
+ (string-match (car item) file))
+ (setq ret (cdr item))
+ (setq check nil)))))
+ (t 'never)))
(plain (read-passwd prompt)))
- (if (eq auth-source-save-secrets 'gpg)
+ ;; ask if we don't know what to do (in which case
+ ;; auth-source-netrc-use-gpg-tokens must be a list)
+ (unless gpg-encrypt
+ (setq gpg-encrypt (if (y-or-n-p ep) 'gpg 'never))
+ ;; TODO: save the defcustom now? or ask?
+ (setq auth-source-netrc-use-gpg-tokens
+ (cons `(,file ,gpg-encrypt)
+ auth-source-netrc-use-gpg-tokens)))
+ (if (eq gpg-encrypt 'gpg)
(auth-source-epa-make-gpg-token plain file)
plain)))
((null data)
-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.
Summary of changes:
lisp/ChangeLog | 9 ++++++
lisp/auth-source.el | 76 +++++++++++++++++++++++++++++++++++++--------------
2 files changed, 64 insertions(+), 21 deletions(-)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".
The branch, master has been updated
hooks/post-receive
--
Gnus Project