annotate lisp/pgg-gpg.el @ 76022:e892213b9815

(w32_set_scroll_bar_thumb): Don't resize scroll-bar handle while dragging, except when we get close to eob. Fix position and size calculations so we don't scroll backwards just by clicking on the handle.
author Kim F. Storm <storm@cua.dk>
date Mon, 19 Feb 2007 14:45:39 +0000
parents 49a4f4e58561
children d6f2673064e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
1 ;;; pgg-gpg.el --- GnuPG support for PGG.
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
2
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74984
diff changeset
4 ;; 2005, 2006, 2007 Free Software Foundation, Inc.
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
5
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
6 ;; Author: Daiki Ueno <ueno@unixuser.org>
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
7 ;; Symmetric encryption and gpg-agent support added by:
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
8 ;; Sascha Wilde <wilde@sha-bang.de>
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
9 ;; Created: 1999/10/28
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
10 ;; Keywords: PGP, OpenPGP, GnuPG
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
11
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
13
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
17 ;; any later version.
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
18
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
22 ;; GNU General Public License for more details.
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
23
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
27 ;; Boston, MA 02110-1301, USA.
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
28
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
29 ;;; Code:
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
30
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
31 (eval-when-compile
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
32 (require 'cl) ; for gpg macros
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
33 (require 'pgg))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
34
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
35 (defgroup pgg-gpg ()
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
36 "GnuPG interface."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
37 :group 'pgg)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
38
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
39 (defcustom pgg-gpg-program "gpg"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
40 "The GnuPG executable."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
41 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
42 :type 'string)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
43
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
44 (defcustom pgg-gpg-extra-args nil
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
45 "Extra arguments for every GnuPG invocation."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
46 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
47 :type '(repeat (string :tag "Argument")))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
48
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
49 (defcustom pgg-gpg-recipient-argument "--recipient"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
50 "GnuPG option to specify recipient."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
51 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
52 :type '(choice (const :tag "New `--recipient' option" "--recipient")
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
53 (const :tag "Old `--remote-user' option" "--remote-user")))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
54
74714
8efc97426784 (pgg-gpg-use-agent): Default to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 72686
diff changeset
55 (defcustom pgg-gpg-use-agent t
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
56 "Whether to use gnupg agent for key caching."
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
57 :group 'pgg-gpg
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
58 :type 'boolean)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
59
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
60 (defvar pgg-gpg-user-id nil
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
61 "GnuPG ID of your default identity.")
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
62
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
63 (defun pgg-gpg-process-region (start end passphrase program args)
75985
49a4f4e58561 (pgg-gpg-process-region): Make USE-AGENT nil if PASSPHRASE is given.
Richard M. Stallman <rms@gnu.org>
parents: 75347
diff changeset
64 (let* ((use-agent (and (null passphrase) (pgg-gpg-use-agent-p)))
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
65 (output-file-name (pgg-make-temp-file "pgg-output"))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
66 (args
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
67 `("--status-fd" "2"
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
68 ,@(if use-agent '("--use-agent")
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
69 (if passphrase '("--passphrase-fd" "0")))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
70 "--yes" ; overwrite
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
71 "--output" ,output-file-name
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
72 ,@pgg-gpg-extra-args ,@args))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
73 (output-buffer pgg-output-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
74 (errors-buffer pgg-errors-buffer)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
75 (orig-mode (default-file-modes))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
76 (process-connection-type nil)
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
77 (inhibit-redisplay t)
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
78 process status exit-status
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
79 passphrase-with-newline
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
80 encoded-passphrase-with-new-line)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
81 (with-current-buffer (get-buffer-create errors-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
82 (buffer-disable-undo)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
83 (erase-buffer))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
84 (unwind-protect
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
85 (progn
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
86 (set-default-file-modes 448)
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
87 (let ((coding-system-for-write 'binary))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
88 (setq process
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
89 (apply #'start-process "*GnuPG*" errors-buffer
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
90 program args)))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
91 (set-process-sentinel process #'ignore)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
92 (when passphrase
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
93 (setq passphrase-with-newline (concat passphrase "\n"))
72686
2f8ec29373d1 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72653
diff changeset
94 (if pgg-passphrase-coding-system
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
95 (progn
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
96 (setq encoded-passphrase-with-new-line
74984
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
97 (encode-coding-string
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
98 passphrase-with-newline
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
99 (coding-system-change-eol-conversion
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
100 pgg-passphrase-coding-system 'unix)))
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
101 (pgg-clear-string passphrase-with-newline))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
102 (setq encoded-passphrase-with-new-line passphrase-with-newline
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
103 passphrase-with-newline nil))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
104 (process-send-string process encoded-passphrase-with-new-line))
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
105 (process-send-region process start end)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
106 (process-send-eof process)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
107 (while (eq 'run (process-status process))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
108 (accept-process-output process 5))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
109 (setq status (process-status process)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
110 exit-status (process-exit-status process))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
111 (delete-process process)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
112 (with-current-buffer (get-buffer-create output-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
113 (buffer-disable-undo)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
114 (erase-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
115 (if (file-exists-p output-file-name)
69791
4192bb0fddd0 2006-04-04 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69775
diff changeset
116 (let ((coding-system-for-read (if pgg-text-mode
4192bb0fddd0 2006-04-04 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69775
diff changeset
117 'raw-text
4192bb0fddd0 2006-04-04 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69775
diff changeset
118 'binary)))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
119 (insert-file-contents output-file-name)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
120 (set-buffer errors-buffer)
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
121 (if (memq status '(stop signal))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
122 (error "%s exited abnormally: '%s'" program exit-status))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
123 (if (= 127 exit-status)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
124 (error "%s could not be found" program))))
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
125 (if passphrase-with-newline
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
126 (pgg-clear-string passphrase-with-newline))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
127 (if encoded-passphrase-with-new-line
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
128 (pgg-clear-string encoded-passphrase-with-new-line))
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
129 (if (and process (eq 'run (process-status process)))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
130 (interrupt-process process))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
131 (if (file-exists-p output-file-name)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
132 (delete-file output-file-name))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
133 (set-default-file-modes orig-mode))))
69689
d9ccf8ac6466 2006-03-27 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69646
diff changeset
134
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
135 (defun pgg-gpg-possibly-cache-passphrase (passphrase &optional key notruncate)
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
136 (if (and passphrase
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
137 pgg-cache-passphrase
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
138 (progn
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
139 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
140 (re-search-forward "^\\[GNUPG:] \\(GOOD_PASSPHRASE\\>\\)\\|\\(SIG_CREATED\\)" nil t)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
141 (pgg-add-passphrase-to-cache
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
142 (or key
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
143 (progn
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
144 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
145 (if (re-search-forward
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
146 "^\\[GNUPG:] NEED_PASSPHRASE\\(_PIN\\)? \\w+ ?\\w*" nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
147 (substring (match-string 0) -8))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
148 passphrase
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
149 notruncate)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
150
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
151 (defvar pgg-gpg-all-secret-keys 'unknown)
69689
d9ccf8ac6466 2006-03-27 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69646
diff changeset
152
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
153 (defun pgg-gpg-lookup-all-secret-keys ()
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
154 "Return all secret keys present in secret key ring."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
155 (when (eq pgg-gpg-all-secret-keys 'unknown)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
156 (setq pgg-gpg-all-secret-keys '())
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
157 (let ((args (list "--with-colons" "--no-greeting" "--batch"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
158 "--list-secret-keys")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
159 (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
160 (apply #'call-process pgg-gpg-program nil t nil args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
161 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
162 (while (re-search-forward
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
163 "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
164 (push (substring (match-string 2) 8)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
165 pgg-gpg-all-secret-keys)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
166 pgg-gpg-all-secret-keys)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
167
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
168 (defun pgg-gpg-lookup-key (string &optional type)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
169 "Search keys associated with STRING."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
170 (let ((args (list "--with-colons" "--no-greeting" "--batch"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
171 (if type "--list-secret-keys" "--list-keys")
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
172 string)))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
173 (with-temp-buffer
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
174 (apply #'call-process pgg-gpg-program nil t nil args)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
175 (goto-char (point-min))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
176 (if (re-search-forward "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
177 nil t)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
178 (substring (match-string 2) 8)))))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
179
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
180 (defun pgg-gpg-lookup-key-owner (string &optional all)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
181 "Search keys associated with STRING and return owner of identified key.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
182
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
183 The value may be just the bare key id, or it may be a combination of the
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
184 user name associated with the key and the key id, with the key id enclosed
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
185 in \"<...>\" angle brackets.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
186
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
187 Optional ALL non-nil means search all keys, including secret keys."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
188 (let ((args (list "--with-colons" "--no-greeting" "--batch"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
189 (if all "--list-secret-keys" "--list-keys")
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
190 string))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
191 (key-regexp (concat "^\\(sec\\|pub\\)"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
192 ":[^:]*:[^:]*:[^:]*:\\([^:]*\\):[^:]*"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
193 ":[^:]*:[^:]*:[^:]*:\\([^:]*\\):")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
194 (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
195 (apply #'call-process pgg-gpg-program nil t nil args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
196 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
197 (if (re-search-forward key-regexp
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
198 nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
199 (match-string 3)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
200
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
201 (defun pgg-gpg-key-id-from-key-owner (key-owner)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
202 (cond ((not key-owner) nil)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
203 ;; Extract bare key id from outermost paired angle brackets, if any:
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
204 ((string-match "[^<]*<\\(.+\\)>[^>]*" key-owner)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
205 (substring key-owner (match-beginning 1)(match-end 1)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
206 (key-owner)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
207
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
208 (defun pgg-gpg-encrypt-region (start end recipients &optional sign passphrase)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
209 "Encrypt the current region between START and END.
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
210
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
211 If optional argument SIGN is non-nil, do a combined sign and encrypt.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
212
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
213 If optional PASSPHRASE is not specified, it will be obtained from the
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
214 passphrase cache or user."
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
215 (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
216 (passphrase (or passphrase
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
217 (when (and sign (not (pgg-gpg-use-agent-p)))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
218 (pgg-read-passphrase
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
219 (format "GnuPG passphrase for %s: "
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
220 pgg-gpg-user-id)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
221 pgg-gpg-user-id))))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
222 (args
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
223 (append
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
224 (list "--batch" "--armor" "--always-trust" "--encrypt")
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
225 (if pgg-text-mode (list "--textmode"))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
226 (if sign (list "--sign" "--local-user" pgg-gpg-user-id))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
227 (if recipients
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
228 (apply #'nconc
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
229 (mapcar (lambda (rcpt)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
230 (list pgg-gpg-recipient-argument rcpt))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
231 (append recipients
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
232 (if pgg-encrypt-for-me
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
233 (list pgg-gpg-user-id)))))))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
234 (pgg-gpg-process-region start end passphrase pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
235 (when sign
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
236 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
237 ;; Possibly cache passphrase under, e.g. "jas", for future sign.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
238 (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
239 ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
240 (pgg-gpg-possibly-cache-passphrase passphrase)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
241 (pgg-process-when-success)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
242
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
243 (defun pgg-gpg-encrypt-symmetric-region (start end &optional passphrase)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
244 "Encrypt the current region between START and END with symmetric cipher.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
245
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
246 If optional PASSPHRASE is not specified, it will be obtained from the
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
247 passphrase cache or user."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
248 (let* ((passphrase (or passphrase
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
249 (when (not (pgg-gpg-use-agent-p))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
250 (pgg-read-passphrase
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
251 "GnuPG passphrase for symmetric encryption: "))))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
252 (args
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
253 (append (list "--batch" "--armor" "--symmetric" )
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
254 (if pgg-text-mode (list "--textmode")))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
255 (pgg-gpg-process-region start end passphrase pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
256 (pgg-process-when-success)))
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
257
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
258 (defun pgg-gpg-decrypt-region (start end &optional passphrase)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
259 "Decrypt the current region between START and END.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
260
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
261 If optional PASSPHRASE is not specified, it will be obtained from the
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
262 passphrase cache or user."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
263 (let* ((current-buffer (current-buffer))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
264 (message-keys (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
265 (insert-buffer-substring current-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
266 (pgg-decode-armor-region (point-min) (point-max))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
267 (secret-keys (pgg-gpg-lookup-all-secret-keys))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
268 ;; XXX the user is stuck if they need to use the passphrase for
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
269 ;; any but the first secret key for which the message is
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
270 ;; encrypted. ideally, we would incrementally give them a
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
271 ;; chance with subsequent keys each time they fail with one.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
272 (key (pgg-gpg-select-matching-key message-keys secret-keys))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
273 (key-owner (and key (pgg-gpg-lookup-key-owner key t)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
274 (key-id (pgg-gpg-key-id-from-key-owner key-owner))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
275 (pgg-gpg-user-id (or key-id key
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
276 pgg-gpg-user-id pgg-default-user-id))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
277 (passphrase (or passphrase
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
278 (when (not (pgg-gpg-use-agent-p))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
279 (pgg-read-passphrase
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
280 (format (if (pgg-gpg-symmetric-key-p message-keys)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
281 "Passphrase for symmetric decryption: "
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
282 "GnuPG passphrase for %s: ")
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
283 (or key-owner "??"))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
284 pgg-gpg-user-id))))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
285 (args '("--batch" "--decrypt")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
286 (pgg-gpg-process-region start end passphrase pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
287 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
288 (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
289 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
290 (re-search-forward "^\\[GNUPG:] DECRYPTION_OKAY\\>" nil t))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
291
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
292 ;;;###autoload
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
293 (defun pgg-gpg-symmetric-key-p (message-keys)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
294 "True if decoded armor MESSAGE-KEYS has symmetric encryption indicator."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
295 (let (result)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
296 (dolist (key message-keys result)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
297 (when (and (eq (car key) 3)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
298 (member '(symmetric-key-algorithm) key))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
299 (setq result key)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
300
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
301 (defun pgg-gpg-select-matching-key (message-keys secret-keys)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
302 "Choose a key from MESSAGE-KEYS that matches one of the keys in SECRET-KEYS."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
303 (loop for message-key in message-keys
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
304 for message-key-id = (and (equal (car message-key) 1)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
305 (cdr (assq 'key-identifier
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
306 (cdr message-key))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
307 for key = (and message-key-id (pgg-lookup-key message-key-id 'encrypt))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
308 when (and key (member key secret-keys)) return key))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
309
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
310 (defun pgg-gpg-sign-region (start end &optional cleartext passphrase)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
311 "Make detached signature from text between START and END."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
312 (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
313 (passphrase (or passphrase
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
314 (when (not (pgg-gpg-use-agent-p))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
315 (pgg-read-passphrase
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
316 (format "GnuPG passphrase for %s: "
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
317 pgg-gpg-user-id)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
318 pgg-gpg-user-id))))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
319 (args
68762
970bf6e6463b Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents: 68651
diff changeset
320 (append (list (if cleartext "--clearsign" "--detach-sign")
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
321 "--armor" "--batch" "--verbose"
68762
970bf6e6463b Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents: 68651
diff changeset
322 "--local-user" pgg-gpg-user-id)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
323 (if pgg-text-mode (list "--textmode"))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
324 (inhibit-read-only t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
325 buffer-read-only)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
326 (pgg-gpg-process-region start end passphrase pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
327 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
328 ;; Possibly cache passphrase under, e.g. "jas", for future sign.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
329 (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
330 ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
331 (pgg-gpg-possibly-cache-passphrase passphrase))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
332 (pgg-process-when-success)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
333
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
334 (defun pgg-gpg-verify-region (start end &optional signature)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
335 "Verify region between START and END as the detached signature SIGNATURE."
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
336 (let ((args '("--batch" "--verify")))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
337 (when (stringp signature)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
338 (setq args (append args (list signature))))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
339 (setq args (append args '("-")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
340 (pgg-gpg-process-region start end nil pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
341 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
342 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
343 (while (re-search-forward "^gpg: \\(.*\\)\n" nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
344 (with-current-buffer pgg-output-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
345 (insert-buffer-substring pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
346 (match-beginning 1) (match-end 0)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
347 (delete-region (match-beginning 0) (match-end 0)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
348 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
349 (re-search-forward "^\\[GNUPG:] GOODSIG\\>" nil t))))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
350
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
351 (defun pgg-gpg-insert-key ()
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
352 "Insert public key at point."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
353 (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
354 (args (list "--batch" "--export" "--armor"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
355 pgg-gpg-user-id)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
356 (pgg-gpg-process-region (point)(point) nil pgg-gpg-program args)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
357 (insert-buffer-substring pgg-output-buffer)))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
358
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
359 (defun pgg-gpg-snarf-keys-region (start end)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
360 "Add all public keys in region between START and END to the keyring."
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
361 (let ((args '("--import" "--batch" "-")) status)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
362 (pgg-gpg-process-region start end nil pgg-gpg-program args)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
363 (set-buffer pgg-errors-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
364 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
365 (when (re-search-forward "^\\[GNUPG:] IMPORT_RES\\>" nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
366 (setq status (buffer-substring (match-end 0)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
367 (progn (end-of-line)(point)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
368 status (vconcat (mapcar #'string-to-number (split-string status))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
369 (erase-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
370 (insert (format "Imported %d key(s).
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
371 \tArmor contains %d key(s) [%d bad, %d old].\n"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
372 (+ (aref status 2)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
373 (aref status 10))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
374 (aref status 0)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
375 (aref status 1)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
376 (+ (aref status 4)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
377 (aref status 11)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
378 (if (zerop (aref status 9))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
379 ""
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
380 "\tSecret keys are imported.\n")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
381 (append-to-buffer pgg-output-buffer (point-min)(point-max))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
382 (pgg-process-when-success)))
69631
77a585c555e6 2006-03-22 Simon Josefsson <jas@extundo.com>
Simon Josefsson <jas@extundo.com>
parents: 69627
diff changeset
383
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
384 (defun pgg-gpg-update-agent ()
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
385 "Try to connet to gpg-agent and send UPDATESTARTUPTTY."
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
386 (if (fboundp 'make-network-process)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
387 (let* ((agent-info (getenv "GPG_AGENT_INFO"))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
388 (socket (and agent-info
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
389 (string-match "^\\([^:]*\\)" agent-info)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
390 (match-string 1 agent-info)))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
391 (conn (and socket
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
392 (make-network-process :name "gpg-agent-process"
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
393 :host 'local :family 'local
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
394 :service socket))))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
395 (when (and conn (eq (process-status conn) 'open))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
396 (process-send-string conn "UPDATESTARTUPTTY\n")
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
397 (delete-process conn)
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
398 t))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
399 ;; We can't check, so assume gpg-agent is up.
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
400 t))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
401
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
402 (defun pgg-gpg-use-agent-p ()
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
403 "Return t if `pgg-gpg-use-agent' is t and gpg-agent is available."
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
404 (and pgg-gpg-use-agent (pgg-gpg-update-agent)))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
405
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
406 (provide 'pgg-gpg)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
407
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
408 ;;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
409 ;;; pgg-gpg.el ends here