annotate lisp/pgg-gpg.el @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents 38f9573be097
children a9dc0e7c3f2b
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,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2005, 2006, 2007, 2008 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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
66383
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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
17 ;; (at your option) any later version.
66383
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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
26
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
27 ;;; Code:
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 (eval-when-compile
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
30 (require 'cl) ; for gpg macros
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
31 (require 'pgg))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
32
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
33 (defgroup pgg-gpg ()
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
34 "GnuPG interface."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
35 :group 'pgg)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
36
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
37 (defcustom pgg-gpg-program "gpg"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
38 "The GnuPG executable."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
39 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
40 :type 'string)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
41
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
42 (defcustom pgg-gpg-extra-args nil
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
43 "Extra arguments for every GnuPG invocation."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
44 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
45 :type '(repeat (string :tag "Argument")))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
46
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
47 (defcustom pgg-gpg-recipient-argument "--recipient"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
48 "GnuPG option to specify recipient."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
49 :group 'pgg-gpg
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
50 :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
51 (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
52
74714
8efc97426784 (pgg-gpg-use-agent): Default to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 72686
diff changeset
53 (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
54 "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
55 :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
56 :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
57
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
58 (defvar pgg-gpg-user-id nil
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
59 "GnuPG ID of your default identity.")
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
60
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
61 (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
62 (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
63 (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
64 (args
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
65 `("--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
66 ,@(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
67 (if passphrase '("--passphrase-fd" "0")))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
68 "--yes" ; overwrite
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
69 "--output" ,output-file-name
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
70 ,@pgg-gpg-extra-args ,@args))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
71 (output-buffer pgg-output-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
72 (errors-buffer pgg-errors-buffer)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
73 (orig-mode (default-file-modes))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
74 (process-connection-type nil)
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
75 (inhibit-redisplay t)
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
76 process status exit-status
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
77 passphrase-with-newline
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
78 encoded-passphrase-with-new-line)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
79 (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
80 (buffer-disable-undo)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
81 (erase-buffer))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
82 (unwind-protect
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
83 (progn
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
84 (set-default-file-modes 448)
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
85 (let ((coding-system-for-write 'binary))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
86 (setq process
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
87 (apply #'start-process "*GnuPG*" errors-buffer
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
88 program args)))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
89 (set-process-sentinel process #'ignore)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
90 (when passphrase
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
91 (setq passphrase-with-newline (concat passphrase "\n"))
72686
2f8ec29373d1 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72653
diff changeset
92 (if pgg-passphrase-coding-system
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
93 (progn
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
94 (setq encoded-passphrase-with-new-line
74984
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
95 (encode-coding-string
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
96 passphrase-with-newline
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
97 (coding-system-change-eol-conversion
21f28d10d73a Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 74714
diff changeset
98 pgg-passphrase-coding-system 'unix)))
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
99 (pgg-clear-string passphrase-with-newline))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
100 (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
101 passphrase-with-newline nil))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
102 (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
103 (process-send-region process start end)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
104 (process-send-eof process)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
105 (while (eq 'run (process-status process))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
106 (accept-process-output process 5))
97237
38f9573be097 (pgg-gpg-process-region): Accept any remaining pending output coming
Chong Yidong <cyd@stupidchicken.com>
parents: 94678
diff changeset
107 ;; Accept any remaining pending output coming after the
38f9573be097 (pgg-gpg-process-region): Accept any remaining pending output coming
Chong Yidong <cyd@stupidchicken.com>
parents: 94678
diff changeset
108 ;; status change.
38f9573be097 (pgg-gpg-process-region): Accept any remaining pending output coming
Chong Yidong <cyd@stupidchicken.com>
parents: 94678
diff changeset
109 (accept-process-output process 5)
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
110 (setq status (process-status process)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
111 exit-status (process-exit-status process))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
112 (delete-process process)
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
113 (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
114 (buffer-disable-undo)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
115 (erase-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
116 (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
117 (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
118 'raw-text
4192bb0fddd0 2006-04-04 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents: 69775
diff changeset
119 'binary)))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
120 (insert-file-contents output-file-name)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
121 (set-buffer errors-buffer)
72632
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
122 (if (memq status '(stop signal))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
123 (error "%s exited abnormally: '%s'" program exit-status))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
124 (if (= 127 exit-status)
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
125 (error "%s could not be found" program))))
72653
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
126 (if passphrase-with-newline
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
127 (pgg-clear-string passphrase-with-newline))
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
128 (if encoded-passphrase-with-new-line
87c011891481 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 72632
diff changeset
129 (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
130 (if (and process (eq 'run (process-status process)))
d69718b12697 Merge from gnus--rel--5.10
Miles Bader <miles@gnu.org>
parents: 69848
diff changeset
131 (interrupt-process process))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
132 (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
133 (delete-file output-file-name))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
134 (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
135
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
136 (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
137 (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
138 pgg-cache-passphrase
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
139 (progn
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
140 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
141 (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
142 (pgg-add-passphrase-to-cache
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
143 (or key
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
144 (progn
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
145 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
146 (if (re-search-forward
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
147 "^\\[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
148 (substring (match-string 0) -8))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
149 passphrase
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
150 notruncate)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
151
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
152 (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
153
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
154 (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
155 "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
156 (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
157 (setq pgg-gpg-all-secret-keys '())
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
158 (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
159 "--list-secret-keys")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
160 (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
161 (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
162 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
163 (while (re-search-forward
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
164 "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
165 (push (substring (match-string 2) 8)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
166 pgg-gpg-all-secret-keys)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
167 pgg-gpg-all-secret-keys)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
168
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
169 (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
170 "Search keys associated with STRING."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
171 (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
172 (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
173 string)))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
174 (with-temp-buffer
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
175 (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
176 (goto-char (point-min))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
177 (if (re-search-forward "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)"
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
178 nil t)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
179 (substring (match-string 2) 8)))))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
180
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
181 (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
182 "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
183
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
184 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
185 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
186 in \"<...>\" angle brackets.
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
187
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
188 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
189 (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
190 (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
191 string))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
192 (key-regexp (concat "^\\(sec\\|pub\\)"
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 ":[^:]*:[^:]*:[^:]*:\\([^:]*\\):")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
195 (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
196 (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
197 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
198 (if (re-search-forward key-regexp
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
199 nil t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
200 (match-string 3)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
201
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
202 (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
203 (cond ((not key-owner) nil)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
204 ;; 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
205 ((string-match "[^<]*<\\(.+\\)>[^>]*" key-owner)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
206 (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
207 (key-owner)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
208
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
209 (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
210 "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
211
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
212 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
213
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
214 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
215 passphrase cache or user."
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
216 (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
217 (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
218 (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
219 (pgg-read-passphrase
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
220 (format "GnuPG passphrase for %s: "
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
221 pgg-gpg-user-id)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
222 pgg-gpg-user-id))))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
223 (args
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
224 (append
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
225 (list "--batch" "--armor" "--always-trust" "--encrypt")
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
226 (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
227 (if sign (list "--sign" "--local-user" pgg-gpg-user-id))
76110
d6f2673064e7 2007-02-24 Chris Moore <dooglus@gmail.com>
Kim F. Storm <storm@cua.dk>
parents: 75985
diff changeset
228 (if (or recipients pgg-encrypt-for-me)
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
229 (apply #'nconc
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
230 (mapcar (lambda (rcpt)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
231 (list pgg-gpg-recipient-argument rcpt))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
232 (append recipients
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
233 (if pgg-encrypt-for-me
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
234 (list pgg-gpg-user-id)))))))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
235 (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
236 (when sign
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
237 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
238 ;; 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
239 (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
240 ;; 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
241 (pgg-gpg-possibly-cache-passphrase passphrase)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
242 (pgg-process-when-success)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
243
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
244 (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
245 "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
246
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
247 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
248 passphrase cache or user."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
249 (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
250 (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
251 (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
252 "GnuPG passphrase for symmetric encryption: "))))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
253 (args
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
254 (append (list "--batch" "--armor" "--symmetric" )
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
255 (if pgg-text-mode (list "--textmode")))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
256 (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
257 (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
258
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
259 (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
260 "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
261
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
262 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
263 passphrase cache or user."
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
264 (let* ((current-buffer (current-buffer))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
265 (message-keys (with-temp-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
266 (insert-buffer-substring current-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
267 (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
268 (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
269 ;; 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
270 ;; 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
271 ;; 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
272 ;; 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
273 (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
274 (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
275 (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
276 (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
277 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
278 (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
279 (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
280 (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
281 (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
282 "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
283 "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
284 (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
285 pgg-gpg-user-id))))
69819
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
286 (args '("--batch" "--decrypt")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
287 (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
288 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
289 (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
290 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
291 (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
292
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
293 ;;;###autoload
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
294 (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
295 "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
296 (let (result)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
297 (dolist (key message-keys result)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
298 (when (and (eq (car key) 3)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
299 (member '(symmetric-key-algorithm) key))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
300 (setq result key)))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
301
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
302 (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
303 "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
304 (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
305 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
306 (cdr (assq 'key-identifier
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
307 (cdr message-key))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
308 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
309 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
310
66520
67afcf271a8f (pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents: 66383
diff changeset
311 (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
312 "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
313 (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
314 (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
315 (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
316 (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
317 (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
318 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
319 pgg-gpg-user-id))))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
320 (args
68762
970bf6e6463b Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents: 68651
diff changeset
321 (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
322 "--armor" "--batch" "--verbose"
68762
970bf6e6463b Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents: 68651
diff changeset
323 "--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
324 (if pgg-text-mode (list "--textmode"))))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
325 (inhibit-read-only t)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
326 buffer-read-only)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
327 (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
328 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
329 ;; 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
330 (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
331 ;; 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
332 (pgg-gpg-possibly-cache-passphrase passphrase))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
333 (pgg-process-when-success)))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
334
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
335 (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
336 "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
337 (let ((args '("--batch" "--verify")))
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
338 (when (stringp signature)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
339 (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
340 (setq args (append args '("-")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
341 (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
342 (with-current-buffer pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
343 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
344 (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
345 (with-current-buffer pgg-output-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
346 (insert-buffer-substring pgg-errors-buffer
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
347 (match-beginning 1) (match-end 0)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
348 (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
349 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
350 (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
351
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
352 (defun pgg-gpg-insert-key ()
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
353 "Insert public key at point."
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
354 (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
355 (args (list "--batch" "--export" "--armor"
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
356 pgg-gpg-user-id)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
357 (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
358 (insert-buffer-substring pgg-output-buffer)))
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
359
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
360 (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
361 "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
362 (let ((args '("--import" "--batch" "-")) status)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
363 (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
364 (set-buffer pgg-errors-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
365 (goto-char (point-min))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
366 (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
367 (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
368 (progn (end-of-line)(point)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
369 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
370 (erase-buffer)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
371 (insert (format "Imported %d key(s).
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
372 \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
373 (+ (aref status 2)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
374 (aref status 10))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
375 (aref status 0)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
376 (aref status 1)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
377 (+ (aref status 4)
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
378 (aref status 11)))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
379 (if (zerop (aref status 9))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
380 ""
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
381 "\tSecret keys are imported.\n")))
f5b96aac4371 2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 69805
diff changeset
382 (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
383 (pgg-process-when-success)))
69631
77a585c555e6 2006-03-22 Simon Josefsson <jas@extundo.com>
Simon Josefsson <jas@extundo.com>
parents: 69627
diff changeset
384
69848
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
385 (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
386 "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
387 (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
388 (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
389 (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
390 (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
391 (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
392 (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
393 (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
394 :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
395 :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
396 (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
397 (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
398 (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
399 t))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
400 ;; 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
401 t))
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
402
a80d40a59be6 Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 69819
diff changeset
403 (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
404 "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
405 (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
406
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
407 (provide 'pgg-gpg)
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
408
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
409 ;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000
66383
c82982d6cbc4 Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff changeset
410 ;;; pgg-gpg.el ends here