annotate doc/misc/pgg.texi @ 95981:0080e1e64a78

Add Cover-Texts.
author Glenn Morris <rgm@gnu.org>
date Mon, 16 Jun 2008 01:57:42 +0000
parents 5d58981e6690
children 6de181810d0f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 \input texinfo @c -*-texinfo-*-
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2
84329
3d431f1997d8 (setfilename): Go up one more level to ../../info.
Glenn Morris <rgm@gnu.org>
parents: 84310
diff changeset
3 @setfilename ../../info/pgg
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @set VERSION 0.1
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 @copying
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 This file describes PGG, an Emacs interface to various PGP implementations.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10
87903
5d58981e6690 Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 85712
diff changeset
11 Copyright @copyright{} 2001, 2003, 2004, 2005, 2006, 2007, 2008
5d58981e6690 Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 85712
diff changeset
12 Free Software Foundation, Inc.
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
13
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
14 @quotation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
15 Permission is granted to copy, distribute and/or modify this document
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16 under the terms of the GNU Free Documentation License, Version 1.2 or
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
17 any later version published by the Free Software Foundation; with no
95981
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
18 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
19 and with the Back-Cover Texts as in (a) below. A copy of the license
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
20 is included in the section entitled ``GNU Free Documentation License.''
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
21
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
22 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
23 modify this GNU manual. Buying copies from the FSF supports it in
0080e1e64a78 Add Cover-Texts.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
24 developing GNU and promoting software freedom.''
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 @end quotation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 @end copying
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 @dircategory Emacs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 @direntry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30 * PGG: (pgg). Emacs interface to various PGP implementations.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31 @end direntry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33 @settitle PGG @value{VERSION}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 @titlepage
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37 @title PGG
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39 @author by Daiki Ueno
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 @page
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 @vskip 0pt plus 1filll
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 @insertcopying
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 @end titlepage
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 @page
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 @node Top
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 @top PGG
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 This manual describes PGG. PGG is an interface library between Emacs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 and various tools for secure communication. PGG also provides a simple
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51 user interface to encrypt, decrypt, sign, and verify MIME messages.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 * Overview:: What PGG is.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 * Prerequisites:: Complicated stuff you may have to do.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 * How to use:: Getting started quickly.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 * Architecture::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 * Parsing OpenPGP packets::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 * GNU Free Documentation License:: The license for this documentation.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 * Function Index::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 * Variable Index::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 @node Overview
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65 @chapter Overview
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67 PGG is an interface library between Emacs and various tools for secure
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 communication. Even though Mailcrypt has similar feature, it does not
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 deal with detached PGP messages, normally used in PGP/MIME
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70 infrastructure. This was the main reason why I wrote the new library.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 PGP/MIME is an application of MIME Object Security Services (RFC1848).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 The standard is documented in RFC2015.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 @node Prerequisites
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 @chapter Prerequisites
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 PGG requires at least one implementation of privacy guard system.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 This document assumes that you have already obtained and installed them
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 and that you are familiar with its basic functions.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 By default, PGG uses GnuPG. If you are new to such a system, I
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 recommend that you should look over the GNU Privacy Handbook (GPH)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 which is available at @uref{http://www.gnupg.org/documentation/}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 When using GnuPG, we recommend the use of the @code{gpg-agent}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 program, which is distributed with versions 2.0 and later of GnuPG.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 This is a daemon to manage private keys independently from any
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 protocol, and provides the most secure way to input and cache your
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 passphrases (@pxref{Caching passphrase}). By default, PGG will
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 attempt to use @code{gpg-agent} if it is running. @xref{Invoking
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94 PGG also supports Pretty Good Privacy version 2 or version 5.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 @node How to use
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 @chapter How to use
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 The toplevel interface of this library is quite simple, and only
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100 intended to use with public-key cryptographic operation.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 To use PGG, evaluate following expression at the beginning of your
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 application program.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 (require 'pgg)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 @end lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 If you want to check existence of pgg.el at runtime, instead you can
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 list autoload setting for desired functions as follows.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 (autoload 'pgg-encrypt-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 "Encrypt the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 (autoload 'pgg-encrypt-symmetric-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 "Encrypt the current region with symmetric algorithm." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 (autoload 'pgg-decrypt-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 "Decrypt the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 (autoload 'pgg-sign-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 "Sign the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 (autoload 'pgg-verify-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 "Verify the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 (autoload 'pgg-insert-key "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 "Insert the ASCII armored public key." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 (autoload 'pgg-snarf-keys-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 "Import public keys in the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 @end lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 * User Commands::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131 * Selecting an implementation::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 * Caching passphrase::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 * Default user identity::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
136 @node User Commands
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137 @section User Commands
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139 At this time you can use some cryptographic commands. The behavior of
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 these commands relies on a fashion of invocation because they are also
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141 intended to be used as library functions. In case you don't have the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 signer's public key, for example, the function @code{pgg-verify-region}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 fails immediately, but if the function had been called interactively, it
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 would ask you to retrieve the signer's public key from the server.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146 @deffn Command pgg-encrypt-region start end recipients &optional sign passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 Encrypt the current region between @var{start} and @var{end} for
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148 @var{recipients}. When the function were called interactively, you
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 would be asked about the recipients.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151 If encryption is successful, it replaces the current region contents (in
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
153
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154 If optional argument @var{sign} is non-@code{nil}, the function is
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155 request to do a combined sign and encrypt. This currently is
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156 confirmed to work with GnuPG, but might not work with PGP or PGP5.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 @deffn Command pgg-encrypt-symmetric-region &optional start end passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 Encrypt the current region between @var{start} and @var{end} using a
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164 symmetric cipher. After invocation you are asked for a passphrase.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169 symmetric-cipher encryption is currently only implemented for GnuPG.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 @deffn Command pgg-decrypt-region start end &optional passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 Decrypt the current region between @var{start} and @var{end}. If
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 decryption is successful, it replaces the current region contents (in
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 @deffn Command pgg-sign-region start end &optional cleartext passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 Make the signature from text between @var{start} and @var{end}. If the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 optional third argument @var{cleartext} is non-@code{nil}, or the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 function is called interactively, it does not create a detached
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 signature. In such a case, it replaces the current region contents (in
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 @deffn Command pgg-verify-region start end &optional signature fetch
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193 Verify the current region between @var{start} and @var{end}. If the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 optional third argument @var{signature} is non-@code{nil}, it is treated
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 as the detached signature file of the current region.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197 If the optional 4th argument @var{fetch} is non-@code{nil}, or the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 function is called interactively, we attempt to fetch the signer's
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 public key from the key server.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
200 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202 @deffn Command pgg-insert-key
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203 Retrieve the user's public key and insert it as ASCII-armored format.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206 @deffn Command pgg-snarf-keys-region start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 Collect public keys in the current region between @var{start} and
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 @var{end}, and add them into the user's keyring.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
211 @node Selecting an implementation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 @section Selecting an implementation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
214 Since PGP has a long history and there are a number of PGP
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215 implementations available today, the function which each one has differs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216 considerably. For example, if you are using GnuPG, you know you can
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217 select cipher algorithm from 3DES, CAST5, BLOWFISH, and so on, but on
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
218 the other hand the version 2 of PGP only supports IDEA.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220 Which implementation is used is controlled by the @code{pgg-scheme}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 variable. If it is @code{nil} (the default), the value of the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222 @code{pgg-default-scheme} variable will be used instead.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224 @defvar pgg-scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 Force specify the scheme of PGP implementation. The value can be set to
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
226 @code{gpg}, @code{pgp}, and @code{pgp5}. The default is @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
227 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
228
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229 @defvar pgg-default-scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 The default scheme of PGP implementation. The value should be one of
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231 @code{gpg}, @code{pgp}, and @code{pgp5}. The default is @code{gpg}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234 @node Caching passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 @section Caching passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237 When using GnuPG (gpg) as the PGP scheme, we recommend using a program
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 called @code{gpg-agent} for entering and caching
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239 passphrases@footnote{Actually, @code{gpg-agent} does not cache
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 passphrases but private keys. On the other hand, from a user's point
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 of view, this technical difference isn't visible.}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243 @defvar pgg-gpg-use-agent
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244 If non-@code{nil}, attempt to use @code{gpg-agent} whenever possible.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245 The default is @code{t}. If @code{gpg-agent} is not running, or GnuPG
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 is not the current PGP scheme, PGG's own passphrase-caching mechanism
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
247 is used (see below).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
248 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
249
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250 To use @code{gpg-agent} with PGG, you must first ensure that
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251 @code{gpg-agent} is running. For example, if you are running in the X
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252 Window System, you can do this by putting the following line in your
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253 @file{.xsession} file:
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
254
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 @smallexample
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256 eval "$(gpg-agent --daemon)"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 @end smallexample
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259 For more details on invoking @code{gpg-agent}, @xref{Invoking
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262 Whenever you perform a PGG operation that requires a GnuPG passphrase,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263 GnuPG will contact @code{gpg-agent}, which prompts you for the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
264 passphrase. Furthermore, @code{gpg-agent} ``caches'' the result, so
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
265 that subsequent uses will not require you to enter the passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 again. (This cache usually expires after a certain time has passed;
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267 you can change this using the @code{--default-cache-ttl} option when
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268 invoking @code{gpg-agent}.)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270 If you are running in a X Window System environment, @code{gpg-agent}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271 prompts for a passphrase by opening a graphical window. However, if
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272 you are running Emacs on a text terminal, @code{gpg-agent} has trouble
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
273 receiving input from the terminal, since it is being sent to Emacs.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 One workaround for this problem is to run @code{gpg-agent} on a
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
275 different terminal from Emacs, with the @code{--keep-tty} option; this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276 tells @code{gpg-agent} use its own terminal to prompt for passphrases.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278 When @code{gpg-agent} is not being used, PGG prompts for a passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279 through Emacs. It also has its own passphrase caching mechanism,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 which is controlled by the variable @code{pgg-cache-passphrase} (see
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 below).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283 There is a security risk in handling passphrases through PGG rather
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 than @code{gpg-agent}. When you enter your passphrase into an Emacs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285 prompt, it is temporarily stored as a cleartext string in the memory
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286 of the Emacs executable. If the executable memory is swapped to disk,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 the root user can, in theory, extract the passphrase from the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288 swapfile. Furthermore, the swapfile containing the cleartext
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 passphrase might remain on the disk after the system is discarded or
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 stolen. @code{gpg-agent} avoids this problem by using certain tricks,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 such as memory locking, which have not been implemented in Emacs.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 @defvar pgg-cache-passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 If non-@code{nil}, store passphrases. The default value of this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295 variable is @code{t}. If you are worried about security issues,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 however, you could stop the caching of passphrases by setting this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297 variable to @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300 @defvar pgg-passphrase-cache-expiry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 Elapsed time for expiration in seconds.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 If your passphrase contains non-ASCII characters, you might need to
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 specify the coding system to be used to encode your passphrases, since
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 GnuPG treats them as a byte sequence, not as a character sequence.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 @defvar pgg-passphrase-coding-system
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 Coding system used to encode passphrase.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 @node Default user identity
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 @section Default user identity
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
314
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
315 The PGP implementation is usually able to select the proper key to use
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 for signing and decryption, but if you have more than one key, you may
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
317 need to specify the key id to use.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319 @defvar pgg-default-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 User ID of your default identity. It defaults to the value returned
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 by @samp{(user-login-name)}. You can customize this variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
322 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 @defvar pgg-gpg-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325 User ID of the GnuPG default identity. It defaults to @samp{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326 This overrides @samp{pgg-default-user-id}. You can customize this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 @defvar pgg-pgp-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331 User ID of the PGP 2.x/6.x default identity. It defaults to
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332 @samp{nil}. This overrides @samp{pgg-default-user-id}. You can
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 customize this variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336 @defvar pgg-pgp5-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337 User ID of the PGP 5.x default identity. It defaults to @samp{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 This overrides @samp{pgg-default-user-id}. You can customize this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
339 variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
340 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
341
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342 @node Architecture
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343 @chapter Architecture
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
344
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
345 PGG introduces the notion of a "scheme of PGP implementation" (used
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
346 interchangeably with "scheme" in this document). This term refers to a
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
347 singleton object wrapped with the luna object system.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
348
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
349 Since PGG was designed for accessing and developing PGP functionality,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
350 the architecture had to be designed not just for interoperability but
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
351 also for extensiblity. In this chapter we explore the architecture
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
352 while finding out how to write the PGG back end.
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355 * Initializing::
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
356 * Back end methods::
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
357 * Getting output::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
358 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
359
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 @node Initializing
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
361 @section Initializing
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
362
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
363 A scheme must be initialized before it is used.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
364 It had better guarantee to keep only one instance of a scheme.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
365
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
366 The following code is snipped out of @file{pgg-gpg.el}. Once an
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
367 instance of @code{pgg-gpg} scheme is initialized, it's stored to the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
368 variable @code{pgg-scheme-gpg-instance} and will be reused from now on.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 (defvar pgg-scheme-gpg-instance nil)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
372
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373 (defun pgg-make-scheme-gpg ()
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
374 (or pgg-scheme-gpg-instance
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
375 (setq pgg-scheme-gpg-instance
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
376 (luna-make-entity 'pgg-scheme-gpg))))
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377 @end lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
378
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
379 The name of the function must follow the
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
380 regulation---@code{pgg-make-scheme-} follows the back end name.
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
381
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
382 @node Back end methods
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
383 @section Back end methods
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
384
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
385 In each back end, these methods must be present. The output of these
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
386 methods is stored in special buffers (@ref{Getting output}), so that
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387 these methods must tell the status of the execution.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
388
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 @deffn Method pgg-scheme-lookup-key scheme string &optional type
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
390 Return keys associated with @var{string}. If the optional third
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
391 argument @var{type} is non-@code{nil}, it searches from the secret
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
392 keyrings.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
393 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
394
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 @deffn Method pgg-scheme-encrypt-region scheme start end recipients &optional sign passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
396 Encrypt the current region between @var{start} and @var{end} for
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
397 @var{recipients}. If @var{sign} is non-@code{nil}, do a combined sign
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
398 and encrypt. If encryption is successful, it returns @code{t},
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
399 otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
400 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 @deffn Method pgg-scheme-encrypt-symmetric-region scheme start end &optional passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 Encrypt the current region between @var{start} and @var{end} using a
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404 symmetric cipher and a passphrases. If encryption is successful, it
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405 returns @code{t}, otherwise @code{nil}. This function is currently only
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 implemented for GnuPG.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
409 @deffn Method pgg-scheme-decrypt-region scheme start end &optional passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 Decrypt the current region between @var{start} and @var{end}. If
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
411 decryption is successful, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
412 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
413
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 @deffn Method pgg-scheme-sign-region scheme start end &optional cleartext passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
415 Make the signature from text between @var{start} and @var{end}. If the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
416 optional third argument @var{cleartext} is non-@code{nil}, it does not
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
417 create a detached signature. If signing is successful, it returns
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
418 @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
419 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
420
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
421 @deffn Method pgg-scheme-verify-region scheme start end &optional signature
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
422 Verify the current region between @var{start} and @var{end}. If the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
423 optional third argument @var{signature} is non-@code{nil}, it is treated
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
424 as the detached signature of the current region. If the signature is
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
425 successfully verified, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
426 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
427
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
428 @deffn Method pgg-scheme-insert-key scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
429 Retrieve the user's public key and insert it as ASCII-armored format.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
430 On success, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
431 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
432
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
433 @deffn Method pgg-scheme-snarf-keys-region scheme start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
434 Collect public keys in the current region between @var{start} and
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
435 @var{end}, and add them into the user's keyring.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
436 On success, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
437 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
438
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
439 @node Getting output
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
440 @section Getting output
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
441
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
442 The output of the back end methods (@ref{Back end methods}) is stored in
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
443 special buffers, so that these methods must tell the status of the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
444 execution.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
445
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
446 @defvar pgg-errors-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
447 The standard error output of the execution of the PGP command is stored
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
448 here.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
449 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
450
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
451 @defvar pgg-output-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
452 The standard output of the execution of the PGP command is stored here.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
453 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
454
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
455 @defvar pgg-status-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
456 The rest of status information of the execution of the PGP command is
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
457 stored here.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
458 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
459
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
460 @node Parsing OpenPGP packets
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
461 @chapter Parsing OpenPGP packets
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
462
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
463 The format of OpenPGP messages is maintained in order to publish all
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
464 necessary information needed to develop interoperable applications.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
465 The standard is documented in RFC 2440.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
466
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
467 PGG has its own parser for the OpenPGP packets.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
468
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
469 @defun pgg-parse-armor string
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
470 List the sequence of packets in @var{string}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
471 @end defun
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
472
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
473 @defun pgg-parse-armor-region start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
474 List the sequence of packets in the current region between @var{start}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
475 and @var{end}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
476 @end defun
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
477
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
478 @defvar pgg-ignore-packet-checksum
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
479 If non-@code{nil}, don't check the checksum of the packets.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
480 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
481
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
482 @node GNU Free Documentation License
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
483 @appendix GNU Free Documentation License
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
484 @include doclicense.texi
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
485
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
486 @node Function Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
487 @unnumbered Function Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
488 @printindex fn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
489
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
490 @node Variable Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
491 @unnumbered Variable Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
492 @printindex vr
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
493
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
494 @summarycontents
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
495 @contents
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
496 @bye
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
497
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
498 @c End:
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
499
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
500 @ignore
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
501 arch-tag: 0c205838-34b9-41a5-b9d7-49ae57ccac85
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
502 @end ignore