Mercurial > emacs
annotate lisp/pgg-gpg.el @ 71710:dbbc0b93cfeb
(Forcing Redisplay, Displaying Messages, Temporary Displays, Font Selection,
Auto Faces, Font Lookup, Fringe Indicators, Display Margins, Image Descriptors,
Showing Images, Image Cache, Button Types, Making Buttons, Manipulating
Buttons, Button Buffer Commands, Display Table Format, Glyphs): Remove
@tindex.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 08 Jul 2006 18:11:49 +0000 |
parents | a80d40a59be6 |
children | d69718b12697 |
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, |
68651
3bd95f4f2941
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
66520
diff
changeset
|
4 ;; 2005, 2006 Free Software Foundation, Inc. |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
5 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
6 ;; Author: Daiki Ueno <ueno@unixuser.org> |
69848
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
7 ;; Symmetric encryption and gpg-agent support added by: |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
8 ;; Sascha Wilde <wilde@sha-bang.de> |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
9 ;; Created: 1999/10/28 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
10 ;; Keywords: PGP, OpenPGP, GnuPG |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
11 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
12 ;; This file is part of GNU Emacs. |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
13 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
14 ;; GNU Emacs is free software; you can redistribute it and/or modify |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
15 ;; it under the terms of the GNU General Public License as published by |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
16 ;; the Free Software Foundation; either version 2, or (at your option) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
17 ;; any later version. |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
18 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
19 ;; GNU Emacs is distributed in the hope that it will be useful, |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
22 ;; GNU General Public License for more details. |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
23 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
24 ;; You should have received a copy of the GNU General Public License |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
27 ;; Boston, MA 02110-1301, USA. |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
28 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
29 ;;; Code: |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
30 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
31 (eval-when-compile |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
32 (require 'cl) ; for gpg macros |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
33 (require 'pgg)) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
34 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
35 (defgroup pgg-gpg () |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
36 "GnuPG interface." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
37 :group 'pgg) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
38 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
39 (defcustom pgg-gpg-program "gpg" |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
40 "The GnuPG executable." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
41 :group 'pgg-gpg |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
42 :type 'string) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
43 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
44 (defcustom pgg-gpg-extra-args nil |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
45 "Extra arguments for every GnuPG invocation." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
46 :group 'pgg-gpg |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
47 :type '(repeat (string :tag "Argument"))) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
48 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
49 (defcustom pgg-gpg-recipient-argument "--recipient" |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
50 "GnuPG option to specify recipient." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
51 :group 'pgg-gpg |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
52 :type '(choice (const :tag "New `--recipient' option" "--recipient") |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
53 (const :tag "Old `--remote-user' option" "--remote-user"))) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
54 |
69848
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
55 (defcustom pgg-gpg-use-agent nil |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
56 "Whether to use gnupg agent for key caching." |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
57 :group 'pgg-gpg |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
58 :type 'boolean) |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
59 |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
60 (defvar pgg-gpg-user-id nil |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
61 "GnuPG ID of your default identity.") |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
62 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
63 (defun pgg-gpg-process-region (start end passphrase program args) |
69848
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
64 (let* ((use-agent (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
|
65 (output-file-name (pgg-make-temp-file "pgg-output")) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
66 (args |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
67 `("--status-fd" "2" |
69848
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
68 ,@(if use-agent '("--use-agent") |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
69 (if passphrase '("--passphrase-fd" "0"))) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
70 "--yes" ; overwrite |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
71 "--output" ,output-file-name |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
72 ,@pgg-gpg-extra-args ,@args)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
73 (output-buffer pgg-output-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
74 (errors-buffer pgg-errors-buffer) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
75 (orig-mode (default-file-modes)) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
76 (process-connection-type nil) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
77 exit-status) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
78 (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
|
79 (buffer-disable-undo) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
80 (erase-buffer)) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
81 (unwind-protect |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
82 (progn |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
83 (set-default-file-modes 448) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
84 (let ((coding-system-for-write 'binary) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
85 (input (buffer-substring-no-properties start end)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
86 (default-enable-multibyte-characters nil)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
87 (with-temp-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
88 (when passphrase |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
89 (insert passphrase "\n")) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
90 (insert input) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
91 (setq exit-status |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
92 (apply #'call-process-region (point-min) (point-max) program |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
93 nil errors-buffer nil args)))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
94 (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
|
95 (buffer-disable-undo) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
96 (erase-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
97 (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
|
98 (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
|
99 'raw-text |
4192bb0fddd0
2006-04-04 Daiki Ueno <ueno@unixuser.org>
Simon Josefsson <jas@extundo.com>
parents:
69775
diff
changeset
|
100 'binary))) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
101 (insert-file-contents output-file-name))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
102 (set-buffer errors-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
103 (if (not (equal exit-status 0)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
104 (insert (format "\n%s exited abnormally: '%s'\n" |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
105 program exit-status))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
106 (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
|
107 (delete-file output-file-name)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
108 (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
|
109 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
110 (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
|
111 (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
|
112 pgg-cache-passphrase |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
113 (progn |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
114 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
115 (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
|
116 (pgg-add-passphrase-to-cache |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
117 (or key |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
118 (progn |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
119 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
120 (if (re-search-forward |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
121 "^\\[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
|
122 (substring (match-string 0) -8)))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
123 passphrase |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
124 notruncate))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
125 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
126 (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
|
127 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
128 (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
|
129 "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
|
130 (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
|
131 (setq pgg-gpg-all-secret-keys '()) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
132 (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
|
133 "--list-secret-keys"))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
134 (with-temp-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
135 (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
|
136 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
137 (while (re-search-forward |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
138 "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" nil t) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
139 (push (substring (match-string 2) 8) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
140 pgg-gpg-all-secret-keys))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
141 pgg-gpg-all-secret-keys) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
142 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
143 (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
|
144 "Search keys associated with STRING." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
145 (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
|
146 (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
|
147 string))) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
148 (with-temp-buffer |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
149 (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
|
150 (goto-char (point-min)) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
151 (if (re-search-forward "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
152 nil t) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
153 (substring (match-string 2) 8))))) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
154 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
155 (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
|
156 "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
|
157 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
158 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
|
159 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
|
160 in \"<...>\" angle brackets. |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
161 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
162 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
|
163 (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
|
164 (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
|
165 string)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
166 (key-regexp (concat "^\\(sec\\|pub\\)" |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
167 ":[^:]*:[^:]*:[^:]*:\\([^:]*\\):[^:]*" |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
168 ":[^:]*:[^:]*:[^:]*:\\([^:]*\\):"))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
169 (with-temp-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
170 (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
|
171 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
172 (if (re-search-forward key-regexp |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
173 nil t) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
174 (match-string 3))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
175 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
176 (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
|
177 (cond ((not key-owner) nil) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
178 ;; 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
|
179 ((string-match "[^<]*<\\(.+\\)>[^>]*" key-owner) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
180 (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
|
181 (key-owner))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
182 |
66520
67afcf271a8f
(pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents:
66383
diff
changeset
|
183 (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
|
184 "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
|
185 |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
186 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
|
187 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
188 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
|
189 passphrase cache or user." |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
190 (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
|
191 (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
|
192 (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
|
193 (pgg-read-passphrase |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
194 (format "GnuPG passphrase for %s: " |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
195 pgg-gpg-user-id) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
196 pgg-gpg-user-id)))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
197 (args |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
198 (append |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
199 (list "--batch" "--armor" "--always-trust" "--encrypt") |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
200 (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
|
201 (if sign (list "--sign" "--local-user" pgg-gpg-user-id)) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
202 (if recipients |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
203 (apply #'nconc |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
204 (mapcar (lambda (rcpt) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
205 (list pgg-gpg-recipient-argument rcpt)) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
206 (append recipients |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
207 (if pgg-encrypt-for-me |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
208 (list pgg-gpg-user-id))))))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
209 (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
|
210 (when sign |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
211 (with-current-buffer pgg-errors-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
212 ;; 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
|
213 (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
|
214 ;; 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
|
215 (pgg-gpg-possibly-cache-passphrase passphrase))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
216 (pgg-process-when-success))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
217 |
66520
67afcf271a8f
(pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents:
66383
diff
changeset
|
218 (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
|
219 "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
|
220 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
221 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
|
222 passphrase cache or user." |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
223 (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
|
224 (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
|
225 (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
|
226 "GnuPG passphrase for symmetric encryption: ")))) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
227 (args |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
228 (append (list "--batch" "--armor" "--symmetric" ) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
229 (if pgg-text-mode (list "--textmode"))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
230 (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
|
231 (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
|
232 |
67afcf271a8f
(pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents:
66383
diff
changeset
|
233 (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
|
234 "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
|
235 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
236 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
|
237 passphrase cache or user." |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
238 (let* ((current-buffer (current-buffer)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
239 (message-keys (with-temp-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
240 (insert-buffer-substring current-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
241 (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
|
242 (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
|
243 ;; 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
|
244 ;; 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
|
245 ;; 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
|
246 ;; 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
|
247 (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
|
248 (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
|
249 (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
|
250 (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
|
251 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
|
252 (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
|
253 (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
|
254 (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
|
255 (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
|
256 "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
|
257 "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
|
258 (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
|
259 pgg-gpg-user-id)))) |
69819
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
260 (args '("--batch" "--decrypt"))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
261 (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
|
262 (with-current-buffer pgg-errors-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
263 (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
|
264 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
265 (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
|
266 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
267 ;;;###autoload |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
268 (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
|
269 "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
|
270 (let (result) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
271 (dolist (key message-keys result) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
272 (when (and (eq (car key) 3) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
273 (member '(symmetric-key-algorithm) key)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
274 (setq result key))))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
275 |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
276 (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
|
277 "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
|
278 (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
|
279 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
|
280 (cdr (assq 'key-identifier |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
281 (cdr message-key)))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
282 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
|
283 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
|
284 |
66520
67afcf271a8f
(pgg-gpg-select-matching-key): Fixed: look at the right part of the
Eli Zaretskii <eliz@gnu.org>
parents:
66383
diff
changeset
|
285 (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
|
286 "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
|
287 (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
|
288 (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
|
289 (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
|
290 (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
|
291 (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
|
292 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
|
293 pgg-gpg-user-id)))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
294 (args |
68762
970bf6e6463b
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents:
68651
diff
changeset
|
295 (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
|
296 "--armor" "--batch" "--verbose" |
68762
970bf6e6463b
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-62
Miles Bader <miles@gnu.org>
parents:
68651
diff
changeset
|
297 "--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
|
298 (if pgg-text-mode (list "--textmode")))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
299 (inhibit-read-only t) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
300 buffer-read-only) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
301 (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
|
302 (with-current-buffer pgg-errors-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
303 ;; 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
|
304 (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
|
305 ;; 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
|
306 (pgg-gpg-possibly-cache-passphrase passphrase)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
307 (pgg-process-when-success))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
308 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
309 (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
|
310 "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
|
311 (let ((args '("--batch" "--verify"))) |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
312 (when (stringp signature) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
313 (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
|
314 (setq args (append args '("-"))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
315 (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
|
316 (with-current-buffer pgg-errors-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
317 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
318 (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
|
319 (with-current-buffer pgg-output-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
320 (insert-buffer-substring pgg-errors-buffer |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
321 (match-beginning 1) (match-end 0))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
322 (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
|
323 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
324 (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
|
325 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
326 (defun pgg-gpg-insert-key () |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
327 "Insert public key at point." |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
328 (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
|
329 (args (list "--batch" "--export" "--armor" |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
330 pgg-gpg-user-id))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
331 (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
|
332 (insert-buffer-substring pgg-output-buffer))) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
333 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
334 (defun pgg-gpg-snarf-keys-region (start end) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
335 "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
|
336 (let ((args '("--import" "--batch" "-")) status) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
337 (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
|
338 (set-buffer pgg-errors-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
339 (goto-char (point-min)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
340 (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
|
341 (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
|
342 (progn (end-of-line)(point))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
343 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
|
344 (erase-buffer) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
345 (insert (format "Imported %d key(s). |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
346 \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
|
347 (+ (aref status 2) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
348 (aref status 10)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
349 (aref status 0) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
350 (aref status 1) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
351 (+ (aref status 4) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
352 (aref status 11))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
353 (if (zerop (aref status 9)) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
354 "" |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
355 "\tSecret keys are imported.\n"))) |
f5b96aac4371
2006-04-06 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
69805
diff
changeset
|
356 (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
|
357 (pgg-process-when-success))) |
69631
77a585c555e6
2006-03-22 Simon Josefsson <jas@extundo.com>
Simon Josefsson <jas@extundo.com>
parents:
69627
diff
changeset
|
358 |
69848
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
359 (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
|
360 "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
|
361 (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
|
362 (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
|
363 (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
|
364 (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
|
365 (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
|
366 (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
|
367 (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
|
368 :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
|
369 :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
|
370 (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
|
371 (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
|
372 (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
|
373 t)) |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
374 ;; 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
|
375 t)) |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
376 |
a80d40a59be6
Revert to revision 1.8 to allow the use of gpg-agent.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69819
diff
changeset
|
377 (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
|
378 "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
|
379 (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
|
380 |
66383
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
381 (provide 'pgg-gpg) |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
382 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
383 ;;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000 |
c82982d6cbc4
Moved pgg*.el files from lisp/gnus to lisp.
Eli Zaretskii <eliz@gnu.org>
parents:
diff
changeset
|
384 ;;; pgg-gpg.el ends here |