annotate lisp/password-cache.el @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents ee5932bf781d
children a9dc0e7c3f2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 ;;; password-cache.el --- Read passwords, possibly using a password cache.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2
87665
b9e8ab94c460 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 87037
diff changeset
3 ;; Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4 ;; Free Software Foundation, Inc.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 ;; Author: Simon Josefsson <simon@josefsson.org>
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 ;; Created: 2003-12-21
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 ;; Keywords: password cache passphrase key
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 ;; Greatly influenced by pgg.el written by Daiki Ueno, with timer
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 ;; fixes for XEmacs by Katsumi Yamaoka. In fact, this is mostly just
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 ;; a rip-off.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30 ;;
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31 ;; (password-read "Password? " "test")
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32 ;; ;; Minibuffer prompt for password.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33 ;; => "foo"
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34 ;;
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35 ;; (password-cache-add "test" "foo")
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 ;; => nil
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 ;; (password-read "Password? " "test")
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39 ;; ;; No minibuffer prompt
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 ;; => "foo"
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41 ;;
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 ;; (password-read "Password? " "test")
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 ;; ;; No minibuffer prompt
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 ;; => "foo"
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 ;;
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 ;; ;; Wait `password-cache-expiry' seconds.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 ;;
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 ;; (password-read "Password? " "test")
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 ;; ;; Minibuffer prompt for password is back.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 ;; => "foo"
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 ;;; Code:
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 (defcustom password-cache t
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 "Whether to cache passwords."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 :group 'password
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 :type 'boolean)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 (defcustom password-cache-expiry 16
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 "How many seconds passwords are cached, or nil to disable expiring.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 Whether passwords are cached at all is controlled by `password-cache'."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 :group 'password
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 :type '(choice (const :tag "Never" nil)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 (integer :tag "Seconds")))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 (defvar password-data (make-vector 7 0))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 (defun password-read-from-cache (key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 "Obtain passphrase for KEY from time-limited passphrase cache.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70 Custom variables `password-cache' and `password-cache-expiry'
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 regulate cache behavior."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 (and password-cache
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 key
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 (symbol-value (intern-soft key password-data))))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 (defun password-read (prompt &optional key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77 "Read password, for use with KEY, from user, or from cache if wanted.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 KEY indicate the purpose of the password, so the cache can
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 separate passwords. The cache is not used if KEY is nil. It is
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 typically a string.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81 The variable `password-cache' control whether the cache is used."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 (or (password-read-from-cache key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 (read-passwd prompt)))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 (defun password-read-and-add (prompt &optional key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 "Read password, for use with KEY, from user, or from cache if wanted.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 Then store the password in the cache. Uses `password-read' and
87037
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
88 `password-cache-add'. Custom variables `password-cache' and
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
89 `password-cache-expiry' regulate cache behavior.
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
90
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
91 Warning: the password is cached without checking that it is
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
92 correct. It is better to check the password before caching. If
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
93 you must use this function, take care to check passwords and
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
94 remove incorrect ones from the cache."
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 (let ((password (password-read prompt key)))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 (when (and password key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 (password-cache-add key password))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98 password))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99
87037
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
100 (make-obsolete 'password-read-and-add 'password-read "23.1")
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
101
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 (defun password-cache-remove (key)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 "Remove password indexed by KEY from password cache.
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 This is typically run be a timer setup from `password-cache-add',
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 but can be invoked at any time to forcefully remove passwords
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 from the cache. This may be useful when it has been detected
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 that a password is invalid, so that `password-read' query the
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 user again."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 (let ((password (symbol-value (intern-soft key password-data))))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 (when password
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 (if (fboundp 'clear-string)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 (clear-string password)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 (fillarray password ?_))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 (unintern key password-data))))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 (defun password-cache-add (key password)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 "Add password to cache.
87037
f2417ea1baac (top-level): Don't require cl when compiling.
Glenn Morris <rgm@gnu.org>
parents: 87036
diff changeset
118 The password is removed by a timer after `password-cache-expiry' seconds."
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 (when (and password-cache-expiry (null (intern-soft key password-data)))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 (run-at-time password-cache-expiry nil
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 #'password-cache-remove
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 key))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 (set (intern key password-data) password)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 nil)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 (defun password-reset ()
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 "Clear the password cache."
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 (interactive)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 (fillarray password-data 0))
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131 (provide 'password-cache)
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87665
diff changeset
133 ;; arch-tag: ab160494-16c8-4c68-a4a1-73eebf6686e5
87036
fcc71de0dc1c Move to here from gnus/password.el.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 ;;; password-cache.el ends here