diff options
| author | Eli Zaretskii | 2005-11-04 14:41:02 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2005-11-04 14:41:02 +0000 |
| commit | c6037c0000d4134fd4b9e46feeba55c9718bcb37 (patch) | |
| tree | 0eb6272848fe2d7794c80aa7964dd01f90050e3f | |
| parent | 98945794d52769666278fe4e0a7d0fe0c8a3f466 (diff) | |
| download | emacs-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.el | 56 |
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 | |||
| 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 |
| 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) | 178 | If optional PASSPHRASE is not specified, it will be obtained from the |
| 164 | "Make detached signature from text between START and END." | 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" |
| @@ -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 | ||