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 Free Software
17 Permission is granted to copy, distribute and/or modify this document
18 under the terms of the GNU Free Documentation License, Version 1.2 or
19 any later version published by the Free Software Foundation; with no
20 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
21 Texts. A copy of the license is included in the section entitled ``GNU
22 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.2
\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,!"I=I=;f%F%-%9%H$*$h$SN"I=;f%F%-%9%H$O;X
\e(B
27 \e$BDj$7$^$;$s!#$3$NMxMQ5vBz7@Ls=q$NJ#<L$O!V
\e(BGNU
\e$B%U%j!<J8=qMxMQ5vBz7@Ls=q!W$H
\e(B
28 \e$B$$$&>O$K4^$^$l$F$$$^$9!#
\e(B
34 * PGG-ja: (pgg-ja). Emacs interface to various PGP implementations (Ja).
37 @settitle PGG @value{VERSION}
45 @vskip 0pt plus 1filll
53 \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
54 \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
55 \e$B0E9f2=$H2rFI!"$=$l$K=pL>$H8!>Z$N$?$a$NC1=c$J%f!<%6!<%$%s%?%U%'!<%9$bDs6!
\e(B
59 * Overview:: PGG
\e$B$H$O
\e(B
60 * Prerequisites::
\e$B$"$i$+$8$a$7$F$*$/$Y$-J#;($J;vJA
\e(B
61 * How to use::
\e$B$H$C$H$H;H$$;O$a$h$&
\e(B
63 * Parsing OpenPGP packets::
64 * GNU Free Documentation License::
\e$B$3$NJ8=q$NMxMQ5vBz7@Ls=q
\e(B
72 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
73 \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
74 \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
75 \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
77 PGP/MIME
\e$B$O
\e(B MIME Object Security Services (RFC1848)
\e$B$N<BAu$G$9!#$=$NI8=`
\e(B
78 \e$B$O
\e(B RFC2015
\e$B$G5-=R$5$l$F$$$^$9!#
\e(B
81 @chapter
\e$BI,MW>r7o
\e(B
83 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
84 \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
85 \e$B$F$$$F!"4pK\E*$J;H$$J}$rCN$C$F$$$k$3$H$rA[Dj$7$F$$$^$9!#
\e(B
87 \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
88 \e$B$$$N$G$"$l$P!"
\e(B@uref{http://www.gnupg.org/documentation/}
\e$B$K$"$k
\e(B GNU
89 Privacy Handbook (GPH)
\e$B$KL\$rDL$9$3$H$r4+$a$^$9!#
\e(B
91 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
92 \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
93 \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
94 \e$B%7%e$9$k$?$a$N:G$b0BA4$J<jCJ$rDs6!$7$^$9
\e(B (@pxref{Caching passphrase})
\e$B!#
\e(B
95 \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
96 \e$B$7$^$9!#
\e(B@xref{Invoking GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
98 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
102 @chapter
\e$B;H$$J}
\e(B
104 \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
105 \e$BA`:n$N$_$rA[Dj$7$F$$$^$9!#
\e(B
107 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
114 \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
115 \e$BI,MW$J5!G=$N
\e(B autoload
\e$B$r@_Dj$9$k$3$H$b$G$-$^$9!#
\e(B
118 (autoload 'pgg-encrypt-region "pgg"
119 "Encrypt the current region." t)
120 (autoload 'pgg-encrypt-symmetric-region "pgg"
121 "Encrypt the current region with symmetric algorithm." t)
122 (autoload 'pgg-decrypt-region "pgg"
123 "Decrypt the current region." t)
124 (autoload 'pgg-sign-region "pgg"
125 "Sign the current region." t)
126 (autoload 'pgg-verify-region "pgg"
127 "Verify the current region." t)
128 (autoload 'pgg-insert-key "pgg"
129 "Insert the ASCII armored public key." t)
130 (autoload 'pgg-snarf-keys-region "pgg"
131 "Import public keys in the current region." t)
136 * Selecting an implementation::
137 * Caching passphrase::
138 * Default user identity::
142 @section
\e$B%f!<%6!<%3%^%s%I
\e(B
144 \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
145 \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
146 \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
147 \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
148 \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
149 \e$B$+$I$&$+$r$"$J$?$K?R$M$^$9!#
\e(B
151 @deffn Command pgg-encrypt-region start end recipients &optional sign passphrase
152 @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
153 \e$B$F0E9f2=$7$^$9!#BPOCE*$K8F$V$H!"<u?.<T$r?R$M$^$9!#
\e(B
155 \e$B0E9f2=$K@.8y$9$k$H!"8=:_$NNN0h$NFbMF$r0E9f2=$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
157 \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
158 \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
159 PGP
\e$B$d
\e(B PGP5
\e$B$G$OF0:n$7$J$$$+$b$7$l$^$;$s!#
\e(B
161 \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
162 \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
166 @deffn Command pgg-encrypt-symmetric-region &optional start end passphrase
167 \e$B8=:_$N
\e(B @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r!"6&DL800E9f
\e(B (symmetric
168 cipher)
\e$B$G0E9f2=$7$^$9!#8F$S=P$7$?8e$G%Q%9%U%l!<%:$,?R$M$i$l$^$9!#
\e(B
170 \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
171 \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 \e$B6&DL800E9f$K$h$k0E9f2=$O!"8=:_
\e(B GnuPG
\e$B$@$1$G<BAu$5$l$F$$$^$9!#
\e(B
177 @deffn Command pgg-decrypt-region start end &optional passphrase
178 @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
179 \e$B$NNN0h$NFbMF$r2rFI$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
181 \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
182 \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
186 @deffn Command pgg-sign-region start end &optional cleartext passphrase
187 @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
188 \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
189 \e$B>l9g!"J,N%$5$l$?=pL>$r:n$j$^$;$s!#$=$N$h$&$J>l9g$K$O!"8=:_$NNN0h$NFbMF$r
\e(B
190 \e$B=pL>$7$?%G!<%?$GCV$-49$($^$9!#
\e(B
192 \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
193 \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
197 @deffn Command pgg-verify-region start end &optional signature fetch
198 @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
199 \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
200 \e$BNN0h$NJ,N%$5$l$?=pL>$N%U%!%$%k$H$7$F<h$j07$o$l$^$9!#
\e(B
202 \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
203 \e$BOCE*$K8F$P$l$?>l9g!"8x3+80$r%5!<%P!<$+$i<hF@$7$^$9!#
\e(B
206 @deffn Command pgg-insert-key
207 \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
210 @deffn Command pgg-snarf-keys-region start end
211 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k8x3+80$r=8$a!"%f!<%6!<$N80
\e(B
212 \e$BB+
\e(B (keyring)
\e$B$KDI2C$7$^$9!#
\e(B
215 @node Selecting an implementation
216 @section
\e$B$I$N<BAu$r;H$&$+
\e(B
218 PGP
\e$B$ONr;K$,D9$/!":#$G$OB?$/$N<BAu$rMxMQ$9$k$3$H$,$G$-$k$N$G!"$=$l$>$l$,
\e(B
219 \e$B;}$C$F$$$k8D!9$N5!G=$,$:$$$V$s0[$J$C$F$$$k$3$H$,$"$j$^$9!#Nc$(
\e(B
220 \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
221 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
222 \e$B%H$7$F$$$^$;$s!#
\e(B
224 \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
225 \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
229 \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
230 @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
234 @defvar pgg-default-scheme
235 \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
236 \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
237 \e$B$O
\e(B @code{gpg}
\e$B$G$9!#
\e(B
240 @node Caching passphrase
241 @section
\e$B%Q%9%U%l!<%:$r%-%c%C%7%e$9$k
\e(B
243 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
244 \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
245 \e$B%-%c%C%7%e$7$^$9!#0lJ}%f!<%6!<$N;kE@$+$i$O!"$3$N5;=QE*$J:90[$O8+$($^$;
\e(B
246 \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
248 @defvar pgg-gpg-use-agent
249 @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
250 \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
251 \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
252 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
253 \e$B;2>H
\e(B)
\e$B!#
\e(B
256 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
257 \e$B$7$F$$$k$h$&$K$7$F2<$5$$!#Nc$($P
\e(B X Window System
\e$B$rAv$i$;$F$$$k$N$G$"$l
\e(B
258 \e$B$P!"0J2<$N9T$r$"$J$?$N
\e(B @file{.xsession}
\e$B%U%!%$%k$KCV$/$3$H$K$h$C$F!"$=$l
\e(B
259 \e$B$r3N<B$K$9$k$3$H$,$G$-$^$9
\e(B:
262 eval "$(gpg-agent --daemon)"
265 @code{gpg-agent}
\e$B$N5/F0$K4X$9$k$5$i$K>\$7$$$3$H$O!"
\e(B@xref{Invoking
266 GPG-AGENT,,,gnupg,Using the GNU Privacy Guard}.
268 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
269 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
270 \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
271 \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
272 (
\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
273 \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
274 \e$B%W%7%g%s$r;H$C$F2<$5$$!#
\e(B)
276 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
277 \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
278 \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
279 \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
280 \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
281 \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
282 \e$B%Q%9%U%l!<%:$NF~NO$K$=$l<+?H$NC<Kv$r;H$&$h$&$K$5$;$^$9!#
\e(B
284 @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
285 \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
286 \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
288 @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
289 \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
290 \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
291 \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
292 \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
293 \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
294 \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
295 @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
296 \e$B$7$F$$$^$9!#$=$l$O
\e(B Emacs
\e$B$K$O<BAu$5$l$F$$$^$;$s!#
\e(B
298 @defvar pgg-cache-passphrase
299 @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
300 \e$B$7$+$7!"$"$J$?$,%;%-%e%j%F%#$K$D$$$F5$3]$+$j$J$i!"$3$NJQ?t
\e(B
301 \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
302 \e$B$k$3$H$,$G$-$^$9!#
\e(B
305 @defvar pgg-passphrase-cache-expiry
306 \e$B%Q%9%U%l!<%:$rJ];}$7$F$*$/;~4V$rIC$G;XDj$7$^$9!#
\e(B
309 \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
310 \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
311 \e$B$H$7$F$G$O$J$/!"%P%$%HNs$H$7$F07$&$+$i$G$9!#
\e(B
313 @defvar pgg-passphrase-coding-system
314 \e$B%Q%9%U%l!<%:$r%(%s%3!<%I$9$k$?$a$N
\e(B coding system
\e$B$G$9!#
\e(B
317 @node Default user identity
318 @section
\e$B%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
320 \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
321 \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
324 @defvar pgg-default-user-id
325 \e$B%G%#%U%)%k%H$N%f!<%6!<
\e(B ID
\e$B$G$9!#;XDj$7$J$$>l9g
\e(B
326 \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
327 \e$B%+%9%?%^%$%:2DG=$G$9!#
\e(B
330 @defvar pgg-gpg-user-id
331 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
332 \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
333 \e$B$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
336 @defvar pgg-pgp-user-id
337 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
338 \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
339 @samp{pgg-default-user-id}
\e$B$h$jM%@h$7$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
342 @defvar pgg-pgp5-user-id
343 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
344 \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
345 \e$B$F;H$o$l$^$9!#%+%9%?%^%$%:2DG=$G$9!#
\e(B
349 @chapter
\e$B9=@.
\e(B
351 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
352 \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
353 object
\e$B$KM3Mh$7$^$9!#
\e(B
355 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
356 \e$B$G!"$=$N9=@.$O!"Aj8_1?MQ@-$@$1$G$J$/3HD%@-$b9MN8$9$kI,MW$,$"$j$^$7$?!#$3
\e(B
357 \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
358 \e$B$N$h$&$K$D$/$i$l$F$$$k$+$rC58!$7$F$_$^$7$g$&!#
\e(B
367 @section
\e$B=i4|2=
\e(B
369 \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
370 \e$B$&$3$H$rJ]>Z$9$k$N$,NI$$$G$7$g$&!#
\e(B
372 \e$B0J2<$N%3!<%I$O
\e(B @file{pgg-gpg.el}
\e$B$+$i$NH4$-=q$-$G$9!#$"
\e(B
373 \e$B$k
\e(B @code{pgg-gpg}
\e$B$N%9%-!<%`$,$$$C$?$s=i4|2=$5$l$k$H!"$=$l
\e(B
374 \e$B$O
\e(B @code{pgg-scheme-gpg-instance}
\e$BJQ?t$KJ]B8$5$l!"0J8e!":FMxMQ$5$l$^$9!#
\e(B
377 (defvar pgg-scheme-gpg-instance nil)
379 (defun pgg-make-scheme-gpg ()
380 (or pgg-scheme-gpg-instance
381 (setq pgg-scheme-gpg-instance
382 (luna-make-entity 'pgg-scheme-gpg))))
385 \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
386 \e$B$N$K$7$J$1$l$P$J$j$^$;$s!#
\e(B
388 @node Back end methods
389 @section
\e$B%P%C%/%(%s%I$N%a%=%C%I
\e(B
391 \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
392 \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
393 \e$B$J%P%C%U%!!<$KJ]B8$5$l$^$9
\e(B (@pxref{Getting output})
\e$B!#
\e(B
395 @deffn Method pgg-scheme-lookup-key scheme string &optional type
396 @var{string}
\e$B$K4XO"IU$1$i$l$?80$rJV$7$^$9!#;0HVL\$N%*%W%7%g%s0z
\e(B
397 \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
400 @deffn Method pgg-scheme-encrypt-region scheme start end recipients &optional sign passphrase
401 @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
402 \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
403 \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
404 \e$B$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
407 @deffn Method pgg-scheme-encrypt-symmetric-region scheme start end &optional passphrase
408 \e$B8=:_$N
\e(B @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r!"6&DL800E9f
\e(B (symmetric
409 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
410 \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
414 @deffn Method pgg-scheme-decrypt-region scheme start end &optional passphrase
415 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$r2rFI$7$^$9!#2rFI$K@.8y$9$k
\e(B
416 \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
419 @deffn Method pgg-scheme-sign-region scheme start end &optional cleartext passphrase
420 @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
421 \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
422 \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
425 @deffn Method pgg-scheme-verify-region scheme start end &optional signature
426 @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
427 \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
428 \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
429 \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
432 @deffn Method pgg-scheme-insert-key scheme
433 \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
434 \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
437 @deffn Method pgg-scheme-snarf-keys-region scheme start end
438 @var{start}
\e$B$H
\e(B @var{end}
\e$B$N4V$NNN0h$K$"$k8x3+80$r=8$a!"%f!<%6!<$N80
\e(B
439 \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
440 \e$B$H
\e(B @code{nil}
\e$B$rJV$7$^$9!#
\e(B
444 @section
\e$B=PNO$rF@$k
\e(B
446 \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
447 \e$B$K3JG<$5$l$^$9!#$7$?$,$C$F!"$3$l$i$N%a%=%C%I$O<B9T7k2L$rEA$($kI,MW$,$"$j
\e(B
450 @defvar pgg-errors-buffer
451 PGP
\e$B%3%^%s%I<B9T;~$NI8=`%(%i!<=PNO$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
454 @defvar pgg-output-buffer
455 PGP
\e$B%3%^%s%I<B9T;~$NI8=`=PNO$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
458 @defvar pgg-status-buffer
459 PGP
\e$B%3%^%s%I<B9T;~$N$=$NB>$N7k2L$N>pJs$O!"$3$N%P%C%U%!!<$K3JG<$5$l$^$9!#
\e(B
462 @node Parsing OpenPGP packets
463 @chapter OpenPGP
\e$B%Q%1%C%H$N2r@O
\e(B
465 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
466 \e$B$KI,MW$J$9$Y$F$N>pJs$r=PNO$9$k$h$&$K0];}$5$l$F$$$^$9!#$=$NI8=`
\e(B
467 \e$B$O
\e(B RFC2440
\e$B$K5-:\$5$l$F$$$^$9!#
\e(B
469 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
471 @defun pgg-parse-armor string
472 @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
475 @defun pgg-parse-armor-region start end
476 @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
477 \e$B7A<0$GJV$7$^$9!#
\e(B
480 @defvar pgg-ignore-packet-checksum
481 @code{nil}
\e$B$G$J$+$C$?$i!"%Q%1%C%H$N%A%'%C%/%5%`$r8!>Z$7$^$;$s!#
\e(B
484 @node GNU Free Documentation License
485 @chapter GNU
\e$B%U%j!<J8=qMxMQ5vBz7@Ls=q
\e(B
487 \e$BLuCm
\e(B: @uref{http://www.opensource.jp/fdl/fdl.ja.html.euc-jp,
488 \e$BHs8x<0$JF|K\8lLu
\e(B}
\e$B$,$"$j$^$9!#
\e(B
490 @include doclicense.texi
493 @unnumbered Function Index
497 @unnumbered Variable Index
505 @c coding: iso-2022-7bit
508 @c use-kuten-for-period: t
509 @c use-touten-for-comma: t