* pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): New optional
authorSimon Josefsson <jas@extundo.com>
Mon, 27 Oct 2003 21:46:41 +0000 (21:46 +0000)
committerSimon Josefsson <jas@extundo.com>
Mon, 27 Oct 2003 21:46:41 +0000 (21:46 +0000)
parameter key, overrides the key id used to store passphrase
under (uses true key id from gpg output if nil).
(pgg-gpg-encrypt-region): Search for passphrase using user suplied
string STR, instead of (pgg-lookup-key STR t).
(pgg-gpg-encrypt-region): Store passphrase under user suplied
string, instead of real key id taken from gpg output.
(pgg-gpg-decrypt-region): Likewise.
(pgg-gpg-sign-region): Likewise.
* pgg.el (pgg-decrypt-region): Don't set pgg-default-user-id.

lisp/ChangeLog
lisp/pgg-gpg.el
lisp/pgg.el

index 6ed51e5..5d49c7d 100644 (file)
@@ -1,3 +1,16 @@
+2003-10-27  Simon Josefsson  <jas@extundo.com>
+
+       * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): New optional
+       parameter key, overrides the key id used to store passphrase
+       under (uses true key id from gpg output if nil).
+       (pgg-gpg-encrypt-region): Search for passphrase using user suplied
+       string STR, instead of (pgg-lookup-key STR t).
+       (pgg-gpg-encrypt-region): Store passphrase under user suplied
+       string, instead of real key id taken from gpg output.
+       (pgg-gpg-decrypt-region): Likewise.
+       (pgg-gpg-sign-region): Likewise.
+       * pgg.el (pgg-decrypt-region): Don't set pgg-default-user-id.
+
 2003-10-27  Romain FRANCOISE  <romain@orebokech.com>
 
        * gnus-art.el (gnus-article-goto-prev-page): Doc fix. 
index f1815de..9807846 100644 (file)
          (delete-file output-file-name))
       (set-default-file-modes orig-mode))))
 
-(defun pgg-gpg-possibly-cache-passphrase (passphrase)
+(defun pgg-gpg-possibly-cache-passphrase (passphrase &optional key)
   (if (and pgg-cache-passphrase
           (progn
             (goto-char (point-min))
             (re-search-forward "^\\[GNUPG:] GOOD_PASSPHRASE\\>" nil t)))
       (pgg-add-passphrase-cache
-       (progn
-        (goto-char (point-min))
-        (if (re-search-forward
-             "^\\[GNUPG:] NEED_PASSPHRASE \\w+ ?\\w*" nil t)
-            (substring (match-string 0) -8)))
+       (or key
+          (progn
+            (goto-char (point-min))
+            (if (re-search-forward
+                 "^\\[GNUPG:] NEED_PASSPHRASE \\w+ ?\\w*" nil t)
+                (substring (match-string 0) -8))))
        passphrase)))
 
 (defun pgg-gpg-lookup-key (string &optional type)
@@ -125,7 +126,7 @@ If optional argument SIGN is non-nil, do a combined sign and encrypt."
          (when sign
            (pgg-read-passphrase
             (format "GnuPG passphrase for %s: " pgg-gpg-user-id)
-            (pgg-gpg-lookup-key pgg-gpg-user-id 'encrypt))))
+            pgg-gpg-user-id)))
         (args
          (append
           (list "--batch" "--armor" "--always-trust" "--encrypt")
@@ -141,7 +142,7 @@ If optional argument SIGN is non-nil, do a combined sign and encrypt."
       (pgg-gpg-process-region start end passphrase pgg-gpg-program args))
     (when sign
       (with-current-buffer pgg-errors-buffer
-       (pgg-gpg-possibly-cache-passphrase passphrase)))
+       (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id)))
     (pgg-process-when-success)))
 
 (defun pgg-gpg-decrypt-region (start end)
@@ -150,11 +151,11 @@ If optional argument SIGN is non-nil, do a combined sign and encrypt."
         (passphrase
          (pgg-read-passphrase
           (format "GnuPG passphrase for %s: " pgg-gpg-user-id)
-          (pgg-gpg-lookup-key pgg-gpg-user-id 'encrypt)))
+          pgg-gpg-user-id))
         (args '("--batch" "--decrypt")))
     (pgg-gpg-process-region start end passphrase pgg-gpg-program args)
     (with-current-buffer pgg-errors-buffer
-      (pgg-gpg-possibly-cache-passphrase passphrase)
+      (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id)
       (goto-char (point-min))
       (re-search-forward "^\\[GNUPG:] DECRYPTION_OKAY\\>" nil t))))
 
@@ -164,7 +165,7 @@ If optional argument SIGN is non-nil, do a combined sign and encrypt."
         (passphrase
          (pgg-read-passphrase
           (format "GnuPG passphrase for %s: " pgg-gpg-user-id)
-          (pgg-gpg-lookup-key pgg-gpg-user-id 'sign)))
+          pgg-gpg-user-id))
         (args
          (list (if cleartext "--clearsign" "--detach-sign")
                "--armor" "--batch" "--verbose"
@@ -174,7 +175,7 @@ If optional argument SIGN is non-nil, do a combined sign and encrypt."
     (pgg-as-lbt start end 'CRLF
       (pgg-gpg-process-region start end passphrase pgg-gpg-program args))
     (with-current-buffer pgg-errors-buffer
-      (pgg-gpg-possibly-cache-passphrase passphrase))
+      (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id))
     (pgg-process-when-success)))
 
 (defun pgg-gpg-verify-region (start end &optional signature)
index 8903e19..0481898 100644 (file)
@@ -192,15 +192,6 @@ the region."
   "Decrypt the current region between START and END."
   (interactive "r")
   (let* ((buf (current-buffer))
-        (packet (cdr (assq 1 (with-temp-buffer
-                               (insert-buffer-substring buf)
-                               (pgg-decode-armor-region
-                                (point-min) (point-max))))))
-        (key (cdr (assq 'key-identifier packet)))
-        (pgg-default-user-id 
-         (if key
-             (concat "0x" (pgg-truncate-key-identifier key))
-           pgg-default-user-id))
         (status
          (pgg-save-coding-system start end
            (pgg-invoke "decrypt-region" (or pgg-scheme pgg-default-scheme)