aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2005-11-04 14:41:02 +0000
committerEli Zaretskii2005-11-04 14:41:02 +0000
commitc6037c0000d4134fd4b9e46feeba55c9718bcb37 (patch)
tree0eb6272848fe2d7794c80aa7964dd01f90050e3f
parent98945794d52769666278fe4e0a7d0fe0c8a3f466 (diff)
downloademacs-c6037c0000d4134fd4b9e46feeba55c9718bcb37.tar.gz
emacs-c6037c0000d4134fd4b9e46feeba55c9718bcb37.zip
(pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
(pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) (pgg-pgp-sign-region, pgg-pgp-sign): Add optional 'passphrase' argument to all these routines, so the passphrase can be managed externally and passed in to the system. (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for pgg-add-passphrase-to-cache function.
-rw-r--r--lisp/pgg-pgp.el56
1 files changed, 36 insertions, 20 deletions
diff --git a/lisp/pgg-pgp.el b/lisp/pgg-pgp.el
index 2735a0b7b27..19668f23c01 100644
--- a/lisp/pgg-pgp.el
+++ b/lisp/pgg-pgp.el
@@ -132,41 +132,57 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
132 (buffer-substring (point)(progn (end-of-line) (point))))) 132 (buffer-substring (point)(progn (end-of-line) (point)))))
133 2)))))) 133 2))))))
134 134
135(defun pgg-pgp-encrypt-region (start end recipients) 135(defun pgg-pgp-encrypt-region (start end recipients &optional sign passphrase)
136 "Encrypt the current region between START and END." 136 "Encrypt the current region between START and END."
137 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) 137 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id))
138 (passphrase (or passphrase
139 (when sign
140 (pgg-read-passphrase
141 (format "PGP passphrase for %s: "
142 pgg-pgp-user-id)
143 pgg-pgp-user-id))))
138 (args 144 (args
139 `("+encrypttoself=off +verbose=1" "+batchmode" 145 (append
140 "+language=us" "-fate" 146 `("+encrypttoself=off +verbose=1" "+batchmode"
141 ,@(if recipients 147 "+language=us" "-fate"
142 (mapcar (lambda (rcpt) (concat "\"" rcpt "\"")) 148 ,@(if recipients
143 (append recipients 149 (mapcar (lambda (rcpt) (concat "\"" rcpt "\""))
144 (if pgg-encrypt-for-me 150 (append recipients
145 (list pgg-pgp-user-id)))))))) 151 (if pgg-encrypt-for-me
152 (list pgg-pgp-user-id))))))
153 (if sign '("-s" "-u" pgg-pgp-user-id)))))
146 (pgg-pgp-process-region start end nil pgg-pgp-program args) 154 (pgg-pgp-process-region start end nil pgg-pgp-program args)
147 (pgg-process-when-success nil))) 155 (pgg-process-when-success nil)))
148 156
149(defun pgg-pgp-decrypt-region (start end) 157(defun pgg-pgp-decrypt-region (start end &optional passphrase)
150 "Decrypt the current region between START and END." 158 "Decrypt the current region between START and END.
159
160If optional PASSPHRASE is not specified, it will be obtained from the
161passphrase cache or user."
151 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) 162 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id))
152 (key (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt)) 163 (key (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt))
153 (passphrase 164 (passphrase
154 (pgg-read-passphrase 165 (or passphrase
155 (format "PGP passphrase for %s: " pgg-pgp-user-id) key)) 166 (pgg-read-passphrase
167 (format "PGP passphrase for %s: " pgg-pgp-user-id) key)))
156 (args 168 (args
157 '("+verbose=1" "+batchmode" "+language=us" "-f"))) 169 '("+verbose=1" "+batchmode" "+language=us" "-f")))
158 (pgg-pgp-process-region start end passphrase pgg-pgp-program args) 170 (pgg-pgp-process-region start end passphrase pgg-pgp-program args)
159 (pgg-process-when-success 171 (pgg-process-when-success
160 (if pgg-cache-passphrase 172 (if pgg-cache-passphrase
161 (pgg-add-passphrase-cache key passphrase))))) 173 (pgg-add-passphrase-to-cache key passphrase)))))
174
175(defun pgg-pgp-sign-region (start end &optional clearsign passphrase)
176 "Make detached signature from text between START and END.
162 177
163(defun pgg-pgp-sign-region (start end &optional clearsign) 178If optional PASSPHRASE is not specified, it will be obtained from the
164 "Make detached signature from text between START and END." 179passphrase cache or user."
165 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) 180 (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id))
166 (passphrase 181 (passphrase
167 (pgg-read-passphrase 182 (or passphrase
168 (format "PGP passphrase for %s: " pgg-pgp-user-id) 183 (pgg-read-passphrase
169 (pgg-pgp-lookup-key pgg-pgp-user-id 'sign))) 184 (format "PGP passphrase for %s: " pgg-pgp-user-id)
185 (pgg-pgp-lookup-key pgg-pgp-user-id 'sign))))
170 (args 186 (args
171 (list (if clearsign "-fast" "-fbast") 187 (list (if clearsign "-fast" "-fbast")
172 "+verbose=1" "+language=us" "+batchmode" 188 "+verbose=1" "+language=us" "+batchmode"
@@ -181,7 +197,7 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
181 (point)) 197 (point))
182 (point-max)))))) 198 (point-max))))))
183 (if pgg-cache-passphrase 199 (if pgg-cache-passphrase
184 (pgg-add-passphrase-cache 200 (pgg-add-passphrase-to-cache
185 (cdr (assq 'key-identifier packet)) 201 (cdr (assq 'key-identifier packet))
186 passphrase))))))) 202 passphrase)))))))
187 203