comparison lisp/pgg-pgp.el @ 66697:d13e07d1fdd3

(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.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 04 Nov 2005 14:41:02 +0000
parents c82982d6cbc4
children 3bd95f4f2941
comparison
equal deleted inserted replaced
66696:b1c691b8cde1 66697:d13e07d1fdd3
130 (substring 130 (substring
131 (nth 2 (split-string 131 (nth 2 (split-string
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 (args 138 (passphrase (or passphrase
139 `("+encrypttoself=off +verbose=1" "+batchmode" 139 (when sign
140 "+language=us" "-fate" 140 (pgg-read-passphrase
141 ,@(if recipients 141 (format "PGP passphrase for %s: "
142 (mapcar (lambda (rcpt) (concat "\"" rcpt "\"")) 142 pgg-pgp-user-id)
143 (append recipients 143 pgg-pgp-user-id))))
144 (if pgg-encrypt-for-me 144 (args
145 (list pgg-pgp-user-id)))))))) 145 (append
146 `("+encrypttoself=off +verbose=1" "+batchmode"
147 "+language=us" "-fate"
148 ,@(if recipients
149 (mapcar (lambda (rcpt) (concat "\"" rcpt "\""))
150 (append recipients
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
160 If optional PASSPHRASE is not specified, it will be obtained from the
161 passphrase 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
156 (args 167 (format "PGP passphrase for %s: " pgg-pgp-user-id) key)))
157 '("+verbose=1" "+batchmode" "+language=us" "-f"))) 168 (args
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)))))
162 174
163 (defun pgg-pgp-sign-region (start end &optional clearsign) 175 (defun pgg-pgp-sign-region (start end &optional clearsign passphrase)
164 "Make detached signature from text between START and END." 176 "Make detached signature from text between START and END.
177
178 If optional PASSPHRASE is not specified, it will be obtained from the
179 passphrase 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"
173 "-u" pgg-pgp-user-id))) 189 "-u" pgg-pgp-user-id)))
174 (pgg-pgp-process-region start end passphrase pgg-pgp-program args) 190 (pgg-pgp-process-region start end passphrase pgg-pgp-program args)
179 (cdr (assq 2 (pgg-parse-armor-region 195 (cdr (assq 2 (pgg-parse-armor-region
180 (progn (beginning-of-line 2) 196 (progn (beginning-of-line 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
188 (defun pgg-pgp-verify-region (start end &optional signature) 204 (defun pgg-pgp-verify-region (start end &optional signature)
189 "Verify region between START and END as the detached signature SIGNATURE." 205 "Verify region between START and END as the detached signature SIGNATURE."