]> code.delx.au - gnu-emacs/blobdiff - lisp/gnus/auth-source.el
Merge changes made in Gnus trunk.
[gnu-emacs] / lisp / gnus / auth-source.el
index 677698ebc96dc38fbc49b127afbc4f1ae112ee1a..4bd13cdc05ec6f5659a594cb4783726bb3dcf38a 100644 (file)
 (require 'assoc)
 
 (eval-when-compile (require 'cl))
-(eval-and-compile
-  (or (ignore-errors (require 'eieio))
-      ;; gnus-fallback-lib/ from gnus/lisp/gnus-fallback-lib
-      (ignore-errors
-        (let ((load-path (cons (expand-file-name
-                                "gnus-fallback-lib/eieio"
-                                (file-name-directory (locate-library "gnus")))
-                               load-path)))
-          (require 'eieio)))
-      (error
-       "eieio not found in `load-path' or gnus-fallback-lib/ directory.")))
+(require 'eieio)
 
 (autoload 'secrets-create-item "secrets")
 (autoload 'secrets-delete-item "secrets")
@@ -74,7 +64,6 @@
 (autoload 'plstore-save "plstore")
 (autoload 'plstore-get-file "plstore")
 
-(autoload 'epg-context-operation "epg")
 (autoload 'epg-make-context "epg")
 (autoload 'epg-context-set-passphrase-callback "epg")
 (autoload 'epg-decrypt-string "epg")
@@ -1005,24 +994,24 @@ Note that the MAX parameter is used so we can exit the parse early."
 (defvar auth-source-passphrase-alist nil)
 
 (defun auth-source-token-passphrase-callback-function (context key-id file)
-      (let* ((file (file-truename file))
-             (entry (assoc file auth-source-passphrase-alist))
-             passphrase)
-        ;; return the saved passphrase, calling a function if needed
-        (or (copy-sequence (if (functionp (cdr entry))
-                               (funcall (cdr entry))
-                             (cdr entry)))
-            (progn
-              (unless entry
-                (setq entry (list file))
-                (push entry auth-source-passphrase-alist))
-              (setq passphrase
-                    (read-passwd
-                     (format "Passphrase for %s tokens: " file)
-                     t))
-              (setcdr entry (lexical-let ((p (copy-sequence passphrase)))
-                              (lambda () p)))
-              passphrase))))
+  (let* ((file (file-truename file))
+        (entry (assoc file auth-source-passphrase-alist))
+        passphrase)
+    ;; return the saved passphrase, calling a function if needed
+    (or (copy-sequence (if (functionp (cdr entry))
+                          (funcall (cdr entry))
+                        (cdr entry)))
+       (progn
+         (unless entry
+           (setq entry (list file))
+           (push entry auth-source-passphrase-alist))
+         (setq passphrase
+               (read-passwd
+                (format "Passphrase for %s tokens: " file)
+                t))
+         (setcdr entry (lexical-let ((p (copy-sequence passphrase)))
+                         (lambda () p)))
+         passphrase))))
 
 ;; (auth-source-epa-extract-gpg-token "gpg:LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tClZlcnNpb246IEdudVBHIHYxLjQuMTEgKEdOVS9MaW51eCkKCmpBMEVBd01DT25qMjB1ak9rZnRneVI3K21iNm9aZWhuLzRad3cySkdlbnVaKzRpeEswWDY5di9icDI1U1dsQT0KPS9yc2wKLS0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo=" "~/.netrc")
 (defun auth-source-epa-extract-gpg-token (secret file)
@@ -1388,6 +1377,8 @@ Respects `auth-source-save-behavior'.  Uses
                 (insert "\n"))
               (insert add "\n")
               (write-region (point-min) (point-max) file nil 'silent)
+             ;; Make the .authinfo file non-world-readable.
+             (set-file-modes file #o600)
               (auth-source-do-debug
                "auth-source-netrc-create: wrote 1 new line to %s"
                file)