annotate doc/misc/pgg.texi @ 92999:a831e708e37e

*** empty log message ***
author Kenichi Handa <handa@m17n.org>
date Sun, 16 Mar 2008 01:54:07 +0000
parents 5d58981e6690
children 0080e1e64a78
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
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 Texts. A copy of the license is included in the section entitled ``GNU
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 Free Documentation License.''
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 @end quotation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22 @end copying
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
23
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24 @dircategory Emacs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 @direntry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 * PGG: (pgg). Emacs interface to various PGP implementations.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 @end direntry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 @settitle PGG @value{VERSION}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32 @titlepage
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33 @title PGG
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 @author by Daiki Ueno
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 @page
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 @vskip 0pt plus 1filll
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39 @insertcopying
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 @end titlepage
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41 @page
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 @node Top
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 @top PGG
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 This manual describes PGG. PGG is an interface library between Emacs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 and various tools for secure communication. PGG also provides a simple
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 user interface to encrypt, decrypt, sign, and verify MIME messages.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 * Overview:: What PGG is.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51 * Prerequisites:: Complicated stuff you may have to do.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 * How to use:: Getting started quickly.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 * Architecture::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 * Parsing OpenPGP packets::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 * GNU Free Documentation License:: The license for this documentation.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 * Function Index::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 * Variable Index::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 @node Overview
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 @chapter Overview
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 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
64 communication. Even though Mailcrypt has similar feature, it does not
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65 deal with detached PGP messages, normally used in PGP/MIME
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 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
67
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 PGP/MIME is an application of MIME Object Security Services (RFC1848).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 The standard is documented in RFC2015.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 @node Prerequisites
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 @chapter Prerequisites
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 PGG requires at least one implementation of privacy guard system.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 This document assumes that you have already obtained and installed them
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 and that you are familiar with its basic functions.
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 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
79 recommend that you should look over the GNU Privacy Handbook (GPH)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 which is available at @uref{http://www.gnupg.org/documentation/}.
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 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
83 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
84 This is a daemon to manage private keys independently from any
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 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
86 passphrases (@pxref{Caching passphrase}). By default, PGG will
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 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
88 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 PGG also supports Pretty Good Privacy version 2 or version 5.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 @node How to use
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93 @chapter How to use
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 The toplevel interface of this library is quite simple, and only
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 intended to use with public-key cryptographic operation.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98 To use PGG, evaluate following expression at the beginning of your
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 application program.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 (require 'pgg)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 @end lisp
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 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
106 list autoload setting for desired functions as follows.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 (autoload 'pgg-encrypt-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 "Encrypt the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 (autoload 'pgg-encrypt-symmetric-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 "Encrypt the current region with symmetric algorithm." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 (autoload 'pgg-decrypt-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 "Decrypt the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 (autoload 'pgg-sign-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 "Sign the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 (autoload 'pgg-verify-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 "Verify the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 (autoload 'pgg-insert-key "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 "Insert the ASCII armored public key." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 (autoload 'pgg-snarf-keys-region "pgg"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 "Import public keys in the current region." t)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 @end lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 * User Commands::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 * Selecting an implementation::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 * Caching passphrase::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 * Default user identity::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 @node User Commands
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 @section User Commands
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135 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
136 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
137 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
138 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
139 fails immediately, but if the function had been called interactively, it
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 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
141
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 @deffn Command pgg-encrypt-region start end recipients &optional sign passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 Encrypt the current region between @var{start} and @var{end} for
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 @var{recipients}. When the function were called interactively, you
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145 would be asked about the recipients.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 If encryption is successful, it replaces the current region contents (in
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 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
151 request to do a combined sign and encrypt. This currently is
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 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
153
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156 @end deffn
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 @deffn Command pgg-encrypt-symmetric-region &optional start end passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 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
160 symmetric cipher. After invocation you are asked for a passphrase.
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 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 symmetric-cipher encryption is currently only implemented for GnuPG.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 @deffn Command pgg-decrypt-region start end &optional passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169 Decrypt the current region between @var{start} and @var{end}. If
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 decryption is successful, it replaces the current region contents (in
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175 @end deffn
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 @deffn Command pgg-sign-region start end &optional cleartext passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 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
179 optional third argument @var{cleartext} is non-@code{nil}, or the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 function is called interactively, it does not create a detached
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 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
182 the accessible portion) with the resulting data.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 If optional @var{passphrase} is @code{nil}, the passphrase will be
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 obtained from the passphrase cache or user.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 @end deffn
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 @deffn Command pgg-verify-region start end &optional signature fetch
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 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
190 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
191 as the detached signature file of the current region.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193 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
194 function is called interactively, we attempt to fetch the signer's
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 public key from the key server.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 @deffn Command pgg-insert-key
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 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
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-snarf-keys-region start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203 Collect public keys in the current region between @var{start} and
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 @var{end}, and add them into the user's keyring.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 @node Selecting an implementation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 @section Selecting an implementation
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 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
211 implementations available today, the function which each one has differs
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 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
213 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
214 the other hand the version 2 of PGP only supports IDEA.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216 Which implementation is used is controlled by the @code{pgg-scheme}
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217 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
218 @code{pgg-default-scheme} variable will be used instead.
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 @defvar pgg-scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 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
222 @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
223 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 @defvar pgg-default-scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
226 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
227 @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
228 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 @node Caching passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231 @section Caching passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233 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
234 called @code{gpg-agent} for entering and caching
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 passphrases@footnote{Actually, @code{gpg-agent} does not cache
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236 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
237 of view, this technical difference isn't visible.}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239 @defvar pgg-gpg-use-agent
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 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
241 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
242 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
243 is used (see below).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 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
247 @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
248 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
249 @file{.xsession} file:
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251 @smallexample
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252 eval "$(gpg-agent --daemon)"
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253 @end smallexample
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 For more details on invoking @code{gpg-agent}, @xref{Invoking
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 Whenever you perform a PGG operation that requires a GnuPG passphrase,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259 GnuPG will contact @code{gpg-agent}, which prompts you for the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 passphrase. Furthermore, @code{gpg-agent} ``caches'' the result, so
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261 that subsequent uses will not require you to enter the passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262 again. (This cache usually expires after a certain time has passed;
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263 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
264 invoking @code{gpg-agent}.)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
265
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 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
267 prompts for a passphrase by opening a graphical window. However, if
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268 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
269 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
270 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
271 different terminal from Emacs, with the @code{--keep-tty} option; this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272 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
273
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 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
275 through Emacs. It also has its own passphrase caching mechanism,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276 which is controlled by the variable @code{pgg-cache-passphrase} (see
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277 below).
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279 There is a security risk in handling passphrases through PGG rather
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 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
281 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
282 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
283 the root user can, in theory, extract the passphrase from the
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 swapfile. Furthermore, the swapfile containing the cleartext
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285 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
286 stolen. @code{gpg-agent} avoids this problem by using certain tricks,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 such as memory locking, which have not been implemented in Emacs.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 @defvar pgg-cache-passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 If non-@code{nil}, store passphrases. The default value of this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 variable is @code{t}. If you are worried about security issues,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292 however, you could stop the caching of passphrases by setting this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 variable to @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 @defvar pgg-passphrase-cache-expiry
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297 Elapsed time for expiration in seconds.
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 If your passphrase contains non-ASCII characters, you might need to
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 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
302 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
303
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 @defvar pgg-passphrase-coding-system
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 Coding system used to encode passphrase.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 @end defvar
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 @node Default user identity
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 @section Default user identity
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311 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
312 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
313 need to specify the key id to use.
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 @defvar pgg-default-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 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
317 by @samp{(user-login-name)}. You can customize this variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 @defvar pgg-gpg-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 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
322 This overrides @samp{pgg-default-user-id}. You can customize this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326 @defvar pgg-pgp-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 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
328 @samp{nil}. This overrides @samp{pgg-default-user-id}. You can
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 customize this variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332 @defvar pgg-pgp5-user-id
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 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
334 This overrides @samp{pgg-default-user-id}. You can customize this
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335 variable.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 @node Architecture
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
339 @chapter Architecture
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
340
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
341 PGG introduces the notion of a "scheme of PGP implementation" (used
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342 interchangeably with "scheme" in this document). This term refers to a
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343 singleton object wrapped with the luna object system.
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 Since PGG was designed for accessing and developing PGP functionality,
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
346 the architecture had to be designed not just for interoperability but
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
347 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
348 while finding out how to write the PGG back end.
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
349
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
350 @menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
351 * Initializing::
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
352 * Back end methods::
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353 * Getting output::
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354 @end menu
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
356 @node Initializing
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
357 @section Initializing
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
358
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
359 A scheme must be initialized before it is used.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 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
361
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
362 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
363 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
364 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
365
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
366 @lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
367 (defvar pgg-scheme-gpg-instance nil)
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
368
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369 (defun pgg-make-scheme-gpg ()
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 (or pgg-scheme-gpg-instance
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 (setq pgg-scheme-gpg-instance
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
372 (luna-make-entity 'pgg-scheme-gpg))))
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373 @end lisp
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
374
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
375 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
376 regulation---@code{pgg-make-scheme-} follows the back end name.
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
378 @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
379 @section Back end methods
84310
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
380
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
381 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
382 methods is stored in special buffers (@ref{Getting output}), so that
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
383 these methods must tell the status of the execution.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
384
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
385 @deffn Method pgg-scheme-lookup-key scheme string &optional type
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
386 Return keys associated with @var{string}. If the optional third
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387 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
388 keyrings.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
390
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
391 @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
392 Encrypt the current region between @var{start} and @var{end} for
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
393 @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
394 and encrypt. If encryption is successful, it returns @code{t},
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
396 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
397
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
398 @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
399 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
400 symmetric cipher and a passphrases. If encryption is successful, it
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401 returns @code{t}, otherwise @code{nil}. This function is currently only
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 implemented for GnuPG.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405 @deffn Method pgg-scheme-decrypt-region scheme start end &optional passphrase
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 Decrypt the current region between @var{start} and @var{end}. If
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407 decryption is successful, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
409
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 @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
411 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
412 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
413 create a detached signature. If signing is successful, it returns
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
415 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
416
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
417 @deffn Method pgg-scheme-verify-region scheme start end &optional signature
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
418 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
419 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
420 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
421 successfully verified, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
422 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
423
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
424 @deffn Method pgg-scheme-insert-key scheme
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
425 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
426 On success, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
427 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
428
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
429 @deffn Method pgg-scheme-snarf-keys-region scheme start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
430 Collect public keys in the current region between @var{start} and
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
431 @var{end}, and add them into the user's keyring.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
432 On success, it returns @code{t}, otherwise @code{nil}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
433 @end deffn
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
434
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
435 @node Getting output
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
436 @section Getting output
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
437
85712
a3c27999decb Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents: 84329
diff changeset
438 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
439 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
440 execution.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
441
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
442 @defvar pgg-errors-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
443 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
444 here.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
445 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
446
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
447 @defvar pgg-output-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
448 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
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-status-buffer
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
452 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
453 stored here.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
454 @end defvar
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
455
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
456 @node Parsing OpenPGP packets
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
457 @chapter Parsing OpenPGP packets
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
458
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
459 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
460 necessary information needed to develop interoperable applications.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
461 The standard is documented in RFC 2440.
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 PGG has its own parser for the OpenPGP packets.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
464
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
465 @defun pgg-parse-armor string
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
466 List the sequence of packets in @var{string}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
467 @end defun
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-region start end
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
470 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
471 and @var{end}.
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
472 @end defun
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
473
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
474 @defvar pgg-ignore-packet-checksum
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
475 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
476 @end defvar
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 @node GNU Free Documentation License
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
479 @appendix GNU Free Documentation License
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
480 @include doclicense.texi
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 Function Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
483 @unnumbered Function Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
484 @printindex fn
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 Variable Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
487 @unnumbered Variable Index
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
488 @printindex vr
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 @summarycontents
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
491 @contents
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
492 @bye
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 @c End:
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
495
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
496 @ignore
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
497 arch-tag: 0c205838-34b9-41a5-b9d7-49ae57ccac85
9626e8859adb Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
498 @end ignore