1 \input texinfo @c -*-texinfo-*-
5 @firstparagraphindent insert
11 This file describes PGG, an Emacs interface to various PGP implementations.
13 Copyright @copyright{} 2001, 2003, 2004, 2005, 2006, 2007, 2008
14 Free Software Foundation, Inc.
17 Permission is granted to copy, distribute and/or modify this document
18 under the terms of the GNU Free Documentation License, Version 1.3 or
19 any later version published by the Free Software Foundation; with no
20 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
21 and with the Back-Cover Texts as in (a) below. A copy of the license
22 is included in the section entitled ``GNU Free Documentation License''.
24 \e$B$3$NJ8=q$r!"%U%j!<%=%U%H%&%'%":bCDH/9T$N
\e(B GNU
\e$B%U%j!<J8=qMxMQ5vBz7@Ls=q
\e(B
25 \e$BBh
\e(B 1.3
\e$BHG$^$?$O$=$l0J9_$NHG$,Dj$a$k>r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9
\e(B
26 \e$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!H
\e(BA GNU Manual
\e$B!I$OI=I=;f
\e(B
27 \e$B%F%-%9%H!"0J2<$N
\e(B (a)
\e$B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#<L$O
\e(B
28 \e$B!V
\e(BGNU
\e$B%U%j!<J8=qMxMQ5vBz7@Ls=q!W$H$$$&>O$K4^$^$l$F$$$^$9!#
\e(B
30 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
31 modify this GNU manual. Buying copies from the FSF supports it in
32 developing GNU and promoting software freedom.''
34 (a) FSF
\e$B$NN"I=;f%F%-%9%H
\e(B:
\e$B!V$"$J$?$K$O$3$N
\e(B GNU Manual
\e$B$rJ#@=$7$?$jJQ99$9
\e(B
35 \e$B$k<+M3$,$"$j$^$9!#
\e(BFSF
\e$B$+$i$NJ#<L$N9XF~$O
\e(B GNU
\e$B$N3+H/$H%=%U%H%&%'%"$N<+M3
\e(B
36 \e$B$NB%?J$r;Y1g$7$^$9!#!W
\e(B
42 * PGG-ja: (pgg-ja). Emacs interface to various PGP implementations (Ja).
45 @settitle PGG @value{VERSION}
53 @vskip 0pt plus 1filll
61 \e$B$3$l$O
\e(B PGG
\e$B$N%^%K%e%"%k$G$9!#
\e(BPGG
\e$B$O!"0BA4$JDL?.$N$?$a$NMM!9$J%D!<%k
\e(B
62 \e$B$H
\e(B Emacs
\e$B$NCg$r<h$j;}$D%i%$%V%i%j!<$G$9!#$^$?!"
\e(BPGG
\e$B$O
\e(B MIME
\e$B%a%C%;!<%8$N
\e(B
63 \e$B0E9f2=$H2rFI!"$=$l$K=pL>$H8!>Z$N$?$a$NC1=c$J%f!<%6!<%$%s%?%U%'!<%9$bDs6!
\e(B
67 * Overview:: PGG
\e$B$H$O
\e(B
68 * Prerequisites::
\e$B$"$i$+$8$a$7$F$*$/$Y$-J#;($J;vJA
\e(B
69 * How to use::
\e$B$H$C$H$H;H$$;O$a$h$&
\e(B
71 * Parsing OpenPGP packets::
72 * GNU Free Documentation License::
\e$B$3$NJ8=q$NMxMQ5vBz7@Ls=q
\e(B
80 PGG
\e$B$O!"0BA4$JDL?.$N$?$a$NMM!9$J%D!<%k$H
\e(B Emacs
\e$B$NCg$r<h$j;}$D%i%$%V%i%j!<
\e(B
81 \e$B$G$9!#F1MM$N5!G=$O
\e(B Mailcrypt
\e$B$b;}$C$F$$$^$9$,!"
\e(BMailcrypt
\e$B$O
\e(B PGP/MIME
\e$B$N
\e(B
82 \e$B%$%s%U%i$GDL>oMQ$$$i$l$kJ,N%$5$l$?
\e(B PGP
\e$B%a%C%;!<%8$r<h$j07$&$3$H$,$G$-$^
\e(B
83 \e$B$;$s!#$3$l$,!";d
\e(B (
\e$B:n<T
\e(B)
\e$B$,?7$7$$%i%$%V%i%j!<$r=q$$$?<g$JM}M3$G$9!#
\e(B
85 PGP/MIME
\e$B$O
\e(B MIME Object Security Services (RFC1848)
\e$B$N<BAu$G$9!#$=$NI8=`
\e(B
86 \e$B$O
\e(B RFC2015
\e$B$G5-=R$5$l$F$$$^$9!#
\e(B
89 @chapter
\e$BI,MW>r7o
\e(B
91 PGG
\e$B$r;H$&$?$a$K$O!">/$J$/$H$b0l$D$N%W%i%$%P%7!<J]8n%7%9%F%`$N<BAu$,I,MW
\e(B
92 \e$B$G$9!#$3$N%^%K%e%"%k$O!"$=$N$h$&$J%W%m%0%i%`$r$9$G$K<hF@!"%$%s%9%H!<%k$7
\e(B
93 \e$B$F$$$F!"4pK\E*$J;H$$J}$rCN$C$F$$$k$3$H$rA[Dj$7$F$$$^$9!#
\e(B
95 \e$B%G%#%U%)%k%H$G$O
\e(B PGG
\e$B$O
\e(B GnuPG
\e$B$r;H$$$^$9!#$=$N$h$&$J%7%9%F%`$K47$l$F$$$J
\e(B
96 \e$B$$$N$G$"$l$P!"
\e(B@uref{http://www.gnupg.org/documentation/}
\e$B$K$"$k
\e(B GNU
97 Privacy Handbook (GPH)
\e$B$KL\$rDL$9$3$H$r4+$a$^$9!#
\e(B
99 GnuPG
\e$B$r;H$&>l9g$K$O
\e(B @code{gpg-agent}
\e$B$NMxMQ$r?d>)$7$^$9!#$=$l$O%P!<%8%g
\e(B
100 \e$B%s
\e(B 2.0
\e$B0J9_$N
\e(B GnuPG
\e$B$H$H$b$KG[I[$5$l$F$$$^$9!#$3$l$O!"$I$s$J%W%m%H%3%k$r
\e(B
101 \e$B;H$&$+$H$OL54X78$KHkL)80$r4IM}$9$k%G!<%b%s$G!"%Q%9%U%l!<%:$rF~NO$7$F%-%c%C
\e(B
102 \e$B%7%e$9$k$?$a$N:G$b0BA4$J<jCJ$rDs6!$7$^$9
\e(B (@pxref{Caching passphrase})
\e$B!#
\e(B
103 \e$B$=$l$,2TF/$7$F$$$k>l9g!"
\e(BPGG
\e$B$O%G%#%U%)%k%H$G
\e(B @code{gpg-agent}
\e$B$r;H$*$&$H
\e(B
104 \e$B$7$^$9!#
\e(B@xref{Invoking GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
106 PGG
\e$B$O
\e(B Pretty Good Privacy
\e$B%P!<%8%g%s
\e(B 2
\e$B$^$?$O%P!<%8%g%s
\e(B 5
\e$B$b%5%]!<%H$7
\e(B
110 @chapter
\e$B;H$$J}
\e(B
112 \e$B$3$N%i%$%V%i%j!<$N:G>e0L%$%s%?%U%'!<%9$O$H$F$bC1=c$G!"8x3+80$K$h$k0E9f$N
\e(B
113 \e$BA`:n$N$_$rA[Dj$7$F$$$^$9!#
\e(B
115 PGG
\e$B$r;H$&$?$a$K$O!"%"%W%j%1!<%7%g%s%W%m%0%i%`$NKAF,$G<!$N
\e(B S
\e$B<0$rI>2A$7
\e(B
122 \e$B<B9T;~$K
\e(B pgg.el
\e$B$NB8:_$r3NG'$7$?$$$J$i!">e5-$NJ}K!$G$O$J$/0J2<$N$h$&$K!"
\e(B
123 \e$BI,MW$J5!G=$N
\e(B autoload
\e$B$r@_Dj$9$k$3$H$b$G$-$^$9!#
\e(B
126 (autoload 'pgg-encrypt-region "pgg"
127 "Encrypt the current region." t)
128 (autoload 'pgg-encrypt-symmetric-region "pgg"
129 "Encrypt the current region with symmetric algorithm." t)
130 (autoload 'pgg-decrypt-region "pgg"
131 "Decrypt the current region." t)
132 (autoload 'pgg-sign-region "pgg"
133 "Sign the current region." t)
134 (autoload 'pgg-verify-region "pgg"
135 "Verify the current region." t)
136 (autoload 'pgg-insert-key "pgg"
137 "Insert the ASCII armored public key." t)
138 (autoload 'pgg-snarf-keys-region "pgg"
139 "Import public keys in the current region." t)
144 * Selecting an implementation::
145 * Caching passphrase::
146 * Default user identity::
150 @section
\e$B%f!<%6!<%3%^%s%I
\e(B
152 \e$B$3$N;~E@$G!"$$$/$D$+$N0E9f$K4X$9$k%3%^%s%I$r;H$&$3$H$,$G$-$^$9!#$3$l$i$N
\e(B
153 \e$B%3%^%s%I$N5sF0$O5/F0J}K!$K0MB8$7$^$9!#$3$l$i$N%3%^%s%I$O!"%i%$%V%i%j!<4X
\e(B
154 \e$B?t$H$7$FMxMQ$5$l$k$3$H$b$"$k$+$i$G$9!#Nc$($P!"$"$J$?$,$"$k=pL><T$N8x3+80
\e(B
155 \e$B$r;}$C$F$$$J$$$H
\e(B @code{pgg-verify-region}
\e$B$H$$$&4X?t$OB(:B$K<:GT$7$^$9$,!"
\e(B
156 \e$B$3$l$,BPOCE*$K8F$S=P$5$l$?>l9g$K$O!"%5!<%P!<$+$i8x3+80$r%@%&%s%m!<%I$9$k
\e(B
157 \e$B$+$I$&$+$r$"$J$?$K?R$M$^$9!#
\e(B
159 @deffn Command pgg-encrypt-region start end recipients &optional sign passphrase
160 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r
\e(B @var{recipients}
\e$B08$KAw$k$b$N$H$7
\e(B
161 \e$B$F0E9f2=$7$^$9!#BPOCE*$K8F$V$H!"<u?.<T$r?R$M$^$9!#
\e(B
163 \e$B0E9f2=$K@.8y$9$k$H!"8=:_$NNN0h$NFbMF$r0E9f2=$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
165 \e$B%*%W%7%g%s0z?t
\e(B @var{sign}
\e$B$,
\e(B @code{nil}
\e$B$G$J$+$C$?$i!"=pL>$H0E9f2=$rF1;~
\e(B
166 \e$B$K9T$J$$$^$9!#8=:_$3$N5!G=$O
\e(B GnuPG
\e$B$GF0:n$9$k$3$H$,3NG'$5$l$F$$$^$9$,!"
\e(B
167 PGP
\e$B$d
\e(B PGP5
\e$B$G$OF0:n$7$J$$$+$b$7$l$^$;$s!#
\e(B
169 \e$B%*%W%7%g%s0z?t
\e(B @var{passphrase}
\e$B$,
\e(B @code{nil}
\e$B$@$C$?$i!"%Q%9%U%l!<%:$N
\e(B
170 \e$B%-%c%C%7%e$+$i$+!"$^$?$O%f!<%6!<$KF~NO$7$F$b$i$&$3$H$K$h$C$F%Q%9%U%l!<%:
\e(B
174 @deffn Command pgg-encrypt-symmetric-region &optional start end passphrase
175 \e$B8=:_$N
\e(B @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r!"6&DL800E9f
\e(B (symmetric
176 cipher)
\e$B$G0E9f2=$7$^$9!#8F$S=P$7$?8e$G%Q%9%U%l!<%:$,?R$M$i$l$^$9!#
\e(B
178 \e$B%*%W%7%g%s0z?t
\e(B @var{passphrase}
\e$B$,
\e(B @code{nil}
\e$B$@$C$?$i!"%Q%9%U%l!<%:$N
\e(B
179 \e$B%-%c%C%7%e$+$i$+!"$^$?$O%f!<%6!<$KF~NO$7$F$b$i$&$3$H$K$h$C$F%Q%9%U%l!<%:
\e(B
182 \e$B6&DL800E9f$K$h$k0E9f2=$O!"8=:_
\e(B GnuPG
\e$B$@$1$G<BAu$5$l$F$$$^$9!#
\e(B
185 @deffn Command pgg-decrypt-region start end &optional passphrase
186 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r2rFI$7$^$9!#2rFI$K@.8y$9$k$H!"8=:_
\e(B
187 \e$B$NNN0h$NFbMF$r2rFI$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
189 \e$B%*%W%7%g%s0z?t
\e(B @var{passphrase}
\e$B$,
\e(B @code{nil}
\e$B$@$C$?$i!"%Q%9%U%l!<%:$N
\e(B
190 \e$B%-%c%C%7%e$+$i$+!"$^$?$O%f!<%6!<$KF~NO$7$F$b$i$&$3$H$K$h$C$F%Q%9%U%l!<%:
\e(B
194 @deffn Command pgg-sign-region start end &optional cleartext passphrase
195 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$N%F%-%9%H$K=pL>$7$^$9!#;0HVL\$N%*%W%7%g%s
\e(B
196 \e$B0z?t
\e(B @var{cleartext}
\e$B$,
\e(B @code{nil}
\e$B$G$O$J$$$+!"$"$k$$$OBPOCE*$K8F$P$l$?
\e(B
197 \e$B>l9g!"J,N%$5$l$?=pL>$r:n$j$^$;$s!#$=$N$h$&$J>l9g$K$O!"8=:_$NNN0h$NFbMF$r
\e(B
198 \e$B=pL>$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
200 \e$B%*%W%7%g%s0z?t
\e(B @var{passphrase}
\e$B$,
\e(B @code{nil}
\e$B$@$C$?$i!"%Q%9%U%l!<%:$N
\e(B
201 \e$B%-%c%C%7%e$+$i$+!"$^$?$O%f!<%6!<$KF~NO$7$F$b$i$&$3$H$K$h$C$F%Q%9%U%l!<%:
\e(B
205 @deffn Command pgg-verify-region start end &optional signature fetch
206 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k=pL>$r8!>Z$7$^$9!#;0HVL\$N%*%W
\e(B
207 \e$B%7%g%s0z?t
\e(B @var{signature}
\e$B$,
\e(B @code{nil}
\e$B$G$J$+$C$?$i!"$=$N0z?t$O8=:_$N
\e(B
208 \e$BNN0h$NJ,N%$5$l$?=pL>$N%U%!%$%k$H$7$F<h$j07$o$l$^$9!#
\e(B
210 \e$B;MHVL\$N%*%W%7%g%s0z?t
\e(B @var{fetch}
\e$B$,
\e(B @code{nil}
\e$B$G$O$J$$$+!"$"$k$$$OBP
\e(B
211 \e$BOCE*$K8F$P$l$?>l9g!"8x3+80$r%5!<%P!<$+$i<hF@$7$^$9!#
\e(B
214 @deffn Command pgg-insert-key
215 \e$B%f!<%6!<$N8x3+80$r<hF@$7$F!"$=$l$r
\e(B ASCII
\e$BAu9C$N7A<0$GA^F~$7$^$9!#
\e(B
218 @deffn Command pgg-snarf-keys-region start end
219 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k8x3+80$r=8$a!"%f!<%6!<$N80
\e(B
220 \e$BB+
\e(B (keyring)
\e$B$KDI2C$7$^$9!#
\e(B
223 @node Selecting an implementation
224 @section
\e$B$I$N<BAu$r;H$&$+
\e(B
226 PGP
\e$B$ONr;K$,D9$/!":#$G$OB?$/$N<BAu$rMxMQ$9$k$3$H$,$G$-$k$N$G!"$=$l$>$l$,
\e(B
227 \e$B;}$C$F$$$k8D!9$N5!G=$,$:$$$V$s0[$J$C$F$$$k$3$H$,$"$j$^$9!#Nc$(
\e(B
228 \e$B$P
\e(B GnuPG
\e$B$r;H$C$F$$$k$N$J$i$P!"0E9f%"%k%4%j%:%`$H$7$F
\e(B 3DES
\e$B$d
\e(B CAST5
\e$B!"
\e(B
229 BLOWFISH
\e$B$J$I$rA*$V$3$H$,$G$-$^$9$,!"
\e(BPGP
\e$B$N%P!<%8%g%s
\e(B 2
\e$B$O
\e(B IDEA
\e$B$7$+%5%]!<
\e(B
230 \e$B%H$7$F$$$^$;$s!#
\e(B
232 \e$B$I$N<BAu$r;H$&$+$O
\e(B @code{pgg-scheme}
\e$BJQ?t$,@)8f$7$^$9!#
\e(B@code{nil}
\e$B$@$C$?
\e(B
233 \e$B$i
\e(B (
\e$B$=$l$,%G%#%U%)%k%H
\e(B)
\e$B!"Be$o$j$K
\e(B @code{pgg-default-scheme}
\e$BJQ?t$NCM$r;H
\e(B
237 \e$B$I$N
\e(B PGP
\e$B<BAu$rMQ$$$k$+$r6/@)$7$^$9!#@_Dj$G$-$k$N$O
\e(B @code{gpg}
\e$B!"
\e(B
238 @code{pgp}
\e$B$*$h$S
\e(B @code{pgp5}
\e$B$N$I$l$+$G$9!#%G%#%U%)%k%H$O
\e(B @code{nil}
\e$B$G
\e(B
242 @defvar pgg-default-scheme
243 \e$B%G%#%U%)%k%H$N
\e(B PGP
\e$B<BAu$G$9!#CM$O
\e(B @code{gpg}
\e$B!"
\e(B@code{pgp}
\e$B$*$h
\e(B
244 \e$B$S
\e(B @code{pgp5}
\e$B$N$I$l$+$G$J$1$l$P$J$j$^$;$s!#%G%#%U%)%k%H
\e(B
245 \e$B$O
\e(B @code{gpg}
\e$B$G$9!#
\e(B
248 @node Caching passphrase
249 @section
\e$B%Q%9%U%l!<%:$r%-%c%C%7%e$9$k
\e(B
251 PGP
\e$B<BAu$H$7$F
\e(B GnuPG (gpg)
\e$B$r;H$&$N$G$"$l$P!"%Q%9%U%l!<%:$NF~NO$H%-%c%C
\e(B
252 \e$B%7%e
\e(B@footnote{@code{gpg-agent}
\e$B$O<B:]$K$O%Q%9%U%l!<%:$G$O$J$/$FHkL)80$r
\e(B
253 \e$B%-%c%C%7%e$7$^$9!#0lJ}%f!<%6!<$N;kE@$+$i$O!"$3$N5;=QE*$J:90[$O8+$($^$;
\e(B
254 \e$B$s!#
\e(B}
\e$B$9$k$?$a$K
\e(B @code{gpg-agent}
\e$B$H$$$&%W%m%0%i%`$r;H$&$3$H$r?d>)$7$^$9!#
\e(B
256 @defvar pgg-gpg-use-agent
257 @code{nil}
\e$B$G$J$$CM$G$O!"2DG=$J>l9g$O>o$K$$$D$G$b
\e(B @code{gpg-agent}
\e$B$r;H
\e(B
258 \e$B$*$&$H$7$^$9!#%G%#%U%#%U%)%k%H$O
\e(B @code{t}
\e$B$G$9!#
\e(B@code{gpg-agent}
\e$B$,2TF/
\e(B
259 \e$B$7$F$$$J$$$+!"$^$?$O
\e(B GnuPG
\e$B$,8=:_$N
\e(B PGP
\e$B<BAu$H$7$FA*Br$5$l$F$$$J$$>l9g$O!"
\e(B
260 PGG
\e$B<+?H$,;}$C$F$$$k%Q%9%U%l!<%:$r%-%c%C%7%e$9$k;EAH$_$,;H$o$l$^$9
\e(B (
\e$B2<5-
\e(B
261 \e$B;2>H
\e(B)
\e$B!#
\e(B
264 PGG
\e$B$G
\e(B @code{gpg-agent}
\e$B$r;H$&$K$O!"Bh0l$K
\e(B @code{gpg-agent}
\e$B$,3N<B$K2TF/
\e(B
265 \e$B$7$F$$$k$h$&$K$7$F$/$@$5$$!#Nc$($P
\e(B X Window System
\e$B$rAv$i$;$F$$$k$N$G$"
\e(B
266 \e$B$l$P!"0J2<$N9T$r$"$J$?$N
\e(B @file{.xsession}
\e$B%U%!%$%k$KCV$/$3$H$K$h$C$F!"$=
\e(B
267 \e$B$l$r3N<B$K$9$k$3$H$,$G$-$^$9
\e(B:
270 eval "$(gpg-agent --daemon)"
273 @code{gpg-agent}
\e$B$N5/F0$K4X$9$k$5$i$K>\$7$$$3$H$O!"
\e(B@xref{Invoking
274 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
276 GnuPG
\e$B$N%Q%9%U%l!<%:$rI,MW$H$9$k
\e(B PGG
\e$B$N5!G=$r<B9T$9$k$H$-$O$$$D$b!"
\e(B
277 GnuPG
\e$B$O
\e(B @code{gpg-agent}
\e$B$H$d$j<h$j$r9T$J$$!"$=$l$O$"$J$?$K%Q%9%U%l!<%:
\e(B
278 \e$B$rF~NO$9$k$3$H$rMW5a$7$^$9!#$7$+$7
\e(B @code{gpg-agent}
\e$B$,$=$N7k2L$r!V%-%c%C
\e(B
279 \e$B%7%e!W$9$k$N$G!"<!2s0J9_$N<B9T$G$O:F$S%Q%9%U%l!<%:$NF~NO$OMW$j$^$;$s!#
\e(B
280 (
\e$BDL>o$3$N%-%c%C%7%e$O0lDj;~4V7P2a8e$K4|8B@Z$l>C5n$5$l$^$9!#$3$l$rJQ99$9
\e(B
281 \e$B$k$K$O!"
\e(B@code{gpg-agent}
\e$B$r5/F0$9$k$H$-$K
\e(B @code{--default-cache-ttl}
\e$B%*
\e(B
282 \e$B%W%7%g%s$r;H$C$F$/$@$5$$!#
\e(B)
284 X Window System
\e$B$N4D6-$G$O
\e(B @code{gpg-agent}
\e$B$O%Q%9%U%l!<%:$NF~NO$rMW5a$9
\e(B
285 \e$B$k$?$a$K%0%i%U%#%C%/$J%&%#%s%I%&$r3+$-$^$9!#$7$+$7J8;zC<Kv$G
\e(B Emacs
\e$B$r;H$C
\e(B
286 \e$B$F$$$k>l9g$O!"
\e(B@code{gpg-agent}
\e$B$OC<Kv$+$i$NF~NO$r<u$1<h$k>e$GLdBj$,$"$j
\e(B
287 \e$B$^$9!#$=$l$,
\e(B Emacs
\e$B$KAw$i$l$F$7$^$&$+$i$G$9!#$3$NLdBj$KBP=h$9$k$?$a$N;C
\e(B
288 \e$BDjE*$JBP:v$N$R$H$D$O!"
\e(B@code{gpg-agent}
\e$B$r
\e(B @code{--keep-tty}
\e$B%*%W%7%g%s$H
\e(B
289 \e$B$H$b$K
\e(B Emacs
\e$B$H$OJL$NC<Kv$GAv$i$;$k$3$H$G$9!#$3$l$O
\e(B @code{gpg-agent}
\e$B$K!"
\e(B
290 \e$B%Q%9%U%l!<%:$NF~NO$K$=$l<+?H$NC<Kv$r;H$&$h$&$K$5$;$^$9!#
\e(B
292 @code{gpg-agent}
\e$B$r;H$o$J$$>l9g!"
\e(BPGG
\e$B$O
\e(B Emacs
\e$B$r2p$7$F%Q%9%U%l!<%:$NF~NO
\e(B
293 \e$B$rMW5a$7$^$9!#$3$l$K$O%Q%9%U%l!<%:$r%-%c%C%7%e$9$k;EAH$_$,$"$j!"$=$l$OJQ
\e(B
294 \e$B?t
\e(B @code{pgg-cache-passphrase}
\e$B$G@)8f$5$l$^$9
\e(B (
\e$B2<5-;2>H
\e(B)
\e$B!#
\e(B
296 @code{gpg-agent}
\e$B$G$O$J$/
\e(B PGG
\e$B$G%Q%9%U%l!<%:$r07$&>l9g$K$O0BA4>e$N%j%9%/
\e(B
297 \e$B$,$"$j$^$9!#
\e(BEmacs
\e$B$NMW5a$K=>$C$F%Q%9%U%l!<%:$rF~NO$9$k$H!"$=$l$O0l;~E*
\e(B
298 \e$B$K
\e(B Emacs
\e$B$,<B9T$7$F$$$k%a%b%j!<$K
\e(B cleartext
\e$BJ8;zNs$H$7$F3JG<$5$l$^$9!#$b
\e(B
299 \e$B$7$=$N%a%b%j!<$,%G%#%9%/$H$N4V$G
\e(B swap
\e$B$5$l$k$H!"M}O@>e
\e(B root
\e$B%f!<%6!<$O%Q
\e(B
300 \e$B%9%U%l!<%:$r
\e(B swap
\e$B%U%!%$%k$+$iCj=P$9$k$3$H$,$G$-$^$9!#$=$N>e!"$=$N%7%9%F
\e(B
301 \e$B%`$,GQ4~$5$l$?$jEpFq$K2q$C$?8e$b!"$=$N
\e(B cleartext
\e$B$N%Q%9%U%l!<%:$,4^$^$l
\e(B
302 \e$B$F$$$k
\e(B swap
\e$B%U%!%$%k$O%G%#%9%/$K;D$C$F$$$k$+$b$7$l$J$$$N$G$9!#
\e(B
303 @code{gpg-agent}
\e$B$O%a%b%j!<$r
\e(B lock
\e$B$9$k$h$&$J:v$r$b$C$F!"$3$NLdBj$r2sHr
\e(B
304 \e$B$7$F$$$^$9!#$=$l$O
\e(B Emacs
\e$B$K$O<BAu$5$l$F$$$^$;$s!#
\e(B
306 @defvar pgg-cache-passphrase
307 @code{nil}
\e$B$G$J$1$l$P!"%Q%9%U%l!<%:$rJ];}$7$^$9!#=i4|CM$O
\e(B @code{t}
\e$B$G$9!#
\e(B
308 \e$B$7$+$7!"$"$J$?$,%;%-%e%j%F%#$K$D$$$F5$3]$+$j$J$i!"$3$NJQ?t
\e(B
309 \e$B$r
\e(B @code{nil}
\e$B$K@_Dj$9$k$3$H$K$h$C$F!"%Q%9%U%l!<%:$N%-%c%C%7%e$r$d$a$5$;
\e(B
310 \e$B$k$3$H$,$G$-$^$9!#
\e(B
313 @defvar pgg-passphrase-cache-expiry
314 \e$B%Q%9%U%l!<%:$rJ];}$7$F$*$/;~4V$rIC$G;XDj$7$^$9!#
\e(B
317 \e$B%Q%9%U%l!<%:$,Hs
\e(B-ASCII
\e$BJ8;z$r4^$s$G$$$k>l9g$O!"$=$l$r%(%s%3!<%I$9$k$?$a
\e(B
318 \e$B$N
\e(B coding system
\e$B$r;XDj$9$kI,MW$,$"$j$^$9!#
\e(BGnuPG
\e$B$O%Q%9%U%l!<%:$rJ8;zNs
\e(B
319 \e$B$H$7$F$G$O$J$/!"%P%$%HNs$H$7$F07$&$+$i$G$9!#
\e(B
321 @defvar pgg-passphrase-coding-system
322 \e$B%Q%9%U%l!<%:$r%(%s%3!<%I$9$k$?$a$N
\e(B coding system
\e$B$G$9!#
\e(B
325 @node Default user identity
326 @section
\e$B%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
328 \e$BDL>o
\e(B PGP
\e$B$N<BAu$O!"0E9f2=$*$h$SI|9f2=$K;H$&E,@Z$J80$rA*$V$3$H$,$G$-$^$9
\e(B
329 \e$B$,!"$"$J$?$,0l$D0J>e$N80$r;}$C$F$$$k>l9g!"MQ$$$k80$N
\e(B id
\e$B$r;XDj$9$kI,MW$,
\e(B
332 @defvar pgg-default-user-id
333 \e$B%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
\e$B$G$9!#;XDj$7$J$$>l9g
\e(B
334 \e$B$O
\e(B @samp{(user-login-name)}
\e$B$NLa$jCM$,%G%#%U%)%k%H$K$J$j$^$9!#$3$NJQ?t$O
\e(B
335 \e$B%+%9%?%^%$%:2DG=$G$9!#
\e(B
338 @defvar pgg-gpg-user-id
339 GnuPG
\e$B$G;H$&%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
\e$B$G$9!#%G%#%U%)%k%H$O
\e(B @samp{nil}
\e$B$G
\e(B
340 \e$B$9!#
\e(B@code{nil}
\e$B$G$O$J$$CM$K$9$k$H!"
\e(B@samp{pgg-default-user-id}
\e$B$h$jM%@h$7
\e(B
341 \e$B$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
344 @defvar pgg-pgp-user-id
345 PGP 2.x/6.x
\e$B$G;H$&%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
\e$B$G$9!#%G%#%U%)%k%H
\e(B
346 \e$B$O
\e(B @samp{nil}
\e$B$G$9!#
\e(B@code{nil}
\e$B$G$O$J$$CM$K$9$k$H!"
\e(B
347 @samp{pgg-default-user-id}
\e$B$h$jM%@h$7$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
350 @defvar pgg-pgp5-user-id
351 PGP 5.x
\e$B$G;H$&%G%#%U%)%k%H$N%f!<%6
\e(B ID
\e$B$G$9!#%G%#%U%)%k%H$O
\e(B @samp{nil}
\e$B$G
\e(B
352 \e$B$9!#
\e(B@code{nil}
\e$B$G$O$J$$CM$K$9$k$H!"
\e(B@samp{pgg-default-user-id}
\e$B$h$jM%@h$7
\e(B
353 \e$B$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
357 @chapter
\e$B9=@.
\e(B
359 PGG
\e$B$O!V
\e(BPGP
\e$B<BAu$N%9%-!<%`
\e(B (
\e$BOHAH
\e(B)
\e$B!W$H$$$&9M$($rF3F~$7$^$9!#0J8e!"!V%9%-!<
\e(B
360 \e$B%`
\e(B (scheme)
\e$B!W$HI=5-$7$^$9!#$3$NMQ8l$O
\e(B luna object system
\e$B$G$N
\e(B singleton
361 object
\e$B$KM3Mh$7$^$9!#
\e(B
363 PGG
\e$B$O
\e(B PGP
\e$B$N5!G=$K%"%/%;%9$9$k$HF1;~$K$=$l$r3+H/$9$k$?$a$K@_7W$5$l$?$N
\e(B
364 \e$B$G!"$=$N9=@.$O!"Aj8_1?MQ@-$@$1$G$J$/3HD%@-$b9MN8$9$kI,MW$,$"$j$^$7$?!#$3
\e(B
365 \e$B$N>O$G$O!"
\e(BPGG
\e$B$N%P%C%/%(%s%I$r$I$N$h$&$K5-=R$9$k$+$rC5$7$J$,$i!"
\e(BPGG
\e$B$,$I
\e(B
366 \e$B$N$h$&$K$D$/$i$l$F$$$k$+$rC58!$7$F$_$^$7$g$&!#
\e(B
375 @section
\e$B=i4|2=
\e(B
377 \e$B%9%-!<%`$O!";H$&A0$K=i4|2=$5$l$J$1$l$P$J$j$^$;$s!#$?$@0l$D$N%9%-!<%`$r;H
\e(B
378 \e$B$&$3$H$rJ]>Z$9$k$N$,NI$$$G$7$g$&!#
\e(B
380 \e$B0J2<$N%3!<%I$O
\e(B @file{pgg-gpg.el}
\e$B$+$i$NH4$-=q$-$G$9!#$"
\e(B
381 \e$B$k
\e(B @code{pgg-gpg}
\e$B$N%9%-!<%`$,$$$C$?$s=i4|2=$5$l$k$H!"$=$l
\e(B
382 \e$B$O
\e(B @code{pgg-scheme-gpg-instance}
\e$BJQ?t$KJ]B8$5$l!"0J8e!":FMxMQ$5$l$^$9!#
\e(B
385 (defvar pgg-scheme-gpg-instance nil)
387 (defun pgg-make-scheme-gpg ()
388 (or pgg-scheme-gpg-instance
389 (setq pgg-scheme-gpg-instance
390 (luna-make-entity 'pgg-scheme-gpg))))
393 \e$B4X?t$NL>A0$O
\e(B @code{pgg-make-scheme-}
\e$B$N8e$m$K%P%C%/%(%s%IL>$rIU2C$7$?$b
\e(B
394 \e$B$N$K$7$J$1$l$P$J$j$^$;$s!#
\e(B
396 @node Back end methods
397 @section
\e$B%P%C%/%(%s%I$N%a%=%C%I
\e(B
399 \e$B3F%P%C%/%(%s%I$K$O!"$3$l$i$N%a%=%C%I$,B8:_$7$J$1$l$P$J$j$^$;$s!#%a%=%C%I
\e(B
400 \e$B$N<B9T7k2L$N%9%F!<%?%9$rCN$i$;$J$1$l$P$J$i$J$$$N$G!"%a%=%C%I$N=PNO$OFCJL
\e(B
401 \e$B$J%P%C%U%!!<$KJ]B8$5$l$^$9
\e(B (@pxref{Getting output})
\e$B!#
\e(B
403 @deffn Method pgg-scheme-lookup-key scheme string &optional type
404 @var{string}
\e$B$K4XO"IU$1$i$l$?80$rJV$7$^$9!#;0HVL\$N%*%W%7%g%s0z
\e(B
405 \e$B?t
\e(B @var{type}
\e$B$,Hs
\e(B-@code{nil}
\e$B$@$C$?$i!"HkL)$N80B+$+$i8!:w$7$^$9!#
\e(B
408 @deffn Method pgg-scheme-encrypt-region scheme start end recipients &optional sign passphrase
409 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r
\e(B @var{recipients}
\e$B08$KAw$k$b$N$H$7
\e(B
410 \e$B$F0E9f2=$7$^$9!#%*%W%7%g%s0z?t
\e(B @var{sign}
\e$B$,
\e(B @code{nil}
\e$B$G$J$+$C$?$i!"=p
\e(B
411 \e$BL>$H0E9f2=$rF1;~$K9T$J$$$^$9!#0E9f2=$K@.8y$9$k$H
\e(B @code{t}
\e$B$r!"<:GT$9$k
\e(B
412 \e$B$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
415 @deffn Method pgg-scheme-encrypt-symmetric-region scheme start end &optional passphrase
416 \e$B8=:_$N
\e(B @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r!"6&DL800E9f
\e(B (symmetric
417 cipher)
\e$B$H%Q%9%U%l!<%:$G0E9f2=$7$^$9!#0E9f2=$K@.8y$9$k$H
\e(B @code{t}
\e$B$rJV$7!"
\e(B
418 \e$B$=$&$G$J$1$l$P
\e(B @code{nil}
\e$B$rJV$7$^$9!#$3$N5!G=$O8=:_
\e(B GnuPG
\e$B$@$1$G<BAu$5
\e(B
422 @deffn Method pgg-scheme-decrypt-region scheme start end &optional passphrase
423 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r2rFI$7$^$9!#2rFI$K@.8y$9$k
\e(B
424 \e$B$H
\e(B @code{t}
\e$B$r!"<:GT$9$k$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
427 @deffn Method pgg-scheme-sign-region scheme start end &optional cleartext passphrase
428 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$N%F%-%9%H$K=pL>$7$^$9!#;0HVL\$N%*%W%7%g%s
\e(B
429 \e$B0z?t
\e(B @var{cleartext}
\e$B$,
\e(B @code{nil}
\e$B$G$O$J$$>l9g!"J,N%$5$l$?=pL>$r:n$j$^
\e(B
430 \e$B$;$s!#=pL>$K@.8y$9$k$H
\e(B @code{t}
\e$B$r!"<:GT$9$k$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
433 @deffn Method pgg-scheme-verify-region scheme start end &optional signature
434 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k=pL>$r8!>Z$7$^$9!#;0HVL\$N%*%W
\e(B
435 \e$B%7%g%s0z?t
\e(B @var{signature}
\e$B$,
\e(B @code{nil}
\e$B$G$J$+$C$?$i!"$=$N0z?t$O8=:_$N
\e(B
436 \e$BNN0h$NJ,N%$5$l$?=pL>$N%U%!%$%k$H$7$F<h$j07$o$l$^$9!#=pL>$,@5$7$/8!>Z$5$l
\e(B
437 \e$B$?>l9g$O
\e(B @code{t}
\e$B$r!"<:GT$9$k$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
440 @deffn Method pgg-scheme-insert-key scheme
441 \e$B%f!<%6!<$N8x3+80$r<hF@$7$F!"$=$l$r
\e(B ASCII
\e$BAu9C$N7A<0$GA^F~$7$^$9!#@.8y$9
\e(B
442 \e$B$k$H
\e(B @code{t}
\e$B$r!"<:GT$9$k$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
445 @deffn Method pgg-scheme-snarf-keys-region scheme start end
446 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k8x3+80$r=8$a!"%f!<%6!<$N80
\e(B
447 \e$BB+
\e(B (keyring)
\e$B$KDI2C$7$^$9!#@.8y$9$k$H
\e(B @code{t}
\e$B$r!"<:GT$9$k
\e(B
448 \e$B$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
452 @section
\e$B=PNO$rF@$k
\e(B
454 \e$B%P%C%/%(%s%I%a%=%C%I
\e(B (@pxref{Back end methods})
\e$B$N=PNO$OFCJL$J%P%C%U%!!<
\e(B
455 \e$B$K3JG<$5$l$^$9!#$7$?$,$C$F!"$3$l$i$N%a%=%C%I$O<B9T7k2L$rEA$($kI,MW$,$"$j
\e(B
458 @defvar pgg-errors-buffer
459 PGP
\e$B%3%^%s%I<B9T;~$NI8=`%(%i!<=PNO$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
462 @defvar pgg-output-buffer
463 PGP
\e$B%3%^%s%I<B9T;~$NI8=`=PNO$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
466 @defvar pgg-status-buffer
467 PGP
\e$B%3%^%s%I<B9T;~$N$=$NB>$N7k2L$N>pJs$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
470 @node Parsing OpenPGP packets
471 @chapter OpenPGP
\e$B%Q%1%C%H$N2r@O
\e(B
473 OpenPGP
\e$B$N%a%C%;!<%8$N%U%)!<%^%C%H$O!"Aj8_1?MQ$G$-$k%"%W%j%1!<%7%g%s3+H/
\e(B
474 \e$B$KI,MW$J$9$Y$F$N>pJs$r=PNO$9$k$h$&$K0];}$5$l$F$$$^$9!#$=$NI8=`
\e(B
475 \e$B$O
\e(B RFC2440
\e$B$K5-:\$5$l$F$$$^$9!#
\e(B
477 PGG
\e$B$O
\e(B OpenPGP
\e$B%Q%1%C%H$KBP1~$7$?FH<+$N%a%C%;!<%82r@O$r9T$J$$$^$9!#
\e(B
479 @defun pgg-parse-armor string
480 @var{string}
\e$BFb$N%Q%1%C%H$NJB$S$r
\e(B @code{list}
\e$B$N7A<0$GJV$7$^$9!#
\e(B
483 @defun pgg-parse-armor-region start end
484 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k%Q%1%C%H$NJB$S$r
\e(B @code{list}
\e$B$N
\e(B
485 \e$B7A<0$GJV$7$^$9!#
\e(B
488 @defvar pgg-ignore-packet-checksum
489 @code{nil}
\e$B$G$J$+$C$?$i!"%Q%1%C%H$N%A%'%C%/%5%`$r8!>Z$7$^$;$s!#
\e(B
492 @node GNU Free Documentation License
493 @chapter GNU
\e$B%U%j!<J8=qMxMQ5vBz7@Ls=q
\e(B
495 \e$BLuCm
\e(B: @uref{http://www.opensource.jp/fdl/fdl.ja.html.euc-jp,
496 \e$BHs8x<0$JF|K\8lLu
\e(B}
\e$B$,$"$j$^$9!#
\e(B
498 @include doclicense.texi
501 @unnumbered Function Index
505 @unnumbered Variable Index
513 @c coding: iso-2022-7bit
516 @c use-kuten-for-period: t
517 @c use-touten-for-comma: t