Mercurial > emacs
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 |
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 | 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 | 75 (inhibit-redisplay t) |
76 process status exit-status | |
77 passphrase-with-newline | |
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 | 85 (let ((coding-system-for-write 'binary)) |
86 (setq process | |
87 (apply #'start-process "*GnuPG*" errors-buffer | |
88 program args))) | |
89 (set-process-sentinel process #'ignore) | |
90 (when passphrase | |
72653 | 91 (setq passphrase-with-newline (concat passphrase "\n")) |
72686 | 92 (if pgg-passphrase-coding-system |
72653 | 93 (progn |
94 (setq encoded-passphrase-with-new-line | |
74984 | 95 (encode-coding-string |
96 passphrase-with-newline | |
97 (coding-system-change-eol-conversion | |
98 pgg-passphrase-coding-system 'unix))) | |
72653 | 99 (pgg-clear-string passphrase-with-newline)) |
100 (setq encoded-passphrase-with-new-line passphrase-with-newline | |
101 passphrase-with-newline nil)) | |
102 (process-send-string process encoded-passphrase-with-new-line)) | |
72632 | 103 (process-send-region process start end) |
104 (process-send-eof process) | |
105 (while (eq 'run (process-status process)) | |
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 | 110 (setq status (process-status process) |
111 exit-status (process-exit-status process)) | |
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 | 122 (if (memq status '(stop signal)) |
123 (error "%s exited abnormally: '%s'" program exit-status)) | |
124 (if (= 127 exit-status) | |
125 (error "%s could not be found" program)))) | |
72653 | 126 (if passphrase-with-newline |
127 (pgg-clear-string passphrase-with-newline)) | |
128 (if encoded-passphrase-with-new-line | |
129 (pgg-clear-string encoded-passphrase-with-new-line)) | |
72632 | 130 (if (and process (eq 'run (process-status process))) |
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 |