x-pgp-sig-el-1.3.5.1.orig/0040755000175000017610000000000007003004307014304 5ustar kitamedebianx-pgp-sig-el-1.3.5.1.orig/00README.ja0100644000175000017610000011346406724453070015741 0ustar kitamedebianx-pgp-sig.el v1.3 $B $B1|@>F#OB(B $B>.4X5HB'(B $B>.LnJ8K-(B $BCfB<=(OB(B v1.3-b1 $B$+$i(B PGP 5.0i $B$X$NBP1~$r;O$a$^$7$?!#$3$l$K4X$9$k@bL@$H$7$F!"(B README-PGP5.ja $B$rMQ0U$7$F$$$^$9!#(B5.0i $B$X$NBP1~$r5!$K!"(B2.6.3ia $B$G;H$&(B $B>l9g$G$b(B PGP $B%3%^%s%I$rHsF14|%W%m%;%9$G;H$&$3$H$r%G%U%)%k%H$K$7$?$N(B $B$G!"4D6-$K$h$C$F$OLdBj$,@8$8$k$+$b$7$l$^$;$s!#(BPGP 5.0i $B$r;H$o$J$$>l(B $B9g$b!"4JC1$K(B README-PGP5.ja $B$KL\$rDL$9$3$H$r$*4+$a$7$^$9!#(B v1.2.9-b3 $B$+$i(B MH $B7O(B MUA (mh-e, Mew $BEy(B) $B$K$h$C$F@8@.$5$l$J$$%a%C%;!<(B $B%8%X%C%@$N%U%#!<%k%I$r!"(BPGP $B$N=pL>BP>]$H$7$?$$>l9g$KMQ$$$k%I%i%U%HA0(B $B=hM}%D!<%k$H$7$F(Bmua-bend.el $B$rIUB0$7$F$$$^$9!#(BREADME-MUABEND.ja $B$r$4(B $BMw$N>e3hMQ$J$5$C$F2<$5$$!#$^$?(B X-PGP-Sig $B%U%#!<%k%I$K$h$k=pL>$HG'>Z(B $B$N4JC1$J@bL@$r!"F1:-$N(B METHOD.ja $B$K=q$$$F$"$j$^$9$N$G!"$=$l$b$4Mw$K(B $B$J$C$F2<$5$$!#(B v1.2.4 $B$+$i!"(BMew $B$G$*;H$$$K$J$k>l9g$N$?$a$NDI2C@bL@$r(B README-Mew.ja $B$K(B $B5-:\$7$F$"$j$^$9!#$3$3$K$O(B Mew $B0J30$K(B mh-e $B$J$I(B MH $B7O$N(B MUA $B$r$*;H$$$K(B $B$J$k>l9g$N%R%s%H$b=q$$$F$"$j$^$9$N$G!"3:Ev$9$kJ}$O$4Mw$K$J$C$F2<$5$$!#(B $B0J2<$N@bL@$Ol9g$O!"$=$l@lMQ$N4X?t$r:n$k$J$I$NBP1~$,I,MW$K(B $B$J$k$G$7$g$&!#$=$N$?$a$N$NBP>]$K$7$^$9$,!"%K%e!<%9$d(B $B%a!<%k$NG[AwESCf$G=q$-49$($i$l$F$7$^$&$b$N$,$"$j$^$9!#$?$H$($P(B INN $B$N(B inews $B$O(B Date: $B$r=q$-49$($^$9$7!"%a!<%j%s%0%j%9%H$N%5!<(B $B%P$,(B Sender: $B$r=q$-49$($F$7$^$&>l9g$,$"$j$^$9!#$^$?(B MTA $B$N@_Dj(B $B$K$h$C$F$O(B From: $B$^$G$b$,=q$-JQ$o$C$F$7$^$&$3$H$,$"$j$^$9!#(B $B$=$l$i$N%U%#!<%k%I$r=pL>$NBP>]$K4^$a$F$*$/$HG'>Z$K<:GT$7$^$9$+(B $B$i!"(Bx-pgp-sig-sign-fields $B$d(B x-pgp-sig-adjust-sign-fields-alist $B$H$$$C$?%f!<%6JQ?t$r!"$$$D$G$bG'>Z$K@.8y$9$k$h$&$KE,@Z$K@_Dj$7(B $B$F2<$5$$!#(B ---------------------------------------------------------------------- 1. $BI,MW$J$b$N!#(B $B$3$l$rFI$s$G$$$kJ}$OEvA3$*;}$A$@$H;W$$$^$9$,!"30It%3%^%s%I$H$7$F(B PGP $B$,I,MW$G$9!#%P!<%8%g%s(B 2.6.3ia $B$+(B 5.0i $B$N$b$N$r?d>)$7$^$9!#(B PGP 2.6.3ia $B$K$O!"Nc$($PR2p$7$F$$$k$h$&$J2~B$$,I,MW$G$9!#(B -------------------------------------------------------------- PGP $B$NJQ99$dG[I[$J$I$N$K(B Mailcrypt $B%Q%C%1!<%8$,$"$k$H!"J]M-$7$F$$$J$$(B pub $B%-!<$r(B http $B$G(B $B$C$F(B cygnus gcc $B$G(B pgp.exe $B$r%3%s%Q%$%k$7!":9$7BX$($F;H$C$F$/$@(B $B$5$$!#(B ---------------------------------------------------------------------- 2. $B%$%s%9%H!<%k!#(B x-pgp-sig.el $B$r(B load-path $B$N%G%#%l%/%H%j$K%3%T!<$7$F$+$i!"(B M-x byte-compile-file $B$7$F2<$5$$!#(B Semi-gnus $B$d(B Gnus $B$r$*;H$$$K$J$kJ}$O!"$=$l$i$r5/F0$7$?8e$G9T$J$C$F2<(B $B$5$$!#(B(Gnus $B$N%^%/%m$rMxMQ$7$F$$$k$?$a$G$9!#(B) VM $B$r$*;H$$$K$J$kJ}$O!"(Bload-path $B$K(B VM $B$,4^$^$l$F$$$k>uBV$G9T$J$C$F(B $B2<$5$$!#$"$($F(B VM $B$r5/F0$9$kI,MW$O$"$j$^$;$s!#(B $B$b$7(B Mew $B$N%P!<%8%g%s(B 1.94b20 $B0J>e$N$b$N$r;H$&>l9g$O!"(B M-x byte-compile-file $B$r9T$J$&A0$K(B M-x eval-expression $B$G(B (provide 'use-mew-1.94b20-or-later) $B$r(B eval $B$7$F2<$5$$!#$3$NA`:n$O(B ($BFC$K(B XEmacs $B$G$O(B) $B9T$J$o$J$/$F$b9=$$(B $B$^$;$s!#(B ---------------------------------------------------------------------- 3. $B%9%?!<%H%"%C%W%U%!%$%k$N@_Dj!#(B ~/.emacs $B$Kl9g$O!"(B (setq $BJQ?tL>(B $BCM(B) $B$H(B ~/.emacs $B$K=q$$$F2<$5$$!#BP>]$H$J$kJQ?tL>$Oo;HMQ$9$k(B PGP UserID/KeyID. x-pgp-sig-pgppath $B$"$J$?$N4D6-JQ?t(B PGPPATH. x-pgp-sig-pubring $B$"$J$?$N(B public key ring $B%U%!%$%k!#(B x-pgp-sig-secring $B$"$J$?$N(B secret key ring $B%U%!%$%k!#(B $B$3$l0J30$K$b4D6-$d9%$_$K1~$8$FJQ99$9$k$3$H$,2DG=$JJQ?t$,$$$/$D$+$"$j(B $B$^$9!#(B $B$^$?!"Aw?.D>A0$N%a%C%;!<%8$K=pL>$r9T$J$&$?$a$K(B hook $B$N@_Dj$,I,MW$G$9(B $B$N$G!"8e=R$N(B 5. Customize $B$N9`$r;2>H$7$F!"I,MW$K1~$8$F@_Dj$7$F2<$5$$!#(B ---------------------------------------------------------------------- 4. $B;H$$J}!#(B $B!&(BVerify $B%G%U%)%k%H$N@_Dj$G$O(B gnus-summary-mode, gnus-Subject-mode, mh-folder-mode, mew-summary-mode, mew-virtual-mode, cmail-summary-mode, vm-mode, vm-presentation-mode, vm-summary-mode $B$*$h$S(B wl-summary-mode $B$N3F%P%C%U%!$K%+!<%=%k$,$"$k>l9g$K!"(B M-x x-pgp-sig-verify $B$H%?%$%W$9$k$H=pL>$NG'>Z$r9T$J$C$F!"7k2L$r%_%K%P%C%U%!$KI=<($7$^$9!#(B $B8e=R$N(B 5. Customize $B$N9`$K$O!"$3$N%3%^%s%I$r(B `C-c / V' $B$H$$$&%-!<$K(B $B@_Dj$9$kJ}K!$r<($7$F$"$j$^$9!#$^$?!":#$O(B Semi-gnus $B$H(B Gnus $B$@$1$G$9(B $B$,!"5-;v$rFI$`EY$KG'>Z$r9T$J$&$3$H$b$G$-$^$9!#(B $BG'>Z7k2L$,(B "(+1/-2) Good signature..." $B$N$h$&$K$J$C$?>l9g!"%a%C%;!<(B $B%8%X%C%@$N(B Lines $B%U%#!<%k%I$NCM$,Z$K(B $B@.8y$7$?$3$H$r0UL#$7$^$9!#>\$7$/$O(B METHOD.ja $B$r$4Ms2<$5$$!#(B VM $B$r(B SEMI $B$H$H$b$K;H$C$F$$$k$H(B presentation buffer $B$N(B major-mode $B$O(B mime-view-mode $B$K$J$C$F$$$k>l9g$,$"$j$^$9$,!"(Bx-pgp-sig-verify $B$rH$5$l!"(Bvm-presentation-mode $B$KBP1~$7(B $B$?F0:n$r9T$J$$$^$9!#(B $B!&(BSet signer $BAw?.%a%C%;!<%8$N=pL>$G;H$&(B PGP $B$N(B UserID/KeyID $B$H(B passphrase $B$r@_Dj(B $B$7$^$9!#$3$N$?$a$K(B x-pgp-sig-set-signer $B$H(B x-pgp-sig-set-signer-maybe $B$NFs$D$N%3%^%s%I$rMQ0U$7$F$"$j$^$9$,!"$3$l$i$K$OJ}$r@_Dj$7$^$9!#%3%^%s%I$H$7$Fl9g$O!"$9$G$K@_Dj$5$l$F$$$k>l9g$G$b>e=q$-$7$^$9!#(B UserID $B$NF~NO;~$K2?$bJ8;z$rF~NO$;$:$K(B [RET] $B$r%?%$%W$7$?>l9g$O!"Be(B $B$o$j$K(B KeyID $B$NF~NO$rB%$7$^$9!#:G=i$+$i(B KeyID $B$rF~NO$7$?$$>l9g$K$O(B x-pgp-sig-enter-keyid-first $B$H$$$&JQ?t$r(B non-nil $B$K@_Dj$7$F2<$5$$!#(B x-pgp-sig-set-signer-maybe UserID/KeyID $B$KBP1~$7$?(B passphrase $B$,@_Dj$5$l$F$$$J$$>l9g$H!"$9$k?M$N(B UserID/KeyID $B$r<($9FbItJQ?t$G$"$k(B x-pgp-sig-current- signer $B$NCM$,!"%G%U%)%k%H$N@_DjCM$G$"$k(B x-pgp-sig-default-signer $B$H0[$J$k>l9g$K(B UserID/KeyID $B$NF~NO$rB%$7$^$9!#$=$N(B UserID/KeyID $B$K(B $BBP1~$7$?(B passphrase $B$,@_Dj$5$l$F$$$J$$>l9g$O$5$i$KF~NO$rMW5a$7$^$9(B $B$,!"$=$&$G$J$$>l9g$OF~NO$9$kI,MW$,$"$j$^$;$s!#(B UserID $B$NF~NO;~$K2?$bJ8;z$rF~NO$;$:$K(B [RET] $B$r%?%$%W$7$?>l9g$O!"Be(B $B$o$j$K(B KeyID $B$NF~NO$rB%$7$^$9!#:G=i$+$i(B KeyID $B$rF~NO$7$?$$>l9g$K$O(B x-pgp-sig-enter-keyid-first $B$H$$$&JQ?t$r(B non-nil $B$K@_Dj$7$F2<$5$$!#(B $BDL>o$O(B x-pgp-sig-set-signer-maybe $B$r;H$&$@$1$G==J,$G$9!#$^$?!"$3$l$r(B $B0l!9o$O<+J,$N%-!<$G=pL>$9$k$,!"%3%s%H%m!<%k%a%C%;!<%8$rH/?.$9$k$H$-(B $B$@$1$O%K%e!<%94IM}?M$N%-!<$G=pL>$9$k$h$&$J>l9g$H!"(Bx-pgp-sig-set- signer-maybe $B$G$NF~NO$K<:GT$7$?>l9g$@$1(B x-pgp-sig-set-signer $B$r;H$&(B $B$N$,NI$$$H;W$$$^$9!#(B $BF~NO$5$l$?(B UserID/KeyID $B$H(B passphrase $B$O@5$7$$$3$H$r3NG'$7$F$+$iJQ?t(B $B$H$7$FEPO?$5$l!"(BEmacsen $B$r=*N;$9$k$^$GJ];}$7$F$$$^$9!#(B Passphrase $B$O%i%s%@%`$K@8@.$7$?(B IDEA $B$N%-!<$G(B encrypt $B$7$?$b$N$rJQ?t(B $B$NCM$H$7$FJ];}$7$F$$$^$9$,!"(Belisp $B$KL@$k$$?M$K%-!<%\!<%I$H%G%#%9%W%l(B $B%$$r>h$C$OAw?.$9$k$.$j$.$j$ND>A0$K9T$J$&$3$H$,86B'$J$N$G!"(B $B$3$l$r9T$J$&$?$a$N4X?t$OE,@Z$J(B hook $B$GI>2A$5$l$k$3$H$rA[Dj$7$F!"(BM-x $B$G5/F0$G$-$k%3%^%s%I$K$O$7$F$"$j$^$;$s!#$=$N(B hook $B$G$r9T$J(B $B$&$+$I$&$+$r@)8f$9$k$?$a$K!"A0$KI,$:=pL>$r9T$J$$$^$9!#(B Non-nil $B$G$O(B x-pgp-sig-add-signature-judging-function $B$N@_Dj$OL5;k(B $B$5$l$^$9!#%G%U%)%k%H$O(B nil $B$G$9!#(B x-pgp-sig-switch-signing (M-x $B$G5/F0$G$-$k%3%^%s%I(B) $B$3$N%3%^%s%I$r5/F0$7$F(B `y' $B$rF~NO$9$k$H!"(Bx-pgp-sig-enable-sign $B$H(B $B$$$&FbItJQ?t$,(B t $B$K%;%C%H$5$l!"Aw?.D>A0$K=pL>$r9T$J$$$^$9!#=pL>$7(B $B=*$o$C$?$i(B x-pgp-sig-enable-sign $B$NCM$O(B nil $B$K%/%j%"$5$l$^$9!#(B x-pgp-sig-add-signature-judging-function ($B%f!<%6$,@_Dj$G$-$k4X?t(B) $B$3$NJQ?t$K4X?t$N%7%s%\%k$,@_Dj$5$l$F$$$k$H!"%a%C%;!<%8%P%C%U%!$GAw(B $B?.D>A0$K$=$N4X?t$rI>2A$7$?7k2L$,(B t $B$@$C$?>l9g$K=pL>$r9T$J$$$^$9!#(B $B%G%U%)%k%H$G$O(B 'x-pgp-sig-add-signature-y-or-n-p $B$H$$$&=pL>$9$k$+(B $B$I$&$+$r?R$M$k$?$a$N4JC1$J4X?t%7%s%\%k$,@_Dj$5$l$F$$$^$9!#(B $BJQ?t(B x-pgp-sig-enable-sign $B$N@_Dj$rM-8z$K$9$k$?$a$K$O(B nil $B$K$7$F2<(B $B$5$$!#(B $B$O(B x-pgp-sig-sign $B$H$$$&4X?t$K$h$C$F$Nl(B $B9g$K$O!"$=$N;~E@$GF~NO$rMW5a$7$^$9!#$b$7$=$N$H$-$KF~NO$r4V0c$($k$H!"(B $B:F$SJT=8%b!<%I$KLa$k$3$H$,:$Fq$J>l9g$,B?$$$N$G!"$J$k$Y$/A0$b$C$F@5$7(B $B$$(B id $B$H(B passphrase $B$r@_Dj$7$F$*$$$?J}$,NI$$$G$7$g$&!#(B $B$J$*4X?t(B x-pgp-sig-sign $B$O%a%C%;!<%8%\%G%#$,6u$@$C$?>l9g$H$=$l$,%-%c(B $B%s%;%k%a%C%;!<%8$@$C$?>l9g$K$O!"=pL>$r9T$J$o$J$$$h$&$K$J$C$F$$$^$9!#(B $B$$$:$l$K$7$F$b=pL>$r9T$J$&$?$a$N4X?t(B x-pgp-sig-sign $B$,!"(B5. Customize $B$N9`$G@bL@$9$kJ}K!$K$h$C$FE,@Z$J(B hook $B$K@_Dj$5$l$F$$$J$1$l$P$J$j$^$;(B $B$s!#(B ---------------------------------------------------------------------- 5. Customize ; gnus-summary-mode, gnus-Subject-mode, mh-folder-mode, mew-summary-mode, ; mew-virtual-mode, cmail-summary-mode, vm-mode, vm-presentation-mode, ; vm-summary-mode $B$*$h$S(B wl-summary-mode $B$N3F%b!<%I$G!"=pL>$NG'>Z(B ; $B$r9T$J$&$?$a$N%3%^%s%I%-!<$r(B `C-c / V' $B$K@_Dj$9$k>l9g$O!"(B~/.emacs $B$K(B ; $B$l$N%b!<%I$GI>2A$5$l$k(B HOOK $B$O0J2<$NDL$j$G$9!#(B ; ; gnus-summary-mode gnus-summary-mode-hook ; gnus-Subject-mode gnus-Subject-mode-hook ; mh-folder-mode mh-folder-mode-hook ; mew-summary-mode mew-summary-mode-hook ; mew-virtual-mode mew-virtual-mode-hook ; cmail-summary-mode cmail-summary-mode-hook ; vm-mode vm-mode-hook ; vm-presentation-mode vm-presentation-mode-hook ; vm-summary-mode vm-summary-mode-hook ; wl-summary-mode wl-summary-mode-hook ; ; NEmacs $B$K$O(B add-hook $B$,$"$j$^$;$s$+$i!"4X?tDj5A$rDI2C(B ($B8e=R(B) $B$9$k$+(B ; $BDL>o$NJ}K!$r;H$C$F2<$5$$!#0J2<$bF1MM$G$9!#(B ; $BAw?.$9$k%a%C%;!<%8$NJT=8$r3+;O$9$k$H$-$K(B PGP $B$N(B UserID/KeyID $B$H(B ; passphrase $B$N@_Dj$r9T$J$&$K$O(B ~/.emacs $B$Ke(B) $B$H(B Red Gnus message-setup-hook ; Gnus (v5.1 $B0J2<(B) $B$H(B GNUS news-reply-mode-hook ; mh-e mh-letter-mode-hook ; Mew mew-draft-mode-hook ; cmail cmail-mail-hook or mail-setup-hook ; VM mail-setup-hook ; wl wl-mail-setup-hook ; ; $B$J$k$Y$/(B HOOK $B$N0lHV:G8e$KI>2A$5$l$k$h$&$K$9$k$?$a$K!"(B~/.emacs $B$N:G(B ; $B8e$NJ}$K=q$-F~$l$k$N$,NI$$$G$7$g$&!#(B ; $B%a%C%;!<%8$rAw?.$9$kD>A0$K=pL>$r9T$J$&$?$a$N(B hook $B$N@_Dj$O)$7$^$9!#(B ; Mew $B$G$*;H$$$K$J$k>l9g$O(B README-Mew.ja $B$bJ;$;$F$4;2>H2<$5$$!#(B ; ; Semi-gnus $B$H(B Quassia Gnus message-header-hook ; Gnus (v5.2 $B0J>e(B) $B$H(B Red Gnus message-header-hook ; Gnus (v5.1 $B0J2<(B) $B$H(B GNUS gnus-inews-article-hook ; mh-e mh-before-send-letter-hook ; Mew (1.89 $BL$K~(B) mew-send-hook ; cmail $B$H(B VM mail-send-hook ; wl wl-mail-send-pre-hook ; ; Semi-gnus $B$N>l9g$O$5$i$K(B ; (add-hook 'message-send-hook 'x-pgp-sig-reserve-sign) (add-hook 'message-send-hook 'x-pgp-sig-cancel-reserve-sign) ; ; $B$r@_Dj$7$F$*$/$3$H$r$*4+$a$7$^$9!#$3$l$,L5$$>l9g$K$O%K%e!<%9$H%a!<%k(B ; $B$rF1;~Aw?.$7!"$5$i$K(B Gcc $B$b$"$C$?$j$9$k$H!"$=$NETEY(B (Y/n) $B$KEz$($J$1(B ; $B$l$P$J$i$J$$$N$G$9$,(B ($B$=$NJ}$,NI$$>l9g$b$"$k$G$7$g$&$,(B)$B!"$3$l$,$"$k(B ; $B$H:G=i$K0l2s(B (Y/n) $B$r?R$M$k$@$1$NF0:n$K$J$j$^$9!#(B ; ; tm $B$rJ;MQ$7$F$$$k>l9g$O0lN'$K(B mime-editor/exit-hook $B$K$7$?J}$,NI$$$+(B ; $B$b$7$l$^$;$s!#$&$^$/9T$/$d$jJ}$rLO:w$7$F$_$F2<$5$$!#(B ; ; $B$3$l$i$b$9$Y$F(B HOOK $B$N0lHV:G8e$KI>2A$5$l$k$h$&$K$9$k$?$a$K(B ~/.emacs ; $B$N:G8e$NJ}$K=q$-F~$l$F2<$5$$!#(B ; ; $B$J$*!"8E$$%P!<%8%g%s$N(B mh-e $B$G$O(B mh-before-send-letter-hook $B$H$$$&(B ; hook $B$OI>2A$5$l$^$;$s!#(B ; ; $B$J$*(B Mew 1.89 $B0J>e$N>l9g$O$3$N9`L\$OL5;k$7$F$/$@$5$$!#$+$o$j$K(B ; README-Mew.ja $B$K@bL@$,$"$j$^$9$N$G!"$=$A$i$r$4Mw$/$@$5$$!#(B ; $B$=$l$+$i!":#$O(B Semi-gnus $B$H(B Gnus $B$@$1$G$9$,!"5-;v$rFI$`EY$KG'>Z$r9T(B ; $B$J$&$3$H$b$G$-$^$9!#$3$N5!G=$r;H$&$K$O(B ~/.emacs $B$K2A$5$l$k$h$&$K<+F0E*$K=g=x$,JQ$($i$l$^$9$+$i!"(B ; add-hook $B$NBh#30z?t$r(B non-nil $B$K$7$J$/$F9=$$$^$;$s!#(B ; $B0J2<$O%f!<%6$,@_Dj$G$-$kJQ?t$N@bL@$G$9!#(B (setq x-pgp-sig-from "nobody@nowhere") ; $B$"$J$?$N%a!<%k%"%I%l%9$G$9!#(B ; $B%G%U%)%k%H$O(B ... $B%W%m%0%i%`$rFI$`$+(B [HELP] v $B$7$F2<$5$$!#(B (setq x-pgp-sig-default-signer "User Unknown ") ; $B$"$J$?$,DL>o;HMQ$9$k(B PGP UserID $B$G$9!#(B ; $B%G%U%)%k%H$O(B "user-full-name " $B$G$9!#(B ; $B$3$N7A<00J30$K(B UserID $B$H(B KeyID $B$N(B cons $B$G(B ; ;(setq x-pgp-sig-default-signer ; '("User Unknown " . "0x01234567")) ; ; $B$N$h$&$K@_Dj$9$k$H!"(BKeyID $B$r$K;H$&%-!<$,7hDj$5$l$^$9!#(B ; UserID $B$,F1$8B??t$N%-!<$r;}$C$F$$$kJ}$O$3$NJ}K!$rMxMQ$7$F2<$5$$!#(B ; x-pgp-sig.el(c) $B$,(B load $B$5$l$k$H$-$K!"$3$l$HF1$8CM$,FbItJQ?t$G$"$k(B ; x-pgp-sig-current-signer $B$K$bBeF~$5$l$^$9!#(B ;(setq x-pgp-sig-default-signer-list ; '("PGP2.x User " "PGP5 User ")) ; ; $B$3$NJQ?t$K(B (list "PGP2.x$BMQ(B" "PGP5$BMQ(B") $B$N7A<0$GDL>o=pL>$9$k$H$-$N(B ; UserID $B$d(B KeyID$B!"$^$?$O$=$l$i$N%I%C%H%Z%"$r@_Dj$7$F$*$/$3$H$,$G$-$^(B ; $B$9!#(Bx-pgp-sig-default-signer $B$N@_Dj$h$jM%@h$7$F;H$o$l$^$9!#(B (setq x-pgp-sig-pgp-v5-p nil) ; PGP 5.0i $B$r;H$&>l9g$K$O(B t $B$K$7$F2<$5$$!#%G%U%)%k%H$O(B nil $B$G$9!#(B (setq x-pgp-sig-pgp-program "pgp") ; PGP $B%3%^%s%I$N%Q%9L>$G$9!#(Bexec-path $B0J30$N%G%#%l%/%H%j$KB8:_$9$k>l9g(B ; $B$O%U%k%Q%9L>$r5-=R$9$kI,MW$,$"$j$^$9!#%G%U%)%k%H$O$3$l$HF1$8$G$9!#(B ; PGP 5.0i $B$G$O%3%^%s%I$,(B pgpe, pgpk, pgps, pgpv $B$N;M$D$KJ,3d$5$l$F$$(B ; $B$^$9$,!"KvHx$N0l;z$OIU$1$:$K(B "pgp" $B$^$?$O(B "/full/path/pgp" $B$N7A<0$G(B ; $B@_Dj$7$F2<$5$$!#(B (setq x-pgp-sig-process-asynchronous-p t) ; PGP $B%3%^%s%I$r(B elisp $B$+$i8F$V$H$-$K!"(Bnon-nil $B$G$OHsF14|%W%m%;%9$9$J(B ; $B$o$A(B start-process $B$r;H$$!"(Bnil $B$G$O(B call-process $B$r;H$C$FF14|%W%m%;(B ; $B%9$K$7$^$9!#%G%U%)%k%H$O(B t $B$G$9!#(B ; NEmacs $B$G$O$"$^$j8!>Z$r9T$J$C$F$$$J$$$N$G$9$,!"(Bnil $B$K$9$k$HNI$$$h$&(B ; $B$G$9!#(B ; $B0JA0$NHG$G(B start-process $B$r;H$C$F$$$?$H$-$K!"4D6-$K$h$C$F$O$&$^$/F0(B ; $B$+$J$$$3$H$,$"$C$?$N$G(B call-process $B$KE}0l$7$F$$$^$7$?$,!"(BPGP 5.0i ; $B$G$O(B passphrase $B$NF~NO$KLdBj$,$"$j$^$9!#>\:Y$O(B README-PGP5.ja $B$r$4Mw(B ; $B2<$5$$!#(B (setq x-pgp-sig-shell-program "/bin/sh") ; x-pgp-sig-process-asynchronous-p $B$,(B nil $B$G(B x-pgp-sig-pgp-v5-p $B$,(B t ; $B$N$H$-$K(B pgps $B%3%^%s%I$G=pL>$9$k>l9g$K;H$&(B shell $B$N;XDj$G$9!#(B ; $B>\:Y$O(B README-PGP5.ja $B$r$4Mw2<$5$$!#(B (setq x-pgp-sig-shell-program-arg "-c") ; x-pgp-sig-shell-program $B$G;XDj$5$l$?(B shell $B$N0z?t$N;XDj$G$9!#J8;zNs(B ; $B$r(B shell $B$N%3%^%s%I$H$7$F07$&$?$a$N$b$N$G$9!#(B ; $B>\:Y$O(B README-PGP5.ja $B$r$4Mw2<$5$$!#(B (setq x-pgp-sig-pipe-command "/bin/cat") ; x-pgp-sig-process-asynchronous-p $B$,(B nil $B$G(B x-pgp-sig-pgp-v5-p $B$,(B t ; $B$N$H$-$K(B pgps $B%3%^%s%I$G=pL>$9$k>l9g$K;H$&(B pipe $B%3%^%s%I$N;XDj$G$9!#(B ; $B>\:Y$O(B README-PGP5.ja $B$r$4Mw2<$5$$!#(B (setq x-pgp-sig-process-coding-system-for-output *junet*unix) ; Mule/XEmacs $B$G(B PGP $B$N%W%m%;%9$KEO$9J8;z%3!<%I$N;XDj$G$9!#%G%U%)%k%H(B ; $B$O(B nil $B$G!"$=$N>l9g(B *noconv* ($B$^$?$O(B binary) $B$,E,MQ$5$l$^$9$,!"$d$`(B ; $B$rF@$:%M%C%H%o!<%/%3!<%I$K$J$C$F$$$J$$%P%C%U%!$NFbMF$K=pL>$7$?$jG'>Z(B ; $B$r9T$J$&$H$-$O(B *junet*unix ($B$^$?$O(B 'junet) $B$r;XDj$7$^$9!#(B ; ($BE:IU;qNA(B METHOD.ja $B;2>H(B) (setq x-pgp-sig-process-kanji-code 2) ; NEmacs $B$G(B PGP $B$N%W%m%;%9$KEO$9J8;z%3!<%I$N;XDj$G$9!#%G%U%)%k%H$O(B 2 ; $B$G!"(Bnil $B$K$7$?>l9g$O(B 0 (noconv) $B$,E,MQ$5$l$^$9!#$d$`$rF@$:%M%C%H%o!<(B ; $B%/%3!<%I$K$J$C$F$$$J$$%P%C%U%!$NFbMF$K=pL>$7$?$jG'>Z$r9T$J$&$H$-$O(B ; 2 (JIS)$B$r;XDj$7$^$9!#(B ($BE:IU;qNA(B METHOD.ja $B;2>H(B) (setq x-pgp-sig-pgppath (expand-file-name "~/.pgp")) ; PGP $B$N(B key ring $B$J$I$,CV$+$l$F$$$k%G%#%l%/%H%j$N;XDj$G$9!#%G%U%)%k%H(B ; $B$O4D6-JQ?t(B PGPPATH $B$,$"$l$P$=$l!"L5$1$l$P$3$l$HF1$8$G$9!#(B (setq x-pgp-sig-pubring (concat x-pgp-sig-pgppath "/pubring.pgp")) ; PGP 2.6.3i $B$r;H$&>l9g$N$"$J$?$N(B public key ring $B%U%!%$%k$N;XDj$G$9!#(B ; $B%G%U%)%k%H$O4D6-JQ?t(B PUBRING $B$,$"$l$P$=$l!"L5$1$l$P$3$l$HF1$8$K$J$j(B ; $B$^$9!#(B (setq x-pgp-sig-pubring-v5 (concat x-pgp-sig-pgppath "/pubring.pkr")) ; PGP 5.0i $B$r;H$&>l9g$N$"$J$?$N(B public key ring $B%U%!%$%k$N;XDj$G$9!#(B ; $B%G%U%)%k%H$O4D6-JQ?t(B PUBRING $B$,$"$l$P$=$l!"L5$1$l$P$3$l$HF1$8$K$J$j(B ; $B$^$9!#(B (setq x-pgp-sig-secring (concat x-pgp-sig-pgppath "/secring.pgp")) ; PGP 2.6.3i $B$r;H$&>l9g$N$"$J$?$N(B secret key ring $B%U%!%$%k$N;XDj$G$9!#(B ; $B%G%U%)%k%H$O4D6-JQ?t(B SECRING $B$,$"$l$P$=$l!"L5$1$l$P$3$l$HF1$8$K$J$j(B ; $B$^$9!#(B (setq x-pgp-sig-secring-v5 (concat x-pgp-sig-pgppath "/secring.skr")) ; PGP 5.0i $B$r;H$&>l9g$N$"$J$?$N(B secret key ring $B%U%!%$%k$N;XDj$G$9!#(B ; $B%G%U%)%k%H$O4D6-JQ?t(B SECRING $B$,$"$l$P$=$l!"L5$1$l$P$3$l$HF1$8$K$J$j(B ; $B$^$9!#(B (setq x-pgp-sig-delete-last-empty-line-while-verifying t) ; Non-nil $B$K$7$F$*$/$H!"%a%C%;!<%8%\%G%#$N:G8e$K0l$D0J>e$N6u9T$,B8:_$7(B ; $B$F!"$=$N%\%G%#A4BN$rBP>]$H$7$?G'>Z$K<:GT$7$?$H$-$O!"$=$l$i$N6u9T$,L5(B ; $B$/$J$k$^$G0l$D$:$D:o$C$F:FEYG'>Z$r;n$_$^$9!#:o$C$?6u9T$N?t$OG'>Z7k2L(B ; $B$N@hF,$KI=<($5$l$^$9!#%G%U%)%k%H$O(B t $B$G$9!#(B($BE:IU;qNA(B METHOD.ja $B;2>H(B) (setq x-pgp-sig-approved-field-body x-pgp-sig-from) ; $B=pL>$r9T$J$&$H$-$K%X%C%@$K(B Control $B%U%#!<%k%I$,B8:_$7$F!"$3$NJQ?t$K(B ; $BJ8;zNs$,@_Dj$5$l$F$$$?$i!"$=$l$r(B Approved $B%U%#!<%k%I$H$7$F%X%C%@$KA^(B ; $BF~$7$^$9!#$?$@$7(B Control $B%U%#!<%k%I$NFbMF$,%-%c%s%;%k%a%C%;!<%8$r0U(B ; $BL#$9$k$b$N$@$C$?>l9g$K$O=pL>$r9T$J$o$J$$$N$G!"(BApproved $B%U%#!<%k%I$O(B ; $BIU2C$5$l$^$;$s!#%G%U%)%k%H$O(B x-pgp-sig-from $B$HF1$8CM$G$9!#(B (setq x-pgp-sig-x-info-field-body "/anonymous@ftp.isc.org:/pub/pgpcontrol/README \tftp://ftp.isc.org/pub/pgpcontrol/README.html") ; $B$3$NJQ?t$KJ8;zNs$,@_Dj$5$l$F$$$?>l9g$O!"=pL>$r9T$J$&$H$-$K(B X-Info ; $B%U%#!<%k%I$N%\%G%#$H$7$F%X%C%@$KA^F~$7$^$9!#%G%U%)%k%H$O(B nil $B$G$9!#(B (setq x-pgp-sig-sign-fields '("Subject" "Control" "Message-ID" "Date" "From" "Sender" "X-Mailer" "X-Newsreader" "X-Face")) ; $B=pL>$r9T$J$&$H$-$K$=$NBP>]$H$9$k%X%C%@%U%#!<%k%I$N%j%9%H$G$9!#(B (setq x-pgp-sig-adjust-sign-fields-alist '(("^\\(Resent-\\)?\\(To\\|Cc\\):.*[\n\t ),<]wl@northeye\\.org" (sub "Date")) )) ; $B=pL>$r9T$J$&$H$-$K(B x-pgp-sig-sign-fields $B$G@_Dj$7$?=pL>$NBP>]$H$9$k(B ; $B%X%C%@%U%#!<%k%I$N%j%9%H$+$i!"0l;~E*$K%U%#!<%k%I$r:o=|$7$?$jDI2C$9$k(B ; $B$?$a$N>r7o@_Dj$G!"0J2<$N7A<0$H$7$^$9!#(B ; ;(setq x-pgp-sig-adjust-sign-fields-alist ; '((REGEXP1 (sub "FIELD1" "FIELD2" ...) ; (add "FIELD3" "FIELD4" ...)) ; (REGEXP2 (sub "FIELD5" "FIELD6" ...) ; (add "FIELD7" "FIELD8" ...)) ; )) ; $B%a%C%;!<%8%X%C%@$N$I$l$+$,@55,I=8=(B REGEXP $B$K%^%C%A$7$?$i!"(B'sub $B$G;O(B ; $B$^$k%U%#!<%k%I$N%j%9%H$,(B x-pgp-sig-sign-fields $B$+$i:o=|$5$l!"(B'add $B$G(B ; $B;O$^$k%U%#!<%k%I$N%j%9%H$,DI2C$5$l$^$9!#(BREGEXP $B$NJ8;zNs$NBe$o$j$K4X(B ; $B?t$r;XDj$9$k$H!"(Bnarrowing $B$5$l$?%X%C%@$,B8:_$9$k%P%C%U%!$G$=$N4X?t$r(B ; $BI>2A$7$?7k2L$,(B non-nil $B$@$C$?$H$-$KDI2C$^$?$O:o=|$,9T$J$o$l$^$9!#(B ; $B>e5-$N%G%U%)%k%H$N@_DjNc$G$O!"08@h$K(B wl ML $B$N%a!<%k%"%I%l%9$,4^$^$l(B ; $B$F$$$?>l9g$K(B Date $B%U%#!<%k%I$r=pL>$NBP>]$+$i30$9$3$H$r0UL#$7$^$9!#(B ; $B%G%U%)%k%HCM$O(B nil $B$K$J$C$F$$$^$9!#(B (setq x-pgp-sig-last-fields '( "Content-Type" "Content-Transfer-Encoding" "X-Face" "X-Face-Version" "X-Face-Type" )) ; $B=pL>$r9T$J$&$H$-$K!"%X%C%@$K$3$N%j%9%H$K4^$^$l$k%U%#!<%k%I$,B8:_$7$?(B ; $B>l9g$O$=$l$i$N>e$K!"L5$1$l$P%X%C%@$N:G2 $B$+$i>pJs$N$4Ds6!$r$$$?$@$$$?(B Solaris $B$N(B ; /bin/mail $B$N%P%0$KBP=h$9$k$N$,L\E*$G$9!#%P%0$NFbMF$O0J2<$NDL$j$G$9!#(B ; ; Mime-Version: 1.0 ; Content-Type: Text/Plain; charset=iso-2022-jp ; Content-Transfer-Encoding: 7bit ; X-Pgp-Sig: 2.6.3ia Subject,Message-ID,Date,From,X-Mailer,X-Face ; iQBVAwUBNP+880ig4LAIggqdAQE2ugH+JuF1w58bZEdGxPOzK9Ezx3qY4OqO42Pn ; 1OI4RmhLxDsZO6OtYbR6137JBgdKRgA+96/jhpQpNgvkBgZdM6IueQ== ; =QeVu ; ; $B$3$N$h$&$K(B CTE $B$ND>2<$K(B X-PGP-Sig $B$,B8:_$9$k%a!<%k$,(B Solaris $B$N(B ; /bin/mail $B$Ge$K(B X-PGP-Sig $B$,A^F~$5$l$k;EMM$r%G%U%)%k%H$K$7$^$7$?!#(B ; ; X-Face $B$b4^$^$l$F$$$kM}M3$O!"%a!<%k$NKAF,$K!V$3$s$K$A$O!{!{$G$9!#!W(B ; $B$H=q$$$?$9$0$=$P$K$=$N?M$N4i$,$"$C$?$[$&$,NI$$$@$m$&!"$H$NH=CG$+$i$G(B ; $B$9!#$b$C$H$bI=<($9$k$H$-$N=g=x$O(B MUA $B$,F~$lBX$($k>l9g$,B?$$$G$7$g$&(B ; $B$+$i!"$?$$$7$?0UL#$O$"$j$^$;$s!#(B(^^;;) (setq x-pgp-sig-always-sign nil) ; $B$3$NJQ?t$r(B non-nil $B$K$7$F$*$/$H!"Aw?.D>A0$KI,$:=pL>$r9T$J$$$^$9!#(B ; $B%G%U%)%k%H$O(B nil $B$G$9!#(B (setq x-pgp-sig-inhibit-repeated-sign t) ; $B$3$NJQ?t$r(B non-nil $B$K$7$F$*$/$H!"$9$G$K(B X-PGP-Sig $B$N=pL>$,IU2C$5$l$F(B ; $B$$$?$i!"4X?t(B x-pgp-sig-sign $B$O=pL>$r9T$J$$$^$;$s!#$3$NJQ?t$,(B nil $B$G!"(B ; $B$9$G$K(B X-PGP-Sig $B$N=pL>$,IU2C$5$l$F$$$?>l9g$O!"8E$$=pL>$r>C$7$F?7$?(B ; $B$K=pL>$rIU2C$7$^$9!#%G%U%)%k%H$O(B t $B$G$9!#(B (setq x-pgp-sig-enter-keyid-first nil) ; $B$3$NJQ?t$r(B non-nil $B$K$7$F$*$/$H(B UserID/KeyID $B$NF~NO;~$K!"$^$:(B KeyID ; $B$NF~NO$rB%$9$h$&$K$J$j$^$9!#$=$3$GJ8;z$rF~NO$;$:$K(B [RET] $B$r%?%$%W$9(B ; $B$k$3$H$K$h$C$F!"A0$K$=$N4X?t$rI>2A$7$?7k2L$,(B t $B$@$C$?>l9g$K!"4X?t(B x-pgp-sig-sign ; $B$K$h$C$F=pL>$,9T$J$o$l$^$9!#(B ; $B$3$NJQ?t$N%G%U%)%k%H$K$J$C$F$$$k(B 'x-pgp-sig-add-signature-y-or-n-p ; $B$O!"=pL>$9$k$+$I$&$+$r?R$M$k$?$a$N4JC1$J4X?t$G$9!#(B ; $BJQ?t(B x-pgp-sig-always-sign $B$H(B x-pgp-sig-enable-sign $B$N@_Dj$rM-8z$K$9(B ; $B$k$?$a$K$O(B nil $B$K$7$F2<$5$$!#(B (setq x-pgp-sig-load-hook nil) ; x-pgp-sig.el(c) $B$,(B load $B$5$l$?$H$-!"$=$N:G8e$KI>2A$5$l$k(B hook $B$G$9!#(B (setq x-pgp-sig-sign-hook nil) ; $B=pL>$r9T$J$C$F(B X-PGP-Sig $B%U%#!<%k%I$,%X%C%@$KA^F~$5$l$?D>8e$KI>2A$5(B ; $B$l$k(B hook $B$G$9!#(B (setq x-pgp-sig-prepare-sign-hook nil) ; PGP $B%3%^%s%I$G=pL>$9$kD>A0$K!"$3$l$+$i=pL>$7$h$&$H$7$F$$$k%F%-%9%H$,(B ; $BB8:_$9$k%P%C%U%!$GI>2A$5$l$k(B hook $B$G$9!#(B (setq x-pgp-sig-post-sign-hook nil) ; PGP $B%3%^%s%I$G=pL>$7$?D>8e$K!"$=$N=PNO7k2L$N%P%C%U%!$GI>2A$5$l$k(B ; hook $B$G$9!#(B (setq x-pgp-sig-good-signature-regexps '( "^Good signature from user.*$" ; v2.6 "^Good signature made .* by key:$" ; v5 )) ; $BG'>Z$r9T$J$&$H$-$K(B PGP $B%3%^%s%I$,H/$9$k!V@5$7$$!W;]$N%a%C%;!<%8$r8!(B ; $B=P$9$k$?$a$N@55,I=8=$N%j%9%H$G!"(Bcar $B$,(B PGP 2.6.3ia $BMQ!"(Bcadr $B$,(B 5.0i ; $BMQ$G$9!#(Blanguage=en $B$K$7$+BP1~$7$F$$$^$;$s!#(B (setq x-pgp-sig-bad-signature-regexps '( "^Bad signature from user.*$" ; v2.6 "^BAD signature made .* by key:$" ; v5 )) ; $BG'>Z$r9T$J$&$H$-$K(B PGP $B%3%^%s%I$,H/$9$k!V@5$7$/$J$$!W;]$N%a%C%;!<%8(B ; $B$r8!=P$9$k$?$a$N@55,I=8=$G!"(Bcar $B$,(B PGP 2.6.3ia $BMQ!"(Bcadr $B$,(B 5.0i $BMQ$G(B ; $B$9!#(Blanguage=en $B$K$7$+BP1~$7$F$$$^$;$s!#(B (setq x-pgp-sig-expected-regexps '( "Key ID \\(\\S +\\) not found" ; v2.6 "^Signature by unknown keyid: 0x\\(\\S +\\)$" ; v5 )) ; $BG'>Z$r9T$J$&$H$-$K(B PGP $B%3%^%s%I$,H/$9$k!V(BPub $B%-!<$,L5$$!W;]$N%a%C%;!<(B ; $B%8$r8!=P$9$k$?$a$N@55,I=8=$G!"(Bcar $B$,(B PGP 2.6.3ia $BMQ!"(Bcadr $B$,(B 5.0i $BMQ(B ; $B$G$9!#(Blanguage=en $B$K$7$+BP1~$7$F$$$^$;$s!#(B (setq x-pgp-sig-verify-method-alist '( (gnus-summary-mode . (x-pgp-sig-gnus-get-article x-pgp-sig-find-gnus-article-buffer x-pgp-sig-gnus-unwind-after-verify)) (gnus-Subject-mode . (x-pgp-sig-gnus-get-article x-pgp-sig-find-gnus-article-buffer x-pgp-sig-gnus-unwind-after-verify)) (mh-folder-mode . (x-pgp-sig-mh-get-article x-pgp-sig-msg-to-verify-buffer)) (mew-summary-mode . (x-pgp-sig-mew-get-article x-pgp-sig-msg-to-verify-buffer)) (mew-virtual-mode . (x-pgp-sig-mew-get-article x-pgp-sig-msg-to-verify-buffer)) (cmail-summary-mode . (x-pgp-sig-cmail-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-presentation-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-summary-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (wl-summary-mode . (x-pgp-sig-wl-get-article x-pgp-sig-msg-to-verify-buffer)) )) ; $B?'!9$J(B Newsreader/Mailer $B$GG'>Z$r9T$J$&$3$H$,$G$-$k$h$&$K$9$k$?$a$N(B ; $BJQ?t$G!"3F(B cell $B$Ol9g$O!"$=$NI>2A7k2L$r:NMQ$7$^$9!#(B ; x-pgp-sig-find-gnus-article-buffer $B$,$3$l$K3:Ev$7$^$9!#(B ; ; POST-FUNCTION $B$OG'>Z$7=*$o$C$F$+$i8e;OKv$N$?$a$Kl9g$O!"0J2<$N4X?tDj5A$r(B ~/.emacs $B$J$I$N$J$k$Y$/;O$a$NJ}$K=q$-9~$s$G2<$5$$!#(B (defun add-hook (hook function &optional append) "Add to the value of HOOK the function FUNCTION. FUNCTION is not added if already present. FUNCTION is added (if necessary) at the beginning of the hook list unless the optional argument APPEND is non-nil, in which case FUNCTION is added at the end. HOOK should be a symbol, and FUNCTION may be any valid function. If HOOK is void, it is first set to nil. If HOOK's value is a single function, it is changed to a list of functions." (or (boundp hook) (set hook nil) ) ;; If the hook value is a single function, turn it into a list. (let ((old (symbol-value hook))) (if (or (not (listp old)) (eq (car old) 'lambda)) (set hook (list old)) )) (or (if (consp function) ;; Clever way to tell whether a given lambda-expression ;; is equal to anything in the hook. (let ((tail (assoc (cdr function) (symbol-value hook)))) (equal function tail) ) (memq function (symbol-value hook)) ) (set hook (if append (nconc (symbol-value hook) (list function)) (cons function (symbol-value hook)) )) )) ---------------------------------------------------------------------- 7. $B$*$^$1(B $B#1(B: x-pgp-sig-adjust-sign-fields-alist $B$N@_DjNc!#(B $B=pL>$NBP>]$H$J$k%X%C%@$N%U%#!<%k%I$r08@h$K$h$C$FJQ$($k>l9g$K!"J#?t$N(B $B08@h$4$H$K$^$H$a$F@_Dj$9$kJ}K!$G$9!#(B~/.emacs $B$K=q$$$FMxMQ$7$^$9!#(B ; $BJ#?t$N08@h$r0l$D$N@55,I=8=$K$^$H$a$k$d$jJ}(B (setq x-pgp-sig-adjust-sign-fields-alist (list ;;; $B%I%a%$%s$,6&DL$N>l9g(B (list (concat "^\\(to\\|cc\\):.*[\n\t ),<]" "\\(" "hoge0" "\\|" "hoge1" "\\|" "hoge2" "\\|" "hoge3" "\\|" "hoge4" "\\)@foo\\.bar\\.ac\\.jp") '(sub "Subject" "Reply-To" "Sender") '(add "Organization")) ;;; $B%I%a%$%s$,$P$i$P$i$N>l9g(B (list (concat "^\\(to\\|cc\\):.*[\n\t ),<]" "\\(" "hoge5@foo\\.bar\\.ac\\.jp" "\\|" "hoge6@foo\\.bar\\.bc\\.jp" "\\|" "hoge7@foo\\.bar\\.cc\\.jp" "\\|" "hoge8@foo\\.bar\\.dc\\.jp" "\\|" "hoge9@foo\\.bar\\.ec\\.jp" "\\)") '(sub "Subject" "Sender" "Message-ID") '(add "X-Special-Header")) )) ; $B85$O$b$C$H4JC1$K=q$$$F(B Emacsen $B$K@55,I=8=$r:n$i$;$k$d$jJ}(B (let ((recipient-list '( (("hoge0@foo.bar.ac.jp" "hoge1@foo.bar.ac.jp" "hoge2@foo.bar.ac.jp" "hoge3@foo.bar.ac.jp" "hoge4@foo.bar.ac.jp") (sub "Subject" "Reply-To" "Sender") (add "Organization")) (("hoge5@foo.bar.ac.jp" "hoge6@foo.bar.bc.jp" "hoge7@foo.bar.cc.jp" "hoge8@foo.bar.dc.jp" "hoge9@foo.bar.ec.jp") (sub "Subject" "Sender" "Message-ID") (add "X-Special-Header")) )) elt) (setq x-pgp-sig-adjust-sign-fields-alist nil) (while recipient-list (setq elt (car recipient-list) recipient-list (cdr recipient-list) x-pgp-sig-adjust-sign-fields-alist (append x-pgp-sig-adjust-sign-fields-alist (list (append (list (concat "^\\(to\\|cc\\):.*[\n\t ),<]\\(" (mapconcat (function (lambda (r) (regexp-quote r))) (car elt) "\\|") "\\)")) (mapcar 'identity (cdr elt)))))))) $B#2(B: Pub $B%-!<$r(B http $B$G(B fetch $B$9$k$?$a$N(B mc-pgp $BJQ?t$N@_DjNc(B mc-pgp.el $B$G$O(B proxy $B%5!<%P$r7PM3$;$:$KD>@\(B pgp.ai.mit.edu $B$HDL?.$9(B $B$k$?$a$N@_Dj$,%G%U%)%k%H$G9T$J$o$l$F$$$^$9$,!"(Bproxy $B%5!<%P$r;H$&>l9g(B $B$O3FJQ?t$rl9g$N@_Dj!#(B (setq mc-pgp-keyserver-url-template (concat "http://pgp.nic.ad.jp/cgi-bin/pgpsearchkey.pl?op=get&search=%s" " HTTP/1.0\n\n")) ;;; MIT $B$N%-!<%5!<%P(B pgp.ai.mit.edu $B$rMxMQ$9$k>l9g$N@_Dj!#(B ;;; pgp.nic.ad.jp $B$,;_$^$C$F$$$k$H$-$O$3$l$i$r;H$C$F2<$5$$!#(B (setq mc-pgp-keyserver-url-template (concat "http://pgp.ai.mit.edu/htbin/pks-extract-key.pl?op=get&search=%s" " HTTP/1.0\n\n")) ;;; Proxy $B%5!<%P$N%[%9%HL>$N;XDj!#(B (setq mc-pgp-keyserver-address "YOUR.PROXY.SERVER") ;;; Proxy $B%5!<%P$N%]!<%HHV9f$N;XDj!#(B (setq mc-pgp-keyserver-port 8080) x-pgp-sig-use-mime-pgp-fetch-key $B$r(B t $B$K$9$k>l9g$O(B 5. Customize $B$N9`(B $B$r;2>H$7$F2<$5$$!#(B $B#3(B: mua-bend.el ($B$3$N%Q%C%1!<%8$KIUB0(B) MH $B7O(B MUA (mh-e, Mew $BEy(B) $B$K$h$C$F@8@.$5$l$J$$%a%C%;!<%8%X%C%@$N%U%#!<(B $B%k%I$r(B PGP $B$N=pL>BP>]$H$7$?$$>l9g$K!"$3$N%W%m%0%i%`$r;H$&$3$H$K$h$C(B $B$F\$7$$$3$H$O$3$N%Q%C%1!<%8$KIUB0$7$F$$$kH2<$5$$!#(B $B#4(B: $B=pL>$7$?$H$-$KFH<+$N%X%C%@%U%#!<%k%I$rDI2C$9$kNc(B $B%X%C%@$K8x3+%-!<$N:_$j$+$N(B URL $B$d%-!<$N;XLf$rIU2C$7$F$"$k%a%C%;!<%8(B $B$r8+$+$1$^$9$,!"=pL>$7$F$$$J$$$N$K$=$l$i$,IU$$$F$$$k$N$O$A$g$C$H4VH4(B $B$1$J46$8$,$7$^$9!#(B:-p $B0J2<$O(B X-PGP-Sig $B$N=pL>$r9T$J$C$?$H$-$@$1!"FH<+$N%U%#!<%k%I$rDI2C$9(B $B$kNc$G$9!#(B (setq my-extra-x-pgp-fields '( "X-Pgp5-Key: http://www.jpl.org/elips/yamaoka5.key\n" "X-Fingerprint20: 0997 4A6C 677F 8AD2 70BF 9D55 E52D 9BA5 880C 6FD4\n" )) (add-hook 'x-pgp-sig-sign-hook (function (lambda () (and (boundp 'my-extra-x-pgp-fields) my-extra-x-pgp-fields (listp my-extra-x-pgp-fields) (save-excursion (goto-char (point-min)) (let ((separator (or (and (search-forward "\n\n" nil t) (1+ (match-beginning 0))) (point-max))) (case-fold-search t)) (goto-char (point-min)) (and (re-search-forward "^x-\\(info:\\|pgp-\\)" separator t) (goto-char (match-beginning 0)) (apply 'insert my-extra-x-pgp-fields)))))))) x-pgp-sig-el-1.3.5.1.orig/ChangeLog.ja0100644000175000017610000005726006724453070016474 0ustar kitamedebianv1.3.5.1 1999.05.31 ($B;3(B)$B!&Gr0f$5$s(B $B$+$i(B [elips : No.2891] $B$G65(B $B$($F$$$?$@$$$?>pJs$K4p$-!"(BMew 1.94b20 $B0J>e$G;H$&>l9g$OBh(B 1 $B0z?t(B t $B$rE:$($F4X?t(B mew-summary-canlock-verify $B$r8F$V$h$&$K$7$?!#(B ($B;3(B)$B!&F1$8$/Gr0f$5$s$N$4;XE&$K$h$j!"(BMew 1.94b29 $B$+$iGQ;_$5$l$?(B mew-cs-noconv $B$KBe$($F(B *noconv* $B$+(B binary $B$r;H$&$h$&$K$7$?!#(B v1.3.5 1999.05.21 - "Rain" ($B;3(B)$B!&(BMakefile $B$rDI2C$7!"@bL@$r(B README-Makefile.ja $B$K5-=R$7$?!#(B ($B;3(B)$B!&(Btm-ja 4449 $B$G>.4X$5$s(B $B$+$i$4>R2p$N$"$C(B $B$?(B PGP 2.x $B:G=*HG$N$"$j$+$r(B 00README.ja $B$KL@5-$7$?!#(B ($B;3(B)$B!&2,ED7r0l$5$s(B $B$N$4;XE&$K$h$j!"(B PGP5 $B$N%-!<$N(B fetch $B$K$O%G%U%)%k%H$G(B `mc-pgp50-fetch-key' $B$r;H$&(B $B$h$&$KJQ99!#(B $BF1$8$/2,ED$5$s$N$4;XE&$K$h$j(B `x-pgp-sig-default-signer' $B$r(B cons cell $B$K$7$?>l9g$NIT6q9g$r=$@5!#(B ($B;3(B)$B!&(BUser option `x-pgp-sig-use-mime-pgp-fetch-key' $B$r?7@_!#(BNon-nil $B$@$C(B $B$?$iL5$$%-!<$N(B fetch $B$K(B semi-pgpgpg $B$N4X?t(B `mime-pgp-fetch-key' $B$r;H$&!#(B ($B;3(B)$B!&(BM-x customize-variable $B$G%(%i!<$,5/$-$k>l9g$,$"$k(B user options $B$N(B defcustom $B$G$N@_DjJ}K!$r=$@5!#B>$K(B doc string $B$d(B :type $B$N=$@5!#(B ($B;3(B)$B!&(BCompile $B;~$K(B Gnus $B$N(B macro $B$r(B pickup $B$9$k$?$a!"I,MW$J%U%!%$%k$r(B load $B$9$k$h$&$K$7$?!#(BVM $B$K$D$$$F$b?7HG$KBP1~$7$?!#(B v1.3.4 98.10.13 - "Sun King" ($B;3(B)$B!&(Bx-pgp-sig-read-noecho() $B$G;H$&4X?t(B read-char-exclusive() $B$r?7@_$7(B $B$?%^%/%m(B x-pgp-sig-read-char-exclusive() $B$GCV$-49$($?!#(B XEmacs 21.2 $B$G(B backspace $B$J$I$N(B event $B%-!<$N0lIt$r(B char $B$H$7$FFI$a(B $B$k$h$&$K$7$?$b$N!#(B ------ 98.09.28 ($BCf(B)$B!&(Bx-pgp-sig-mh-get-article() $B$G(B string $B$H(B integer $B$r(B concat() $B$7$F$$(B $B$?$N$r(B format() $B$GCV$-49$($?!#(BXEmacs $B$G$OJQ?t7?$,87L)$K6hJL$5$l$k!#(B v1.3.3 98.08.17 - "A Taste Of Honey" ($B;3(B)$B!&=pL>$9$k$H$-$K%U%#!<%k%IL>$r(B x-pgp-sig-sign-fields $B$NMWAG$GCV$-49(B $B$($k$N$rK:$l$F$$$?%P%0(B -- x-pgp-sig-sign-fields $B$NMWAG$K(B "from" $B$,(B $B$"$C$F$b(B "From" $B%U%#!<%k%I$G=pL>$7$F$7$^$&(B -- $B$r=$@5$7$?!#(B $B>eLnM:Bg$5$s(B $B$N$4;XE&$K$h$k!#(B v1.3.2 98.07.15 - "When I'm Sixty-Four" ($B1|(B)$B!&(Bx-pgp-sig-wl-get-article() $BFb$N(B wl-summary-redisplay() $B$r(B wl-summary-set-message-buffer-or-redisplay() $B$KJQ99$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-mew-encode-coding-and-sign() $B$r(B v1.3.0 $B$N>uBV$KLa$7(B $B$?!#(Bheader separator $B$,;D$C$F$7$^$&$N$O(B x-face-insert() $B$K$h$C(B $B$F(B mew-marker-header-end $B$,GK2u$5$l$F$7$^$&$3$H$,860x$G$"$k$3(B $B$H$,H=L@$7!"(BX-Face 1.3.1 $B$GD>$7$?$?$a!#(B v1.3.1 98.07.07 - "Your Mother Should Know" ($B;3(B)$B!&(Bx-pgp-sig-mew-encode-coding-and-sign() $B$r(B header separator $B$NM-L5$K4X$o$i$:F0:n$9$k$h$&$K$7$?!#(B v1.3.0 98.07.06 - "All You Need Is Love" ($B;3(B)$B!&(BWanderlust $BMQ$N(B verify method $B$rDI2C$7$?!#(B x-pgp-sig-verify-method-alist $B$N%G%U%)%k%HCM$H(B x-pgp-sig-wl-get-article()$B!#(B ($B;3(B)$B!&(BPGP 5.0i $B$N2~B$Nc$rJ8>O$G(B 00README.ja $B$K5-:\$7$?!#(B v1.3-b10 98.06.17 - "Blue Jay Way" ($B;3(B)$B!&(Bx-pgp-sig-verify() $B$K$*$$$F(B mime-raw-buffer $B$,B8:_$9$k$H$-$O(B $B$=$N(B buffer $B$+$iD>@\(B major-mode $B$rl9g$K!"$5$i$K(B x-pgp-sig-reserve-sign $B$r(B message-send-hook $B$K!"(B x-pgp-sig-cancel-reserve-sign $B$r(B message-sent-hook $B$K(B add- hook $B$7$F$*$/$H!"%K%e!<%9$H%a!<%k$rF1;~Aw?.$7!"$5$i$K(B Gcc $B$,(B $B$"$k$h$&$J>l9g$G$b(B (Y/n) $B$r?R$M$i$l$k$N$O:G=i$N0l2s$@$1$K$J$k!#(B ($B;3(B)$B!&(BVM $B$KBP1~$7$?!#$3$l$K$H$b$J$C$F(B x-pgp-sig-verify-method-alist $B$K(B VM $B$K4X$9$k%G%U%)%k%H@_Dj$rDI2C$9$k$H$H$b$K!"(Barticle $B$rCj(B $B=P$9$k$?$a$N4X?t(B x-pgp-sig-vm-get-article $B$r?7@_$7$?!#(B ($B;3(B)$B!&JQ?t(B x-pgp-sig-inhibit-repeated-sign $B$r?7@_$7$?!#(BNon-nil $B$K(B $B$7$F$*$/$H!"$9$G$K(B X-PGP-Sig $B$N=pL>$,IU2C$5$l$F$$$?$i!"4X?t(B x-pgp-sig-sign $B$O=pL>$r9T$J$o$J$$!#$3$NJQ?t$,(B nil $B$G!"$9$G$K(B X-PGP-Sig $B$N=pL>$,IU2C$5$l$F$$$?>l9g$O!"8E$$=pL>$r>C$7$F?7$?(B $B$K=pL>$rIU2C$9$k!#%G%U%)%k%H$O(B t$B!#(B v1.3-b8 98.05.06 - "Do You Want To Know A Secret" ($B;3(B)$B!&(Bx-pgp-sig-set-signer-maybe() $B$N!"=pL>o=pL>$9$k$H$-$N(B UserID $B$d(B KeyID$B!"$^$?$O$=$l$i$N(B $B%I%C%H%Z%"$r@_Dj$G$-$k$h$&$K$7$?!#(Bx-pgp-sig-default-signer $B$h$j$bM%@h$9$k!#(B ($B;3(B)$B!&%-!<$N;XLf$r%X%C%@$KDI2C2DG=$K$7$?!#(B x-pgp-sig-add-fingerprint-field $B$r(B non-nil $B$K$9$k$HM-8z$K$J(B $B$k!#(B ($B;3(B)$B!&(Bx-pgp-sig-lookup-keys() $B$r:n$jD>$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-pgp-v5-p $B$NCM$,JQ2=$7$?$i(B x-pgp-sig-secret-key-alist $B$r:n$jD>$9$h$&$K$7$?!#(B ($B;3(B)$B!&(Breload $B;~$KI>2A$5$l$k(B x-pgp-sig-reload-hook $B$r?7@_$7$?!#(B ($B;3(B)$B!&%-!<$K4X$9$k>pJs$r%X%C%@$KDI2C2DG=$K$7$?!#(B x-pgp-sig-add-key-info-field $B$r(B non-nil $B$K$9$k$HM-8z$K$J$k!#(B ($B;3(B)$B!&(BSpace $B$G;O$^$k%P%C%U%!$KBP$7$F(B buffer-disable-undo() $B$9$k$N(B $B$r;_$a$?!#(B v1.3-b6 98.03.06 - "For You Blue" ($B;3(B)$B!&@5$7$$(B passphrase $B$,@_Dj$5$l$F$$$J$$>l9g$K(B x-pgp-sig-sign $B$,(B $BI>2A$5$l$?>l9g$O=pL>$5$l$J$$$N$G!"(BX-Info $B$J$I$N%U%#!<%k%I$r(B $BIU2C$7$J$$$h$&$K$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-set-signer(-maybe) $B$G!"(Bpassphrase $B$NF~NO$r4V0c$($F(B $B$b(B error $B$G(B interrupt $B$7$J$$$h$&$K$7$?!#(B($B;3K\$5$s$N$4;XE&(B) v1.3-b5 98.03.06 - "Glass Onion" ($B;3(B)$B!&Gr0f$5$s(B $B$+$i(B [elips : No.1245] $B$G65$($FD:$$$?GzCF>pJs(B -- Solaris $B$N(B /bin/mail $B$G\:Y$O(B 00README.ja $B$N(B x-pgp-sig-last-fields $B$N9`$K!#(B ($B;3(B)$B!&$I$&$b(B PGP $B%3%^%s%I$OI8=`F~NO$+$i%G!<%?$,F~NO$5$l$F$$$k$H$-(B $B$KI8=`=PNO(B (?) $B$K2?$+$rEG$$$F$$$k$h$&$@!#2A$9$k$h$&$K$7$?!#(B($B2?$@$3$j$c(B ^^;;) Emacsen $B$K$h$C$F(B start-process $B$,$3$N(B PGP $B$,EG$/N/B)$r5[$$=P(B $B$9$+$I$&$+$N0c$$$,!"F0:n$NIT3N7$$$F$$$k$N$G$O$J$$$+!#(B (PowerLisper $B8N$NHa$7$5$G3N$+$J$3$H$O$o$+$j$c$K$c$$$1$I(B...) ($B;3(B)$B!&0lIt$N(B Emacsen $B$G(B start-process $B$,;H$($J$$LdBj$N2rL@$N$?$a$K(B process-status $B$J$I$NJQ2=$r5-O?$9$k$h$&$K$7$?!#(B $BJQ?t(B x-pgp-sig-debug $B$r(B non-nil $B$K$7$F$*$/$H!"(BPGP $B%3%^%s%I$r(B $B;H$C$?8e$G(B M-x x-pgp-sig-debug-list-buffers $B$7$?$H$-$K8=$l$k(B $B%P%C%U%!$N!"L>A0$NKvHx$,(B -/O $B$NB&$K0lDj4|4VJ]B8$5$l$F$$$k!#(B $B$^$?(B x-pgp-sig-debug-log-file $B$KE,Ev$J%U%!%$%k$N@dBP%Q%9L>$r(B $B;XDj$7$F$*$/$HF1MM$N>pJs$,DI2C5-O?$5$l$k!#$3$l$O(B Emacsen $B$,(B $B%@%&%s$7$F$7$^$C$?>l9g$G$bD>A0$K2?$,9T$J$o$l$?$+$rCN$k$N$KM-(B $B8z$@$,!"B.EY$,6KC<$KCY$/$J$k$3$H$,$"$k!#$7$F%G%U%)%k%H$O(B nil. ($B;3(B)$B!&(BUserID $B$NF~NO;~$KJ8;z$rF~NO$;$:$K(B [RET] $B$r%?%$%W$9$k$H!"Be$o(B $B$j$K(B KeyID $B$NF~NO$,$G$-$k$h$&$K$7$?!#(B x-pgp-sig-enter-keyid-first $B$H$$$&JQ?t$NCM$r(B non-nil $B$K$9$k(B $B$H!"=i$a$K(B KeyID $B$NF~NO$rB%$9$h$&$K$J$k!#(B ($B;3(B)$B!&(BUserID $B$,F1$8$G(B KeyID $B$,0c$&J#?t$N%-!<$r(B secring $B$K;}$D>l9g(B $B$KBP=h$9$k$?$a!"%W%m%0%i%`$NFbItI=8=$r(B KeyID $BMh(B $B$N(B UserID $B$NJ8;zNs$@$1$G$J$/!"(BUserID $B$H(B KeyID $B$N(B cons $B$K$9$k(B $B$3$H$b2DG=$K$7$?!#$=$N>l9g $B$N$4;XE&$K$h$j!"(Bsetenv() $B$r(B emulate $B$9$kA0$K(B 'env $B$r(B require $B$9$k$h$&$K$7$?!#(B ($B;3(B)$B!&(BXEmacs, PGP 5.0i $B$G(B pubkey $B$r;}$C$F$$$J$$=pL>$rG'>Z$7$h$&$H(B $B$7$?$H$-$N%(%i!<=hM}$r=$@5$7$?!#(B v1.3-b3 98.03.03 - "I've Got A Feeling" ($B;3(B)$B!&(Bx-pgp-sig-verify-for-gnus() $B$rK\Ev$KL$FI9VFI5-;v$G$@$1F0:n$9(B $B$k$h$&$K=$@5$7$?!#(B ($B;3(B)$B!&(BPGP 5.0i $B$GF~NO$7$?(B passphrase $B$r(B confirm $B$9$k=hM}$r=$@5$7$?!#(B ($B;3(B)$B!&4D6-JQ?t(B PGPPATH $B$,(B PGP 2.6.3ia $B$G$O%G%U%)%k%H$,(B ~/.pgp $B$K$J(B $B$k$,(B 5.0i $B$G$O$=$&$J$i$J$$$N$G!"(BPGP $B%3%^%s%I$r;H$&$H$-$KI,$:(B $B%;%C%H$9$k$h$&$K$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-set-signer-maybe() $B$G!"$9$G$KEPO?$5$l$F$$$k%-!<$N(B passphrase $B$NF~NO$rMW5a$9$k6r$r=$@5$7$?!#(B ($B;3(B)$B!&(BPGP 2.6.3ia $B$r;H$C$F(B DSS $B%-!<(B (5.0i) $B$G:n$i$l$?=pL>$NG'>Z$r(B $B$7$?$H$-$N7Y9pI=<(5!G=$rDI2C$7$?!#(B v1.3-b2 98.03.02 - "Jude Hey" ($B;3(B)$B!&(B00README.ja $B$H(B README-PGP5.ja $B$NFbMF$r=$@5$7$?!#(B ($B;3(B)$B!&(BPGP 5.0i $B$r;H$&$H$-$N(B language $B$r(B "us" $B$K$7$?!#(B ($B;3(B)$B!&(Bdefcustom() $B$,L5$$(B Emacsen $B$N$?$a$K(B defvar $B$GCV$-49$($k(B macro $B$r=$@5$7$?!#(B v1.3-b1 98.02.27 - "Kome Together" ($B;3(B)$B!&(BPGP 5.0i $B$K4X$9$kJdB-@bL@%U%!%$%k(B README-PGP5.ja $B$r?7@_!#(B ($B;3(B)$B!&4X?t(B x-pgp-sig-verify-for-gnus $B$r?75,9VFI5-;v$G$@$1F0:n$9$k(B $B$h$&$KJQ99$7$?!#$^$?$3$l$rI>2A$9$k(B hook $B$H$7$F=>Mh$N(B gnus-article-display-hook $B$KBe$o$C$F(B gnus-select-article-hook $B$r?d>)$9$k!#(B ($BCf(B)$B!&CfB<$5$s(B $B$,:n$i$l$?(B PGP 5.0i $B$G(B junet $B$NF|K\8l$r07$($k$h$&$K$9$k%Q%C%A$rE:IU$7$?!#(B ($B;3(B)$B!&(BPGP 5.0i $B$X$NBP1~$r;O$a$?!#$b$A$m$s(B 2.6.3i $B$G$b;H$($k$,!"(B v1.2.5 $B0JMh;H$C$F$$$J$+$C$?(B start-process $B$rI|3h$5$;!"%G%U%)(B $B%k%H$G$O$9$Y$F$3$l$r;H$C$F(B PGP $B%3%^%s%I$r8F$V$h$&$K$7$?!#(B v1.2.11.4 98.02.25 ($B1|(B)$B!&(BMew 1.93b19 $B$KBP1~!#(B $BB8L?4|4V$,C;$+$C$?(B 1.93b18 $B$X$NBP1~$O$7$J$$!#(B v1.2.11.3 98.02.24 ($B1|(B)$B!&(BMew 1.93b18 $B$KBP1~!#(B v1.2.11.2 98.02.10 ($B;3(B)$B!&(B00README.ja $B$N>.=$@5!#(B byte-compile $B;~$K$"$i$+$8$a(B Gnus $B$r(B load $B$7$F$*$/$3$H$H!"(B $BCfB<$5$s(B $B$N$4;XE&$K$h$j(B mc-pgp-keyserver-url-template $B$N@_DjNc!#(B v1.2.11.1 98.02.03 ($B;3(B)$B!&=pL>;~$K%\%G%#$,2~9T$G=*$o$C$F$$$J$+$C$?$iIU2C$9$k$h$&$K$7$?!#(B $BAw?.$9$k%a%C%;!<%8$K$OIU2C$7$J$$$,(B MUA $B$+(B MTA $B$,IU2C$7!":G=*(B $BE*$KZ$r7+$jJV$5$J$$$h$&$K$7$?!#(B ($B;3(B)$B!&(B`Version' $B$N>pJs$r%X%C%@$KIU2C$9$k$?$a$NJQ?t72$r?7@_$7$?!#(B $B%G%U%)%k%H$OIU2C$7$J$$!#>\:Y$O(B x-pgp-sig.el $B$r$4;2>H2<$5$$!#(B v1.2.10 98.01.09 - "Mother Nature's Son" ($B1|(B)$B!&(BMew $B$G;H$&>l9g$N@bL@J8(B (00README.ja, README-Mew.ja) $B$NITHw$r(B $B=$@5$7$?!#%W%m%0%i%`K\BN$OL5JQ99!#(B v1.2.9 98.01.07 - "Nowhere Man" ($B;3(B)$B!&?9;3$5$s(B $B$N$4;XE&$K$h$j!"=p(B $BL>$7$h$&$H$9$k%a%C%;!<%8$N$I$3$+$K(B "Error:" $B$H$$$&J8;zNs$,$"(B $B$k$H=pL>$G$-$J$$%P%0$,H/3P!#(BPGP $B%3%^%s%I$,=PNO$9$k%(%i!<%a%C(B $B%;!<%8$N8!=PJ}K!$r2~A1$7$?!#(B ($B;3(B)$B!&(Bstart-process $B$r;H$C$F$$$J$$8=>u$G$OL5MQ$K$J$C$F$$$?%3!<%I$r(B $B:o=|$7$?!#(B v1.2.9-b7 97.12.27 - "Old Brown Shoe" ($B;3(B)$B!&4X?t(B x-pgp-sig-verify-for-gnus $B$r(B gnus-show-mime $B$,(B non-nil $B$N>l9g$@$1F0:n$9$k$h$&$K$7$?!#(B v1.2.9-b6 97.12.05 - "Piggies" ($B;3(B)$B!&(BGnus $B$G5-;v$rFI$`EY$K<+F0$GG'>Z$r9T$J$&$3$H$rL\E*$H$7$F!"4X(B $B?t(B x-pgp-sig-verify-for-gnus $B$r?7@_$7$?!#(B gnus-article-display-hook $B$K(B add-hook $B$7$F;H$&!#(B $B$3$l$N$?$a$K!"G'>Z$G$-$J$+$C$?$H$-$O$=$N;]$r%(%3!<$9$k$@$1$G(B $B%(%i!<$G;_$a$J$$$h$&$K(B x-pgp-sig-verify $B$r2~B$$7$?!#(B ($B;3(B)$B!&=>Mh(B Gnus $B$G$OG'>Z$9$kA0$H8e$N#22s(B (gnus-summary-show-article) $B$r9T$J$C$F$$$?$,!"I,MW$,L5$$$H$-$O9T$J$o$J$$$h$&$K$7$F=hM};~(B $B4V$rC;=L$7$?!#$3$l$K$H$b$J$C$F(B x-pgp-sig-verify-method-alist $B$N%G%U%)%k%HCM$rJQ99$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-sign() $B$N(B optional arg $B$H(B x-pgp-sig-always-sign $B$r(B $B=pL>$9$k(B/$B$7$J$$$rH=CG$9$k>r7o$N:G9b0L$K$7$?!#$I$A$i$+$NCM$,(B non-nil $B$G%\%G%#$,6u$G$J$+$C$?$iB>$N>r7o$H$OL54X78$K=pL>$9$k!#(B ($B;3(B)$B!&(BResent-{To|Cc} $B%U%#!<%k%I$,$"$C$?$i=pL>$7$J$$$h$&$K$7$?!#(B ($B;3(B)$B!&(BContent-Length $B%U%#!<%k%I$NIU2C$r$d$a$?!#(B v1.2.9-b5 97.10.30 - "Revolution" ($B;3(B)$B!&(BLines $B$H(B Content-Length $B%U%#!<%k%I$NCM$O$"$^$j?.Mj@-$,9b$/L5(B $B$$$h$&$J$N$G!"$3$l$i$rG'>Z;~$K;2>H$9$k$N$r$d$a$?!#(B $B$?$@$7;29MCM$H$7$FG'>Z7k2L$H$H$b$K0J2<$N$h$&$KI=<($9$k!#(B (+1/-2) Good signature... $B$3$l$O(B Lines $B%U%#!<%k%I$NCM$,%a%C%;!<%8%\%G%#$N9T?t$h$j(B 1 $B9T(B $BB?$+$C$?$3$H$H!"%\%G%#$N:G8e$K$"$C$?6u9T$r(B 2 $B9TL5;k$9$k$3$H(B $B$K$h$C$FG'>Z$K@.8y$7$?$3$H$r0UL#$9$k!#(B ($B;3(B)$B!&4X?t(B x-pgp-sig-mew-encode-coding-and-sign $B$G!"(Bread-only $B$N(B text-property $B$r:o=|$7$F$+$i=hM}$r9T$J$&$h$&$K$7$?!#(B ($B;3(B)$B!&(Bcall-process $B$r;H$&$H$-$N(B coding-system $B$N94B+J}K!$r=$@5$7$?!#(B v1.2.9-b4 97.10.13 - "Sgt.Pepper's" ($B;3(B)$B!&(Bbyte-comp $B;~$K(B warning $B$r@E$+$K$9$kJ}K!$rJQ99!#(B ($B;3(B)$B!&(Bdefcustom $B$r:NMQ!#(B($B;H$($J$$(B Emacsen $B$G$O(B defvar $B$GCV$-49$((B) (v1.2.9-b4- 97.10.03 - "Sgt.Pepper's") ($B>.Ln(B)$B!&(Bmua-bend.el $B$r(B v1.8 $B$K(B update $B$9$k$H$H$b$K!"$7$?!#(B(^^;;) v1.2.9-b3 97.09.25 - "Twist & Shout" ($B>.Ln(B)$B!&(BMH $B7O(B MUA (mh-e, Mew $BEy(B) $B$K$h$C$F@8@.$5$l$J$$%a%C%;!<%8%X%C(B $B%@$N%U%#!<%k%I$r!"(BPGP $B$N=pL>BP>]$H$7$?$$>l9g$KMQ$$$k%I%i%U%H(B $BA0=hM}%D!<%k$H$7$F(B mua-bend.el v1.7 $B$r%Q%C%1!<%8$K4^$a$?!#(B ($B;3(B)$B!&(Bcmail $B$G0l$D$N%a%C%;!<%8$rCj=P$9$k$?$a$N4X?t(B x-pgp-sig-cmail -get-article $B$r=q$-49$($?!#(B ($B;3(B)$B!&>.Ln$5$s(B $B$K3+H/$K;22C$7$FD:$$$?!#(B v1.2.9-b2 97.09.05 - "With A Little Help From My Friends" ($B>.4X(B)$B!&(Bcmail $B$G;H$&$?$a$N4X?t72$d%G%U%)%k%H@_Dj$r?75,DI2C$7$?!#(B v1.2.9-b1 97.08.26 - "You Never Give Me Your Money" ($B1|(B,$B;3(B)$B!&(BMew 1.89 $B$+$i<+A0$G%X%C%@$N(B (B|Q)-encoding $B$9$k$h$&$K$J$C$?(B $B$N$K$H$b$J$$!"=>Mh(B mew-send-hook $B$GI>2A$5$;$F$$$?(B x-pgp-sig- mew-encode-message $B$OITMW$K$J$C$?!#(B $B$7$+$7=pL>$9$kA0$K%a%C%;!<%8$NJ8;z%3!<%I$r%M%C%H%o!<%/%3!<%I(B $B$KJQ49$9$k=hM}$O0MA3$H$7$FI,MW$J$N$G!"JQ49$7$F$+$i=pL>$9$k$?(B $B$a$N4X?t(B x-pgp-sig-mew-encode-coding-and-sign $B$r?7@_$7$?!#(B $B$3$l$O=>Mh(B mew-send-hook $B$G(B x-pgp-sig-sign $B$rI>2A$5$;$F$$$?(B $B$N$r$d$a$kBe$o$j$K(B mew-real-send-hook $B$K(B add-hook $B$7$F;H$&!#(B mew-draft.el $B$N>.JQ99$,I,MW!#(B v1.2.8 97.08.11 - "Dizzy Miss Lizzy" ($B;3(B)$B!&=pL>$NBP>]$K$J$k%X%C%@%U%#!<%k%I$,J#?t$"$C$?$i!"BP>]$+$i30$9(B $B$h$&$K$7$?!#(B($BNc(B: X-Face: $B$,Fs$D$"$k>l9g$J$I!#(B) v1.2.7 97.08.06 ($B;3(B)$B!&(BMew $B$H(B mh-e $B$GG'>Z$9$k:]$K!"(Binsert-file-contents $B$rA0$K(B coding-system $B$rL5JQ49$K94B+$9$k$h$&$K$7$?!#=>Mh$O(B $B%U%!%$%k$rA^F~$9$k%P%C%U%!$K@Z$jBX$($kA0$K94B+$7$F$$$?$N$G!"(B buffer-local $B$JJQ?t$KBP$7$F8z2L$,L5$+$C$?!#(BMew 1.87 $BBP:v!#(B v1.2.6 97.07.22 ($B;3(B)$B!&(BEmacs 20.0.91, MULE 3.0 $B$KBP1~!#(B v1.2.6-b3 97.07.07 ($B;3(B)$B!&JQ?t(B x-pgp-sig-debug $B$r?7@_!#(BNon-nil $B$K$7$F$*$/$H!"%(%i!<$,(B $B5/$-$?$H$-$K$=$N860x$K$J$C$?%P%C%U%!$NFbMF$rI=<($9$k!#(B ($B1|(B)$B!&(BDOS $B7O$J$I$N(B OS $B$G(B Mew $B$r;H$&>l9g$r9MN8$7!"9TKv%3!<%I$,(B CRLF $B$GJ]B8$5$l$F$$$k%a%C%;!<%8$+$i(B CR $B$r:o=|$9$k=hM}$rDI2C$7$?!#(B ($B;3(B)$B!&4X?t(B x-pgp-sig-read-noecho $B$G%&%#%s%I%%I}$NB,DjBP>]$,%_%K%P%C(B $B%U%!$KFCDj$5$l$k$h$&$K=$@5$7$?!#(B v1.2.6-b2 97.07.03 ($B1|(B)$B!&(BDOS $B7O$J$I$N(B OS $B$G!"(BPGP $B$N=PNO$N9TKv$,(B CRLF $B$K$J$k2DG=@-$r9M(B $BN8$7$F!"(BCR $B$r:o=|$9$k=hM}$r6/2=$7$?!#(B $B4X?t(B x-pgp-sig-delcr $B$r?7@_!#(B ($B1|(B)$B!&(BMew 1.85 $B$G$N(B mew-cs-spool $B$NGQ;_$KH<$J$$!$(Bx-pgp-sig-*noconv* $B$r;H$&$3$H$K$7$?!#(B ($B;3(B)$B!&(BXEmacs $B$G$O(B x-pgp-sig-*noconv* $B$K(B (get-coding-system nil) $B$N(B $BLa$jCM$r%G%U%)%k%H$G@_Dj$9$k$h$&$K$7$?!#(B ($B;3(B)$B!&(Bx-pgp-sig-set-signer $B$r%3%^%s%I$H$7$Fl9g$O!"$9$G$K(B passphrase $B$,@_Dj$5$l$F$$$k>l9g$G$bF~NO$rB%$9$h$&$K$7$?!#(B v1.2.6-b1 97.06.06 ($B1|(B)$B!&(BMew 1.77 $B0J>e$K$bBP1~$7$?!#(B ($B1|(B)$B!&(BMIME $B2r@O$,M-8z$K$J$C$F$k;~$K%+!<%=%k$,%X%C%@ItJ,$K$J$$>l9g(B $B$r9MN8$7$?!#7h$7$F(B message/rfc822 $B$J%Q!<%H$K$"$k%X%C%@$K$"$k(B $B%U%#!<%k%I$,$9$k$H$-$N%F%-%9%H$N9TKv%3!<%I$r(B CRLF $B$K$9$k$+(B LF $B$K$9$k$+$r;6!98!F$$7$?$,!"7k6I(B INN $B$N(B signcontrol $B$H$N8_49@-(B $B$r=E;k$7$F=>MhDL$j(B LF $B$@$1$G9T$J$&$3$H$K$7$?!#(B ($B;3(B)$B!&0lIt$N%W%i%C%H%U%)!<%`$GF0:n$,IT0BDj$@$C$?$N$G!"(BPGP $B%3%^%s%I(B $B$N8F$S=P$7$K(B start-process $B$r;H$&$N$r$d$a$F!"(Bcall-process $B$K(B $BE}0l$7$?!#(B v1.2.4 97.04.23 ($B;3(B)$B!&JQ?t(B x-pgp-sig-add-signature-judging-function $B$N%G%U%)%k%H$r(B nil $B$+$i(B 'x-pgp-sig-add-signature-y-or-n-p $B$KJQ99$7$?!#(B ($B;3(B)$B!&(BMew $B$G$NAw?.MQ$K%X%C%@(B/$B%\%G%#$N%(%s%3!<%IMQ4X?t$r?7@_$7$?!#(B $B=pL>$9$kD>A0$K(B mew-send-hook $B$GI>2A$5$;$F;H$&!#(B ($B;3(B)$B!&;T@n$5$s(B $B$N$4;XE&$K$h$j(B (setq-default case-fold-search nil) $B$J$I$,(B ~/.emacs $B$K$"$k>l(B $B9g$K(B search $B$K<:GT$9$kLdBj$r2sHr$7$?!#(B ($B1|(B)$B!&(BPGP $B%3%^%s%I$r8F$V$H$-$N(B process-connection-type $B$r(B nil $B$K94(B $BB+$7$?!#(B ($B1|(B)$B!&(BPGP $B%3%^%s%I$,JV$9%F%-%9%H$N2~9T%3!<%I$,(B CRLF $B$@$C$?>l9g$KHw(B $B$($F(B CR $B$r:o=|$9$k$h$&$K$7$?!#(B ($B;3(B)$B!&F#1:$5$s(B $B$N$4;XE&$K$h$j(B Mule-2.3@19.28 $B$G(B re-search $B$,CY$$LdBj$KBP=h$9$k$?$a!"@55,I=8=$r4JN,2=$7$?!#(B ($B;3(B)$B!&;3K\$5$s(B $B$N$4;XE&$K$h$j(B x-pgp-sig-adjust-sign-fields-alist $B$G;XDj$7$?=pL>$NBP>]$+$i:o(B $B=|$9$Y$-%U%#!<%k%I$,!"(Bx-pgp-sig-sign-fields $B$N@hF,$N$b$N$K8B$C(B $B$F:o=|$5$l$J$$%P%0$r=$@5$7$?!#(B($B4X?t(B delete $B$N;H$$J}$r=$@5(B) v1.2.3 97.04.15 ($B1|(B)$B!&(BMew $B$G;H$&$?$a$N@_Dj$r!"JQ?t(B x-pgp-sig-verify-method-alist $B$K(B $BDI2C$7$?!#(B ($B1|(B)$B!&@8$N(B article $B$r%U%!%$%k$+$iFI$_=P$9$?$a$N4X?t(B x-pgp-sig-mew-get-article $B$r?7@_$7$?!#(B ($B;3(B)$B!&(Btm ML $B$N%5!<%P$,(B Date $B$N=q$-49$($r9T$J$o$J$/$J$C$?$N$G!"%G%U%)(B $B%k%HCM$r(B nil $B$K$7$?!#(B ($B;3(B)$B!&1|@>$5$s(B $B$K3+H/$K;22C$7$FD:$-!"(B Mew $B$N%5%]!<%H$r3+;O$7$?!#(B v1.2.2 97.04.08 ($B;3(B)$B!&(BMailcrypt $B%Q%C%1!<%8$N(B load $BJ}K!$r=$@5$7$?!#(B ($B;3(B)$B!&JQ?t(B x-pgp-sig-{good,bad}-signature-regexp $B$N%G%U%)%k%HCM$r(B $B=$@5$7$?!#(B v1.2.1 97.03.19 ($B;3(B)$B!&(BXEmacs 20.x (20.1b8$B0J9_(B) $B$KBP1~$7$?!#(B v1.2 97.01.27 ($B;3(B)$B!&F;2<$5$s(B $B$N$4;XE&$K$h$j!"(Bpgp $B$N0z?t$K(B $B2?;~$G$b(B "+verbose=1" $B$,4^$^$l$k$h$&$K$7$?!#(B ($B;3(B)$B!&;}$C$F$$$J$$(B pub $B%-!<$r(B http $B$G(B fetch $B$G$-$k$h$&$K$7$?!#(B Mailcrypt $B%Q%C%1!<%8$,I,MW$@$,!"L5$/$F$b%(%i!<$K$O$7$J$$!#(B mc-pgp.el $B$NJQ?t(B mc-pgp-always-fetch $B$r;2>H!#(B ($B;3(B)$B!&JQ?t(B x-pgp-sig-bad-signature-regexp $B$N%G%U%)%k%HCM$rJQ99$7!"(B $BJQ?t(B x-pgp-sig-expected-re $B$r?7@_!#(B v1.1 97.01.10 ($B;3(B)$B!&2~9T$,L5$$D9$$(B X-PGP-Sig field $B$G$b(B verify $B2DG=$K$7$?!#(B ($B;3(B)$B!&(BMETHOD.ja $B$N>.=$@5!#(B v1.0 96.11.12 x-pgp-sig-el-1.3.5.1.orig/METHOD.ja0100644000175000017610000003553206476501267015631 0ustar kitamedebianX-PGP-Sig $B%U%#!<%k%I$K$h$k=pL>$HG'>Z!#(B $B;32,(B $B9nH~(B $B1|@>F#OB(B $B>.4X5HB'(B $B>.LnJ8K-(B $BCfB<=(OB(B X-PGP-Sig $B%U%#!<%k%I$K$D$$$F4JC1$K@bL@$7$^$9!#(B $B$3$l$O%M%C%H%K%e!<%9$G%K%e!<%9%0%k!<%W$N?7@_$dGQ;_$K;H$o$l$k%3%s%H%m!<(B $B%k%a%C%;!<%8$,!"?.Mj$G$-$k4IM}?M$+$iH/?.$5$l$?$3$H$r8!>Z$9$k$?$a$K%a%C(B $B%;!<%8%X%C%@$KE:IU$5$l$k(B PGP $B$K$h$k=pL>$G!"(Bcomp, misc, news, rec, sci, soc $B$J$I$r4IM}$7$F$$$k(B David C Lawrence $B;a(B $B$K$h$C(B $B$F;O$a$i$l$^$7$?!#(B $BDL>o(B PGP $B$N=pL>$O%a%C%;!<%8%\%G%#$@$1$rBP>]$H$7$F%\%G%#$N:G8e$KIU2C(B $B$7$^$9$,!"$3$l$O%X%C%@$N0lIt$b4^$a$F=pL>$7$?7k2L$r%X%C%@$KE:IU$9$k$b(B $B$N$G$9!#(B $B@5$7$$=pL>$,IU2C$5$l$F$$$k%3%s%H%m!<%k%a%C%;!<%8$@$1$rl9g$@(B $B$1<+F0E*$K%K%e!<%9%0%k!<%W$N?7@_$dGQ;_$r$NL5$$%a%C%;!<(B $B%8$OL58z$G$"$j!"$^$?H/?.>N$7$?%3%s%H%m!<%k%a%C%;!<%8$N:n@.$O$[(B $B$H$s$IIT2DG=$G$9!#(B $BFC$K4IM}(B $B=pL>$O%a%C%;!<%8%\%G%#$NA4It$K2C$($F%a%C%;!<%8%X%C%@$NFCDj$N%U%#!<%k(B $B%I$b4^$a$F9T$J$&$N$G!"$I$N%X%C%@%U%#!<%k%I$r=pL>$NBP>]$H$9$k$+$rNc$((B $B$P.J8;z$N6hJL!"$*$h$S=g=x$O0UL#$r;}$A$^$9$N$GCm0U$7$F2<$5$$!#(B (SIGNFIELDS $B$H$$$&JQ?tL>$O0J8e$N@bL@$N$?$a$K2>$KDj5A$7$?$b$N$G$9!#(B) $B%a%C%;!<%8$X$N=pL>$OAw?.D>A0$K9T$J$&$3$H$,K>$^$7$/!"86B'$H$7$F%X%C%@(B $B$N$9$Y$F$N%U%#!<%k%I$,:n@.$5$l$F$$$F!"%\%G%#$NF|K\8l$J$I$O%M%C%H%o!<(B $B%/%3!<%I$X$NJQ49$,:Q$s$G$$$k$3$H$,I,MW$G$9!#(B $B0J2<$N(B MSG#1 $B$N$h$&$J%a%C%;!<%8$r$3$l$+$iAw?.$7$h$&$H$9$k>l9g$K$O!"(B ======= MSG#1 ======================================================== From: news@local.domain.name (Usenet News System) Newsgroups: local.x-pgp-sig.test.ctl Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Approved: news@local.domain.name Message-Id: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT Distribution: local --text follows this line-- For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B ====================================================================== $B$N%a%C%;!<%8$H$7$F(B MSG#2a $B$r:n$j$^$9!#$3$N;~!"(B $B9TKv$r(B LF(0x0a) $B$@$1$K$9$kI,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B RFC2015 $B$G$O(B CR+LF (0x0d+0x0a) $B$K@55,2=$9$k$3$H$rMW5a$7$F$$$^$9$,!"(B $B$3$l$KH?$7$F(B INN $B$N(B signcontrol $B$G$O(B LF $B$@$1$K$7$F$$$k$N$G!"@5$7$$(B $BG'>Z7k2L$rF@$k$?$a$KI,MW$G$9!#(B ======= MSG#2a ======================================================= X-Signed-Headers: Subject,Control,Message-ID,Date,From,Sender Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Message-ID: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT From: news@local.domain.name (Usenet News System) Sender: For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B ====================================================================== $B:G=i$K8=$l$?(B X-Signed-Headers $B$H$$$&%U%#!<%k%I$O!"85$N(B MSG#1 $B$N%a%C(B $B%;!<%8%X%C%@$N$I$N%U%#!<%k%I$,=pL>$NBP>]$K$J$C$F$$$k$+$r@k8@$9$k$?$a(B $B$N$b$N$G!"A0=R$N(B SIGNFIELDS $B$NFbMF$r(B comma $B$G6h@Z$C$F5-=R$7$?$b$N$G(B $B$9!#$=$N2<$K$O(B SIGNFIELDS $B$NFbMF$H=g=x$K=>$C$F(B MSG#1 $B$+$iCj=P$5$l$?(B $B%U%#!<%k%I$,Ns5s$5$l$F$$$^$9!#(B $B$3$3$G(B Message-ID $B$H$$$&%U%#!<%k%IL>$KCeL\$7$F2<$5$$!#85$N(B MSG#1 $B$G(B $B$O:G8e$N(B `d' $B$O>.J8;z$G$7$?$,!"$3$N(B MSG#2a $B$G$O@k8@$NFbMF$HF10l$NBg(B $BJ8;z$KCV$-49$($i$l$F$$$^$9!#$3$l$K8B$i$:!"85$N(B MSG#1 $B$+$i%U%#!<%k%I$r(B $BCj=P$9$k$H$-$OBgJ8;z$H>.J8;z$r6hJL$;$:$KC5$7=P$7!"(BMSG#2a $B$r@8@.$9$k(B $B$H$-$K(B SIGNFIELDS $B$GDj5A$5$l$F$$$k%U%#!<%k%IL>$r4'$9$k$N$,7h$^$j$G$9!#(B $B$^$?!"(BSIGNFIELDS $B$GDj5A$5$l$F$$$k%U%#!<%k%I$,85$N%a%C%;!<%8$KB8:_$7$J$$(B $B>l9g!"(BMSG#2a $B$NNc$G$O$=$N%U%#!<%k%IL>$N8e$K(B `: ' (colon+space) $B$rCV(B $B$$$?6u$N%U%#!<%k%I$rA^F~$7$F$$$^$9$,!"0J2<$N(B MSG#2b $B$N$h$&$K=pL>$9$k(B $B%U%#!<%k%I$H$7$F@k8@$7$J$$$3$H$b2DG=$G$9!#(B ======= MSG#2b ======================================================= X-Signed-Headers: Subject,Control,Message-ID,Date,From Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Message-ID: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT From: news@local.domain.name (Usenet News System) For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B ====================================================================== $B0J>e$G=`Hw$,=*$o$C$?$N$G!"$r9T$J$$$^$9!#(B $B$9$G$K=PMh>e$,$C$?(B MSG#2a $B$,%U%!%$%k$K%;!<%V$5$l$F$$$k$b$N$H$7$F!"DL(B $B>o$N(B PGP $B%3%^%s%I$N;H$$J}$HF1MM$K(B % cat MSG#2a | pgp -fast -u 'UserID' -o MSG#3 $B$re5-$N%3%^%s%I$r Date: 14 Jul 1996 23:59:59 GMT From: news@local.domain.name (Usenet News System) Sender: For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia Charset: noconv iQBVAwUBMobEkCXmE3eKGd7hAQHKbgIAo8vSMd5m+x0bphpgOByZaOpku1XveZ2q PGhlawCv9+LX/4GqEmPW8ymmghnqk+95G15Xj8jVgMcMEWnRmDgb7A== =5MRO -----END PGP SIGNATURE----- ====================================================================== $B$=$&$7$?$i$9$k$3$H$r@k8@$7$?(B X-Signed-Headers $B%U%#!<%k%I$NFbMF$rJB$Y$F5-=R$7!"BhFs9TL\0J9_$K3F9T(B $BF,$K0l8D0J>e$N(B space $B$+(B tab $B$rCV$$$F(B PGP$B%3%^%s%I$,:n@.$7$?(B signature $B$rG[$7$^$9!#(B X-PGP-Sig: 2.6.3ia Subject,Control,Message-ID,Date,From,Sender iQBVAwUBMobEkCXmE3eKGd7hAQHKbgIAo8vSMd5m+x0bphpgOByZaOpku1XveZ2q PGhlawCv9+LX/4GqEmPW8ymmghnqk+95G15Xj8jVgMcMEWnRmDgb7A== =5MRO $B$=$7$F$3$l$r85$N%a%C%;!<%8$N%X%C%@$N$I$3$+$KA^F~$7$FAw?.$7$F2<$5$$!#(B $B0J2<$N(B MSG#4 $B$O:G=*E*$KAw?.$5$l$k%a%C%;!<%8$G$9!#(BPGP $B%3%^%s%I$G=pL>(B $B$9$k$H$-$KB8:_$7$?(B X-Signed-Headers $B%U%#!<%k%I$r!"Aw?.%a%C%;!<%8$K4^(B $B$^$;$k$3$H$O$7$^$;$s!#(B ======= MSG#4 ======================================================== From: news@local.domain.name (Usenet News System) Newsgroups: local.x-pgp-sig.test.ctl Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Approved: news@local.domain.name Message-Id: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT Distribution: local X-PGP-Sig: 2.6.3ia Subject,Control,Message-ID,Date,From,Sender iQBVAwUBMobEkCXmE3eKGd7hAQHKbgIAo8vSMd5m+x0bphpgOByZaOpku1XveZ2q PGhlawCv9+LX/4GqEmPW8ymmghnqk+95G15Xj8jVgMcMEWnRmDgb7A== =5MRO For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B ====================================================================== 2. $BG'>Z(B $BA09`$N:G8e$KAw?.$7$?%a%C%;%8(B MSG#4 $B$O!"0J2<$N(B MSG#5 $B$N$h$&$K1}!9$K$7(B $B$F%X%C%@$N3F%U%#!<%k%IL>$,(B capitalize $B$5$l$F!" X-Pgp-Sig $B$J$I(B) $B$^$?Aw?.;~$K$OL5$+$C$?%U%#!<%k%I$,DI2C$5$l$k$3$H$b$"$j$^$9$7!"3F%U%#!<(B $B%k%I$N=g=x$,F~$lBX$o$C$F$$$k$+$b$7$l$^$;$s!#(B ======= MSG#5 ======================================================== Path: site3!site2!site1!site0!news From: news@local.domain.name (Usenet News System) Newsgroups: local.x-pgp-sig.test.ctl Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Approved: news@local.domain.name Message-Id: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT Distribution: local X-Pgp-Sig: 2.6.3ia Subject,Control,Message-ID,Date,From,Sender iQBVAwUBMobEkCXmE3eKGd7hAQHKbgIAo8vSMd5m+x0bphpgOByZaOpku1XveZ2q PGhlawCv9+LX/4GqEmPW8ymmghnqk+95G15Xj8jVgMcMEWnRmDgb7A== =5MRO For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B ====================================================================== $B$3$N%a%C%;!<%8$,3N$+$KH/?.Z$9(B $B$k$K$O!"Aw?.$7$?$H$-$H5U$N=g=x$G=hM}$r9T$J$$$^$9!#(B X-Pgp-Sig $B%U%#!<%k%I$r8+$k$H!"$3$N=pL>$O(B pgp $B$N(B version 2.6.3ia $B$G:n(B $B@.$5$l!"=pL>$9$k$H$-$K(B Subject,Control,Message-ID,Date,From,Sender $B$N3F%U%#!<%k%I$,$3$N=g=x$G4^$a$i$l$F$$$?$3$H$K$J$j$^$9$+$i!"$N%a%C%;!<%8$H$7$F(B MSG#6 $B$r:n$j$^$9!#(B ======= MSG#6 ======================================================== -----BEGIN PGP SIGNED MESSAGE----- X-Signed-Headers: Subject,Control,Message-ID,Date,From,Sender Subject: cmsg newgroup local.x-pgp-sig.test Control: newgroup local.x-pgp-sig.test Message-ID: <9607142359.fsf@local.domain.name> Date: 14 Jul 1996 23:59:59 GMT From: news@local.domain.name (Usenet News System) Sender: For your newsgroups file: local.x-pgp-sig.test X-PGP-Sig $B$K$h$k%f!<%6G'>Z$N%F%9%H!#(B -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia iQBVAwUBMobEkCXmE3eKGd7hAQHKbgIAo8vSMd5m+x0bphpgOByZaOpku1XveZ2q PGhlawCv9+LX/4GqEmPW8ymmghnqk+95G15Xj8jVgMcMEWnRmDgb7A== =5MRO -----END PGP SIGNATURE----- ====================================================================== $B$3$N(B MSG#6 $B$G$b!"=pL>$9$k$H$-$HF1MM$K3F%U%#!<%k%IL>$O(B X-PGP-Sig $B%U%#!<(B $B%k%I$G@k8@$5$l$?J8;zNs$r;H$$!"%a%C%;!<%8$K4^$^$l$F$$$J$$$b$N$O%U%#!<(B $B%k%IL>$N8e$K(B `: ' (colon+space) $B$rCV$$$?6u$N%U%#!<%k%I$rA^F~$7$F$$$^(B $B$9!#G'>Z$K$"$?$C$F$b=pL>;~$HF1MM$K!"9TKv$r(B LF(0x0a) $B$@$1$K$9$kI,MW$,(B $B$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B $B$=$7$F!"$3$l$r%U%!%$%k$K%;!<%V$7$?$J$i$P!"(B % cat MSG#6 | pgp -f $B$r(B $B!&%7%9%F%`$K$h$C$F$O(B Message-ID $B%U%#!<%k%I$r%f!<%6B&$,:n$C$FAw?.$9$k(B $B>l9g$HAw?.D>8e$K%5!<%P$,IU2C$9$k>l9g$,$"$j$^$9$,!"8el9g!"=pL>(B $B$9$k%U%#!<%k%I$K(B Message-ID $B$r4^$a$F$O$$$1$^$;$s!#$3$l$OB>$N%U%#!<(B $B%k%I$K$D$$$F$bF1MM$G!"$^$?%5!<%P$,=q$-49$($F$7$^$&%U%#!<%k%I$bBLL\(B $B$G$9!#(B $B@[:n$N(B x-pgp-sig.el $B$G$O!"=pL>$r9T$J$&;~E@$GB8:_$7$J$$%U%#!<%k%I$K(B $B$D$$$F$O!"$=$l$,=pL>BP>]$N%j%9%H$K4^$^$l$F$$$F$b=pL>$NBP>]$+$i30$7!"(B X-PGP-Sig $B%U%#!<%k%I$N0l9TL\$K$b4^$a$J$$$h$&$K$7$^$7$?!#(B $B!&F|K\8l$J$I$NHs(B ascii $BJ8;z$,%a%C%;!<%8$K4^$^$l$F$$$F!"Aw?.$7$F$+$il9g$,$"$j$^$9!#$=$l$,$I$&$7(B $B$F$bHr$1$i$l$J$$>l9g$O(B PGP $B%3%^%s%I$G=pL>$^$?$OG'>Z$9$k$H$-$@$1!"%M%C(B $B%H%o!<%/%3!<%I$KJQ49$7$F9T$J$&$3$H$,M-8z$J$i$P!"$=$l$b$d$`$rF@$J$$(B $B$H9M$($^$9!#$7$+$7$=$l$K$h$C$F!"G'>Z$G$-$J$+$C$?$j!"8m$C$F@5$7$$$H(B $B;W$o$l$kG'>Z$,9T$J$o$l$F$7$^$&>l9g$,$"$k$3$H$rN10U$7$F$*$/$Y$-$G$9!#(B x-pgp-sig.el $B$G$O:nl9g$K%3!<%IJQ(B $B49$r%G%U%)%k%H$G9T$J$C$F$$$^$9!#(B $B!&%f!<%6$,%a%C%;!<%8$rFI$_=q$-$9$k$?$a$N%D!<%k$d!"%a!<%k(B/$B%K%e!<%9%5!<(B $B%P$NF0:n;EMM$K$h$C$F$O!"Aw?.;~$K@5$7$$CM$N(B Lines $B%U%#!<%k%I(B (*) $B$,(B $B%X%C%@$KIU2C$5$l$J$+$C$?$j!"l9g$K(B Lines $B$,<($9(B $B9T?t$N%\%G%#$@$1$rBP>]$K$7$?$j!"M>7W$J6u9T$b%a%C%;!<%8%\%G%#$N0lIt(B $B$H$7$FZ$K<:GT$7$^$9$,!"(Bx-pgp-sig.el $B$G$Ol9g$O!"$=$N(B $BCM$Hl9g$OG'>Z(B $B7k2L$H9g$o$;$FJs9p$7$^$9!#(B (2) $BG'>Z$NBP>]$K$J$C$?%a%C%;!<%8%\%G%#$N:G8e$K0l$D0J>e$N6u9T$,B8:_$7(B $B$F!"$=$N%\%G%#A4BN$rBP>]$H$7$?G'>Z$K<:GT$7$?$H$-$O!"$=$l$i$N6u9T(B $B$,L5$/$J$k$^$G0l$D$:$D:o$C$F:FEYG'>Z$r;n$_$^$9!#(B $BNc$($PG'>Z7k2L$,(B "(+1/-2) Good signature..." $B$N$h$&$K$J$C$?>l9g!"%a%C(B $B%;!<%8%X%C%@$N(B Lines $B%U%#!<%k%I$NCM$,Z$K@.8y$7$?$3$H$r0UL#$7$^$9!#(B $B!&(Binews $B$G%K%e!<%95-;v$r%]%9%H$9$k>l9g$K!"(BGnus $B$J$I$,:n$C$?(B Date $B%U%#!<(B $B%k%I$,=q$-49$($i$l$k>l9g$,$"$j$^$9!#(BINN-1.4unoff4 $B$H(B INN-1.5.1 $B$G3N(B $BG'$7$^$7$?$,!"(BNNTP $B$G@\B3$7$F%]%9%H$9$l$P=q$-49$($O5/$3$j$^$;$s$G$7(B $B$?!#$b$7%]%9%H$7$?5-;v$NG'>Z$K<:GT$7$?$H$-$O!"$3$N7o$b5?$C$F$_$F2<(B $B$5$$!#(B $B!&>e5-$HF1MM$K!"Aw?.$7$?%a!<%k$,%a!<%j%s%0%j%9%H$N%5!<%P$r7PM3$7$F:F(B $BG[I[$5$l$k>l9g$J$I$K$b!"%X%C%@$NFCDj$N%U%#!<%k%I$,=q$-49$($i$l$FG'(B $B>Z$K<:GT$9$k$3$H$,$"$j$^$9!#(B $B!&(Bpgp263ia.patch $B$H$$$&%Q%C%A$rEv$F$F:n$C$?(B PGP $B$K$O!"$=$l$r:n$C$?%W(B $B%i%C%H%U%)!<%`$K$h$C$F=pL>(B/$BG'>Z;~$N%F%-%9%H$N9TKv$N07$$$,0[$J$k!"$H(B $B$$$&8=>]$,4QB,$5$l$F$$$^$9!#$7$+$78=:_$N(B x-pgp-sig.el $B$NF0:n;EMM$G(B $B$OLdBj$K$J$j$^$;$s!#(B $B!&=pL>$NBP>]$K$J$k%X%C%@%U%#!<%k%I$,J#?t$"$C$?>l9g$K!"$=$l$i$N$I$l$+(B $B0l$D$+A4It$rBP>]$H$7$F=pL>$7$?$H$7$F$b!"F1$8>r7o$GG'>Z$7$F$b$i$($k(B $B2DG=@-$,Dc$$$H;W$o$l$?$N$G!"$=$N$h$&$J%X%C%@%U%#!<%k%I$O=pL>$NBP>](B $B$+$i30$9$3$H$K$7$^$7$?!#(B(x-pgp-sig.el v1.2.8 $B$+$i(B) x-pgp-sig-el-1.3.5.1.orig/Makefile0100644000175000017610000000330306724453070015756 0ustar kitamedebianEMACS=emacs XEMACS=xemacs ADDITIONAL_LOAD_PATH= LISPDIR=/usr/local/share/emacs/site-lisp XLISPDIR=/usr/local/lib/xemacs/site-lisp SHELL=/bin/sh # Use mew-1.94b19 or earlier. EVAL_PROGS=nil # Use mew-1.94b20 or later. #EVAL_PROGS="(provide (quote use-mew-1.94b20-or-later))" all: @$(EMACS) -batch -q -no-site-file -eval $(EVAL_PROGS) -eval\ '(let ((arg "$(ADDITIONAL_LOAD_PATH),") path paths)\ (while (string-match "[\t ,:]+" arg)\ (setq path (substring arg 0 (match-beginning 0))\ arg (substring arg (match-end 0)))\ (or (zerop (length path))\ (setq paths\ (append paths\ (list (file-name-as-directory\ (expand-file-name path)))))))\ (if paths\ (progn\ (princ (concat "\nAdditional load-path:\n "\ (mapconcat (function identity) paths "\n ")\ "\n"))\ (setq load-path (append paths load-path)))))'\ -f batch-byte-compile x-pgp-sig.el install: all @echo 'Copying x-pgp-sig.el to '$(LISPDIR)'...';\ cp -p x-pgp-sig.el $(LISPDIR);\ echo 'Copying x-pgp-sig.elc to '$(LISPDIR)'...';\ cp -p x-pgp-sig.elc $(LISPDIR);\ echo Done lpath: @$(EMACS) -batch -q -no-site-file -eval\ '(mapcar\ (function (lambda (path) (princ (format "%s\n" path))))\ load-path)' x: @$(XEMACS) -batch -q -no-site-file -eval $(EVAL_PROGS)\ -f batch-byte-compile x-pgp-sig.el xinstall: x @echo 'Copying x-pgp-sig.el to '$(XLISPDIR)'...';\ cp -p x-pgp-sig.el $(XLISPDIR);\ echo 'Copying x-pgp-sig.elc to '$(XLISPDIR)'...';\ cp -p x-pgp-sig.elc $(XLISPDIR);\ echo Done xlpath: @$(XEMACS) -batch -q -no-site-file -eval\ '(mapcar\ (function (lambda (path) (princ (format "%s\n" path))))\ load-path)' clean: rm -f *.elc *~ x-pgp-sig-el-1.3.5.1.orig/README-MUABEND.ja0100644000175000017610000001750506414446236016653 0ustar kitamedebianmua-bend.el v1.8 $B.LnJ8K-(B mua-bend.el $B$O!"(BMH $B7O(B MUA (mh-e, Mew $BEy(B) $B$K$h$C$F@8@.$5$l$J$$%a%C%;!<%8(B $B%X%C%@$N%U%#!<%k%I$r!"(BPGP $B$N=pL>BP>]$H$7$?$$>l9g$KMQ$$$k%I%i%U%HA0=hM}(B $B%D!<%k$G$9!#(B $B9=B$E*$K$O!"%I%i%U%H$,(B MUA $B$N4IM}2<$rN%$l$kD>A0$K30It%W%m%;%9$r5/F0$7!"(B $BM_$7$$%U%#!<%k%I$rJdE6$9$k$H$$$&=hM}BP>](B | "PGP $B=pL>(B" +-----+ $B"*(B | $B@8@.$7$?(B | $B"*(B |$B%U%#!<%k%I(B | $B"*(B & /___\ | $B%I%i%U%H(B | $B",(B | $BJdE68e$N(B | "really sent" |___________| $B!C(B | $B%I%i%U%H(B | $B!C(B |___________| $B30It%W%m%;%95/F0(B ( impost, imput, etc. ) ---------------------------------------------------------------------- 1. $B=`Hw(B $BA0=R$N30It%W%m%;%9$KAjEv$9$k%f!<%F%#%j%F%#$rMQ0U$7!"E,59%$%s%9%H!<%k(B $B$7$F$*$-$^$9!#9M$($i$l$k%f!<%F%#%j%F%$$H$7$F$O!">e5-(B impost $B$NB>$K!"(B IM $B%Q%C%1!<%8Cf$K4^$^$l$k%$%s%?!<%M%C%H%a%C%;!<%8H/?.MQ(B Perl $B%9%/%j%W%H(B imput ( ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/im-current.tar.gz ) $BEy$,(B $B5s$2$i$l$k$G$7$g$&!#$J$*!"(Bmua-bend.el $B$r(B Emacs $B5/F0;~$KFI$_9~$^$l$k(B load-path $BCf$N%G%#%l%/%H%j$K%3%T!<(B ( $B!\%P%$%H%3%s%Q%$%k(B ) $B$7$F$*$/$3$H$O(B $B8@$&$^$G$b$"$j$^$;$s!#(B ---------------------------------------------------------------------- 2. $B@_Dj(B ~/.emacs $BEy$K0J2<$N5-=R$rDI2C$7$F2<$5$$!#(B (require 'mua-bend) ;; mua-bend.el $B$N%m!<%I(B ;; $B%I%i%U%HAw?.D>A0$NA0=hM}(B (add-hook 'mh-before-send-letter-hook ;; For MH-E '(lambda () ;; PGP $B=pL>BP>]%U%#!<%k%IJdE6(B (mua-bend-fix-message-fields) (x-pgp-sig-sign)) t) (add-hook 'mew-send-hook ;; For Mew '(lambda () (x-pgp-sig-mew-encode-message) (mua-bend-fix-message-fields) (x-pgp-sig-sign) ;; character set $B$r%I%i%U%HA0=hM}3+;OD>A0$N$b$N$KLa$9(B (mua-bend-normalize-message-draft)) t) $B>e$N5-=R$G$4M}2r$$$?$@$1$k$h$&$K!"(BPGP $B=pL>BP>]%U%#!<%k%I$NJdE6$O!"2DG=$J(B $B8B$j(B PGP $B$K$h$k=pL>$,9T$o$l$kD>A0$K9T$&$Y$-$G$9!#=>$C$F!"(BPGP $B$N=pL>$r(B x-pgp-sig $B%Q%C%1!<%8$rMQ$$$F9T$&$3$H$rA0Ds>r7o$H$9$l$P!"0J2<$N$h$&$K(B x-pgp-sig $B%Q%C%1!<%8$GMQ0U$5$l$?(B hook $B$rMQ$$$F%I%i%U%HA0=hM}$rDj5A$9$k(B $B$3$H$b2DG=$G$9!#(B (add-hook 'x-pgp-sig-prepare-sign-hook 'mua-bend-fix-message-fields) (add-hook 'x-pgp-sig-post-sign-hook 'mua-bend-normalize-message-draft) ---------------------------------------------------------------------- 3. $B%*%W%7%g%s(B $B0J2<$O!"%f!<%6!<$,@_Dj$G$-$k%*%W%7%g%sJQ?t$N@bL@$G$9!#3FJQ?t$KBP$9$k(B setq $B<0$N1&JUCM$,$=$NJQ?t$N%G%U%)%k%HCM$r<($7$^$9!#(B (setq mua-bend-folder-directory (substitute-in-file-name "$HOME/Mail/")) ; $B8D?M$N%a!<%k%U%)%k%@72$NB8:_$9$k%H%C%W%G%#%l%/%H%j$G$9!#(B (setq mua-bend-system-directory mua-bend-folder-directory) ; impost $B$N(B JustQueuing $B%b!<%I$G0l;~E*$K@8@.$5$l$k%-%e!<%$%s%0%a%C%;!<%8$N(B ; $B%U%)%k%@!"%m%0=PNO$N%G%#%l%/%H%jEy$N%7%9%F%`%G%#%l%/%H%j$N%H%C%W%G%#%l%/%H(B ; $B%j$G$9!#8e=R$N(B mua-bend-process $B$H$7$F!"A0=R$N(B impost $BMxMQ$rA0Ds(B ; ($B%G%U%)%k%H(B)$B$H$9$k>l9g$O(B mua-bend-folder-directory $B$HF1$80LCV$r!"Be$o$j$K(B ; $BF1$8$/A0=R$N(B imput $B$rMQ$$$k>l9g$O!"(B$HOME/.im/ $BEy$r$=$l$>$l;XDj$9$k$N$,0lHL(B ; $BE*$H$J$k$G$7$g$&!#(B (setq mua-bend-queueing-directory "queue") ; $BA0=R$N%-%e!<%$%s%0%a%C%;!<%8%U%)%k%@$N%G%#%l%/%H%jL>$G$9!#(B (setq mua-bend-trash-folder ".trash") ; $B0l;~%U%!%$%k3JG$G!"(Bmua-bend-folder-directory $B$N2<$K@8@.$5$l$^(B ; $B$9!#3:Ev%U%)%k%@$O%G%#%l%/%H%j$b$7$/$O%U%!%$%k$H$J$j$^$9$,!"$3$l$O8e=R$N(B ; mua-bend-process $B$N0l;~%U%!%$%k:n@.=hM}$N7A<0$K0MB8$7$^$9!#(B (setq mua-bend-local-domain (or (getenv "FROMDOMAIN") (getenv "MSGIDDOMAIN") (getenv "DOMAINNAME") "sa.osk.sumikin.co.jp") ; $B<+J,$N=jB0$9$k%I%a%$%sL>$G$9!#>e5-$NDL$j!"%G%U%)%k%H$N@_Dj$G$O%3%^%s%I%7%'(B ; $B%k$N4D6-JQ?t$,(B $FROMDOMAIN, $MSGIDDOMAIN, $DOMAINNAME $B$N=g$K;2>H$5$l$^$9!#(B ; $B=>$C$F!"@_Dj$NJQ99$OK\JQ?t$NCM$ND>@\E*$JJQ99$K$h$k$h$j$O!"6KNO>e5-4D6-JQ?t(B ; $B$NCMJQ99$K$h$j9T$&J}$,K>$^$7$$$G$7$g$&!#(B (setq mua-bend-subject-field "No title in original.") ; $B%I%i%U%H$N(B Subject $B%U%#!<%k%I$,6u$N>l9g$KJdE6$9$k%5%V%8%'%/%HL>$G$9!#(B (setq mua-bend-process "/usr/local/lib/im/impost.pl") ; mua-bend.el $B$+$i5/F0$5$l$k30It%W%m%;%9$N%U%k%Q%9L>$G$9!#(B (setq mua-bend-proc-option-list (list "-nodraftfolder" "-noverbose" "-nopush" "-FccFile" "-Fcc" mua-bend-trash-folder "-JustQueuing" "-QueueDir" mua-bend-queuing-directory "-FromDomain" mua-bend-local-domain "-Subj" mua-bend-subject-field "-IgnoreHeader" "-Date" "-MsgId" "-PidMsgId" "-noShowRcpts" "-noNScmpl" "-noPartial" "-noHistory")) ; $BA0=R$N(B mua-bend-process $B$KEO$5$l$k%*%W%7%g%s0z?t$N%j%9%H$G$9!#3FMWAG$O(B ; $B2A$5$l$k$?$a!"MWAG$N7?$H$7$F$OJ8;zNs$=$N$b$N!"$b$7$/$OJV$jCM$H$7(B ; $B$FJ8;zNs$rJV$9(B Lisp $BI>2A<0$N$$$:$l$+$H$J$j$^$9!#(B (setq mua-bend-replacing-fields-alist (list '("^From .*\n" . "") '("^Message-Id:" . "Message-ID:") '("^X-Dispatcher:.*\n" . "") '("^Lines:.*\n" . mail-header-separator))) ; $BA0=R$N(B mua-bend-process $B$K$h$k30It%W%m%;%9$N=hM}$N=*N;D>8e$K!"@53N$K$3$N%j(B ; $B%9%H$NMWAG=P8==g$K%I%i%U%H!&%P%C%U%!$N@hF,$+$i%5!<%A$5$l$FJQ49=hM}$5$l$k$Y(B ; $B$-%U%#!<%k%I$NO"A[%j%9%H$G$9!#%j%9%HFb3FMWAG$O(B "($BJQ49$5$l$k$Y$-%U%#!<%k%I$r(B ; $B<($9@55,I=8=(B . $BJQ498e$NJ8;zNs(B or $BJQ498e$NJ8;zNs$rJV$9(B Lisp $BI>2A<0(B)" $B$N%U%)(B ; $B!<%^%C%H$r7A@.$7$^$9!#(B (setq mua-bend-preserve-bcc t) ; nil $B0J30$NCM$,@_Dj$5$l$?>l9g!"A0=R$N(B mua-bend-process $B$K$h$k30It%W%m%;%9$N(B ; $B=hM}Cf$K(B BCC $B%U%#!<%k%I$,:o$i$l$k$3$H$N$J$$$h$&$K!"30It%W%m%;%9$N=hM}$N4V$@(B ; $B$1(B BCC $B%U%#!<%k%I$r%I%i%U%H!&%P%C%U%!$+$i0l;~E*$KB`Hr$5$;$^$9!#(B (setq mua-bend-preserve-dcc nil) ; nil $B0J30$NCM$,@_Dj$5$l$?>l9g!"A0=R$N(B mua-bend-process $B$K$h$k30It%W%m%;%9$N(B ; $B=hM}Cf$K(B DCC $B%U%#!<%k%I$,:o$i$l$k$3$H$N$J$$$h$&$K!"30It%W%m%;%9$N=hM}$N4V$@(B ; $B$1(B DCC $B%U%#!<%k%I$r%I%i%U%H!&%P%C%U%!$+$i0l;~E*$KB`Hr$5$;$^$9!#(B (setq mua-bend-complete-hook nil) ; $BK\(B mua-bend $B$K$*$1$k=hM}$N=*N;D>8e$KI>2A$5$l$k(B hook $B$G$9!#;29M$^$G$K!"I.e(B x-pgp-sig-el-1.3.5.1.orig/README-Makefile.ja0100644000175000017610000000671406721236662017316 0ustar kitamedebianx-pgp-sig.el v1.3 Makefile $B $B1?$,NI$1$l$P(B ($B$D$^$j$"$J$?$N4D6-$,:nl9g$OD|$a$F(B 00README.ja $B$K=q$+$l$F$$$kJ}K!$r;H$&$+!"(B $B$^$?$O(B Makefile $B$r$4<+J,$G2~NI$7$F2<$5$$!#(B ($B$=$7$FAw$C$F$$$?$@$1$k$H4r$7$$$J!"$H!#(B:-) XEmacs ====== % make xinstall XEmacs $B$N$,%G%U%)%k%H$N(B xemacs $B$G$O$J$$>l9g$O!"(B % make xinstall XEMACS=xemacs-21.2 $B$N$h$&$K;XDj$9$k$3$H$,$G$-$^$9!#(B $B%$%s%9%H!<%k@h$N%G%#%l%/%H%j$r;XDj$9$k$H$-$O(B % make xinstall XLISPDIR=/usr/local/lib/xemacs/site-lisp $B$J$I$H;XDj$7$F2<$5$$!#$3$3$K=q$+$l$F$$$k$N$,%G%U%)%k%HCM$G$9!#(B Emacs 20.x ========== Semi-gnus $B$^$?$O(B VM $B$r$*;H$$$N>l9g$K$O!"$^$:(B % make lpath $B$G!"(BSemi-gnus $B$H(B FLIM $B$^$?$O(B VM $B$,%$%s%9%H!<%k$5$l$F$$$k%G%#%l%/%H%j(B $B$,(B load-path $B$K4^$^$l$F$$$k$+$I$&$+$r3NG'$7$F2<$5$$!#4^$^$l$F$$$?$i(B % make install $B$G(B OK $B$G$9!#(B Emacs $B$N$K%G%U%)%k%H$N(B emacs $B0J30$N$b$N$r;H$&$K$O(B % make install EMACS=emacs-20.4 $B$N$h$&$K;XDj$7$F2<$5$$!#(B $B%$%s%9%H!<%k@h$N%G%#%l%/%H%j$r;XDj$9$k$H$-$O(B % make install LISPDIR=/usr/local/share/emacs/site-lisp $B$J$I$H;XDj$7$F2<$5$$!#$3$3$K=q$+$l$F$$$k$N$,%G%U%)%k%HCM$G$9!#(B $B$b$7(B Semi-gnus $B$^$?$O(B VM $B$,%$%s%9%H!<%k$5$l$F$$$k%G%#%l%/%H%j$,(B load-path $B$K4^$^$l$F$$$J$$>l9g$O(B % make install ADDITIONAL_LOAD_PATH=/usr/local/share/emacs/site-lisp/vm $B$J$I$H;XDj$7$J$1$l$P$J$j$^$;$s!#(B"," $B$d(B ":" $B$G6h@Z$C$FJ#?t$N(B path $B$r(B $B;XDj$9$k$3$H$b$G$-$^$9!#$b$C$H$b!"(Bsubdir.el $B$GI,MW$J(B path $B$r@_Dj$G$-(B $B$k$J$i!"$=$A$i$G$"$i$+$8$a@_Dj$7$F$*$/$3$H$r$*4+$a$7$^$9!#(B Mule 2.3 ======== $B4pK\E*$J$d$j$+$?$O(B Emacs 20.x $B$N>l9g$HF1$8$G$9!#(B $B$?$@$7!"$b$7(B Mule 2.3 based on Emacs 19.34 $B$r$*;H$$$G!"$=$l$KIUB0$7(B $B$F$$$k$b$N$h$j$b?7$7$$(B CUSTOM $B%Q%C%1!<%8$rJ;MQ$7$F$$$k>l9g$O!"0J2<$N(B $B$h$&$K(B CUSTOM $B$,%$%s%9%H!<%k$5$l$F$$$k%G%#%l%/%H%j$r;XDj$9$k$3$H$r$*(B $B4+$a$7$^$9!#(B($B;XDj$7$J$$>l9g!"(BM-x customize-variable $B$J$I$,$G$-$^$;$s(B) % make install EMACS=mule LISPDIR=/usr/local/share/mule/site-lisp \ ADDITIONAL_LOAD_PATH=/usr/local/share/mule/site-lisp/custom Semi-gnus $B$^$?$O(B VM $B$r;H$&>l9g$O!"l9g$OF#OB(B $B;32,9nH~(B $B>.4X5HB'(B $B>.LnJ8K-(B $BCfB<=(OB(B v1.2.3 $B$+$i(B Mew $B$N%5%]!<%H$r3+;O$7$F$$$^$9!#(BMew $B$N%P!<%8%g%s$O(B 1.69 $B0J>e$,BP>]$G$9!#(B(1.69 $BL$K~$OL$3NG'(B) $BLdBj$,$"$j$^$7$?$i%j%]!<%H$7$F2<$5$$!#(B($B$G$-$l$P%Q%C%A$r$*Aw$j2<$5$k(B $B$H=u$+$j$^$9!#$=$N$H$-$+$i$"$J$?$b(B x-pgp-sig $B$N:nl9g$N$_!K(B 1.89 $B$h$j8E$$%P!<%8%g%s$N(B Mew $B$G%X%C%@$NF|K\8l$J$I$r(B MIME $B%(%s%3!<%I(B $B$9$k$?$a$K$O(B tm $B$^$?$O(B SEMI $B$N%Q%C%1!<%8$+!"(BtoMime $B%3%^%s%I$r%$%s%9(B $B%H!<%k$9$kI,MW$,$"$j$^$9!#%X%C%@$NF|K\8l$J$I$r(B MIME $B%(%s%3!<%I$7$J$$(B $B$N$G$"$l$PITMW$G$9!#$=$l$>$l$N$"$j$+$Oe5-0J30$KI,(B $BMW$J$b$N$,$"$j$^$9$N$GCm0U$7$F2<$5$$!#(B ---------------------------------------------------------------------- Mew-2. Customize 1.89 $B$h$j8E$$%P!<%8%g%s$N(B Mew $B$K$O%X%C%@$NF|K\8l$J$I$r(B MIME $B%(%s%3!<(B $B%I$9$k;E3]$,$"$j$^$;$s!#$^$?!"!J:G?7$N(B 1.93b8 $B$K$*$$$F$b!K%\%G%#$NF|(B $BK\8l$J$I$b(B x-pgp-sig $B$N=pL>(B $B$r9T$J$&;~E@$G$O!"%M%C%H%o!<%/%3!<%I$KJQ(B $B49$5$l$F$$$^$;$s!#(B $BDL>o$3$l$i$N=hM}$O%a%C%;!<%8$,(B Emacsen $B$+$iN%$l$F(B MH $B$N(B send $B%3%^%s(B $B%I$J$I$KEO$5$l$?8e$+EO$5$l$k$H$-$K9T$J$o$l$^$9$,!"=pL>$O$5$i$K$=$N8e(B $B$G9T$J$o$J$1$l$P$J$j$^$;$s!#$7$+$78=l9g$K$O=pL>(B $B$9$kA0$K$9$Y$F$NJQ49$r9T$J$C$F$7$^$&$3$H$K$7$^$9!#(B $B$^$?(B Mew 1.89 $B0J9_(B $B$G$b=pL>$9$kA0$K%I%i%U%H%P%C%U%!$NFbMF$r%M%C%H%o!<(B $B%/%3!<%I$KJQ49$9$kI,MW$,$"$k$N$G!"JQ49$7$F$+$i=pL>$9$k$?$a$N4X?t$H$7(B $B$F(B x-pgp-sig-mew-encode-coding-and-sign $B$rMQ0U$7$F$$$^$9!#$3$N>l9g$O(B Mew $B$N%P!<%8%g%s$,(B 1.93b4 $B$h$j8E$$$b$N$K8B$C$F(B mew-draft.el $B$KE:IU$7(B $B$?%Q%C%A(B mew-draft.el.patch $B$rEv$F$F$+$i;H$C$F2<$5$$!#(B $B0J2<$N@bL@$r$4Mw$K$J$C$F!"$"$J$?$N(B .emacs $B$KI,MW$J5-=R$r=q$-2C$($F2<(B $B$5$$!#(B $B$J$*Aw?.$NA`:n$O(B info $B$G?d>)$5$l$F$$$k$h$&$K(B C-c C-m C-c C-c $B$G9T$J$C(B $B$F2<$5$$!#(B(Mew 1.89 $B0J9_$G$O(B C-c C-c $B$@$1$G(B OK $B$G$9!#(B) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 1.89 $B0J9_$N(B Mew $B$r;H$&>l9g!#(B ;;; -- 1.93b4 $BL$K~(B $B$G$O(B mew-draft.el $B$K%Q%C%A(B mew-draft.el.patch $B$r(B ;;; $BEv$F$F$+$i;H$C$F2<$5$$!J$=$l0J9_$G$O%Q%C%A$,Ev$?$C$F$$$^$9!K!#(B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'mew-real-send-hook 'x-pgp-sig-mew-encode-coding-and-sign t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 1.89 $B$h$j8E$$%P!<%8%g%s$N(B Mew $B$r;H$&>l9g(B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'mew-send-hook 'x-pgp-sig-mew-encode-message t) (add-hook 'mew-send-hook 'x-pgp-sig-sign t) ; x-pgp-sig-mew-encode-message $B$O=pL>$r9T$J$&D>A0$K%a%C%;!<%8$r%M%C%H%o!<(B ; $B%/%3!<%I$KJQ49$9$k$?$a$N4X?t$G$9!#(B ; HOOK $B$N0lHV:G8e$K(B x-pgp-sig-mew-encode-message, x-pgp-sig-sign $B$N=g$K(B ; $BI>2A$5$l$k$h$&$K$9$k$?$a$K!"(B.emacs $B$N:G8e$NJ}$K=q$-F~$l$F2<$5$$!#(B ; (setq x-pgp-sig-toMime-program "toMime") ; $B8e=R$N(B x-pgp-sig-mew-encode-message-header-function $B$K(B ; 'x-pgp-sig-mew-encode-message-header-with-toMime $B$r@_Dj$9$k>l9g$K!"(B ; toMime $B%3%^%s%I$N(B path $BL>$r@_Dj$7$^$9!#(Bexec-path $B0J30$N%G%#%l%/%H%j$K(B ; $BB8:_$9$k>l9g$O(B full path $BL>$r5-=R$7$F2<$5$$!#%G%U%)%k%H$O$3$l$HF1$8$G$9!#(B (setq x-pgp-sig-toMime-options nil) ; toMime $B%3%^%s%I$KM?$($k0z?t$N;XDj$G$9!#(B $BNc$($P85$NF|K\8l$K$"$C$?6uGr(B ; $B$rJ]B8$7$?$/$J$1$l$P!"(B(setq x-pgp-sig-toMime-options '("-s")) $B$H=q$$(B ; $B$F2<$5$$!#(B (setq x-pgp-sig-mew-encode-message-header-function 'x-pgp-sig-mew-encode-message-header-with-toMime) ; $B%X%C%@$NF|K\8l$J$I$r(B MIME $B%(%s%3!<%I$9$k$?$a$N4X?t$r;XDj$7$^$9!#(B ; Mew 1.89 $B0J9_(B $B$G$OFC$K;XDj$9$kI,MW$O$"$j$^$;$s!#(B ; $B%G%U%)%k%H$O$3$l$HF1$8$G!"(BtoMime $B%3%^%s%I$r;H$&$b$N$G$9!#B>$K(B tm ; $B$^$?$O(B SEMI $B$rMxMQ$9$k$?$a$N0J2<$N4X?t$rMQ0U$7$F$"$j$^$9!#(B ; ; 'x-pgp-sig-mew-encode-message-header-with-semi ; 'x-pgp-sig-mew-encode-message-header-with-tm ; ; MIME $B%(%s%3!<%I$9$kI,MW$,L5$$$J$i$P(B nil $B$K$7$F2<$5$$!#$=$N>l9g$O=pL>$r(B ; $B9T$J$&A0$K%\%G%#$HF1$8%M%C%H%o!<%/%3!<%I$KJQ49$7$^$9!#(B ---------------------------------------------------------------------- Mew-3. $B$*$^$1(B $B#1(B: $B%X%C%@$K(B DBCS $B$,F~$k$3$H$X$NBP:v!J$3$N9`(B 1.89 $BL$K~$N>l9g$N$_!K(B $B<+J,$G$O%X%C%@$KF|K\8l$J$I$N(B DBCS $B$rF~$l$J$$$H$$$&?M$G$b(B $B!V(BRe: $BF|K\8l!W(B $B$9$k$3$H$b$"$k$o$1$G$9$+$iCm0U$,I,MW$G$9!#$b$7%X%C%@$KF|K\8l$,$"$C$F!"(B x-pgp-sig $B$G=pL>$9$k;~E@$G(B $B@8(BJIS $B$@$C$?$H$7$^$7$g$&!#$=$N8e(B MH $B$d(B impost $B$J$I$N%G%#%9%Q%C%A%c$,Aw?.;~$K%(%s%3!<%I$7$F$7$^$&$H$9$k$H!"$=(B $B$N;~E@$GEE;R=pL>$,2u$l$k$3$H$K$J$j$^$9!#=>$C$F!"@8(BJIS $B%X%C%@$N$^$^=pL>(B $B$9$k0J>e$O(B MH $B$b$7$/$O(B impost $B$N%(%s%3!<%I5!G=$r@Z$C$F$*$+$J$1$l$P$J$i(B $B$J$$$H$$$&$3$H$K$J$j$^$9!#EvA3@8(BJIS $B%X%C%@$G%M%C%H%o!<%/$KN.$5$l$k$H$$(B $B$&$3$H$r0UL#$7$^$9!#(B:-p $B5U$K!"(Bx-pgp-sig $B$G$N(B *$B=pL>A0$K(B* $B%X%C%@$r%(%s%3!<%I$G$-$l$P$3$&$$$&IT6q(B $B9g$rL$A3$KKI;_$9$k$3$H$,$G$-$^$9!#0J2<$N$h$&$K$7$F$/$@$5$$!#(B: a. mh-e $B$G$O(B tm $B$^$?$O(B SEMI $B$,I,?\$H9M$($F$/$@$5$$!#(BGnus/GNUS $B$N>l9g(B $B$b$J$k$Y$/$J$i%$%s%9%H!<%k$7$F$*$/$[$&$,$$$$$G$7$g$&!#(B b. tm-Mew $B$d(B semi-Mew $B$OB8:_$7$^$;$s$,!"(BMew $B$G$b(B tm $B$^$?$O(B SEMI $B$r%$(B $B%s%9%H!<%k$J$5$k$3$H$r6/$/$*4+$a$7$^$9!#(B $B#2(B: MH $B7O(B MUA (mh-e,Mew) $B$GAw?.A0$K(B Message-Id: $B$d(B Date: $B$r$D$1$k(B tips MH $B7O(B MUA $B$G$O!"<+A0$G(B Message-ID: $B$r@8@.$7$^$;$s!#(BMH send $B$b$7$/$O(B impost $B$J$I$,IU$1$k$h$&$K$J$C$F$$$k$?$a$G$9!#$b$7(B MH send $B$r;H$C$F$$$k(B $B>l9g$K$OM=$a(B Message-ID: $B$,$D$$$F$$$k$H%(%i!<$K$J$C$FAw?.$5$l$J$/$J$j(B $B$^$9!#=>$C$F!"(Bmh-e, Mew $B$G(B Message-ID: $B$r=pL>BP>]$K$7$?$$>l9g$K$O0J2<(B $B$N$h$&$K$9$kI,MW$,$"$j$^$9!J(BDate: $B$bF1$8!K!#(B a. MH send $B$KBX$($F(B impost $B$r;H$&$3$H$,A0Ds!#(B /ftp@falcon.econ.kyoto-u.ac.jp:/pub/dist/impost/impost /ftp@falcon.econ.kyoto-u.ac.jp:/pub/dist/impost/impost.info b. $B0J2<$N%3!<%I$r(B ~/.emacs $B$N(B x-pgp-sig $B$N@_Dj$h$j(B *$BA0$K(B* $BF~$l$k!#(B ========================== Mew ========================== ;; $B$3$l$O(B x-pgp-sig $B$H$N@h8e4X78$O$I$&$G$b$h$$(B (setq mew-from "foo ") ;; From: $B$r=pL>BP>]$K$9$k$?$a(B ;; Mew $B$GAw?.A0$K(B Message-ID: $B$H(B Date: $B$rA^F~$9$k(B (add-hook 'mew-send-hook (function (lambda () (save-excursion (mew-header-insert-last "Message-ID:" (format "<%s>" (mew-create-message-id))) (mew-header-insert-last "Date:" (generate-current-time-string)) )))) ;; Mew 1.06 $B$+$i" (mh-create-message-id))) (mail-position-on-field "Date") (insert (generate-current-time-string)) )))) ;; Message-ID: $B$r@8@.$9$k(B (defun mh-create-message-id () (format "%s.%s.%s.%s@%s" (nth 0 (current-time)) (nth 1 (current-time)) (emacs-pid) (user-login-name) (system-name))) ======================= mh-e / Mew ====================== ;; Date: $B$KA^F~$5$l$kJ8;zNs$r@8@.$9$k(B (defun generate-current-time-string () ;; gnus-inews-date() "Current time string." (require 'timezone) (timezone-make-date-arpa-standard (current-time-string) (current-time-zone))) $B#3(B: Mew $B$NAw?.%a%C%;!<%8$KFH<+$N(B X-Mailer $B%U%#!<%k%I$rIU$1$k(B $BMpMQ$O$d$a$^$7$g$&(B (^^;;)$B!#(B ;; X-Mailer: Mew 1.94/Mule 2.3@19.34 - "SUETSUMUHANA" ;; X-Mailer: Mew 1.94/XEmacs 21.2(beta14) - "Dionysos" ;; X-Mailer: Mew 1.94/Emacs 20.4, MULE 4.0 - "HANANOEN" (defun _create-mew-x-mailer () (setq mew-x-mailer (let ((mew-version-number (progn (string-match "[.0-9b+-]+" mew-version) (substring mew-version (match-beginning 0) (match-end 0)))) (name (cond ((boundp 'MULE) "Mule") ((string-match "XEmacs" emacs-version) "XEmacs") (t "Emacs"))) (mule-version-number (and (boundp 'MULE) (string-match "[0-9]+\\(\\.[0-9]+\\)*" mule-version) (substring mule-version (match-beginning 0) (match-end 0)))) (version (and (string-match "[0-9]+\\(\\.[0-9]+\\)*" emacs-version) (substring emacs-version (match-beginning 0) (match-end 0)))) (betaname (and (boundp 'xemacs-betaname) xemacs-betaname)) (subname (and (not (boundp 'MULE)) (featurep 'mule) (boundp 'mule-version) (concat ", MULE " (progn (string-match "[0-9]+\\(\\.[0-9]+\\)*" mule-version) (substring mule-version (match-beginning 0) (match-end 0)))))) (codename (or (and (boundp 'xemacs-codename) xemacs-codename) (and (boundp 'mule-version) (string-match "(\\(.+\\))" mule-version) (substring mule-version (match-beginning 1) (match-end 1)))))) (format "Mew %s/%s %s%s%s%s%s" mew-version-number name (or (and mule-version-number (concat mule-version-number "@")) "") (or (and version (string-match "\\.[0-9]+\\(\\.[0-9]+\\)$" version) (substring version 0 (match-beginning 1))) version "") (or betaname "") (or subname "") (or (and codename (concat " - \"" codename "\"")) "")) ))) (add-hook 'mew-init-hook '_create-mew-x-mailer) x-pgp-sig-el-1.3.5.1.orig/README-PGP5.ja0100644000175000017610000001742706721236662016317 0ustar kitamedebianPGP 5.0i $B$N$?$a$N(B x-pgp-sig.el v1.3 $BJdB-@bL@=q(B -*-Emacs-Lisp-*- $B;32,9nH~(B $B1|@>F#OB(B $B>.4X5HB'(B $B>.LnJ8K-(B $BCfB<=(OB(B v1.3-b1 $B$+$i(B PGP 5.0i $B$X$NBP1~$r;O$a$^$7$?!#$3$l$KH<$C$F(B 2.6.3ia $B$N(B $B>l9g$G$b(B PGP $B%3%^%s%I$rHsF14|%W%m%;%9(B (start-process) $B$G;H$&$3$H$r%G(B $B%U%)%k%H$K$7$?$N$G!"4D6-$K$h$C$F$OLdBj$,@8$8$k$+$b$7$l$^$;$s!#(B v1.2.4 $B$^$G$OHsF14|%W%m%;%9$K$7$F$$$?$N$G$9$,!"(BMule 2.3 $B$GAw?.$9$k%a%C(B $B%;!<%8$K!"$H$-$I$-=pL>$,IU2C$5$l$J$$$J$I$N%j%]!<%H$rD:$$$F$$$^$7$?!#(B $B$b$C$H$b!"$3$l$OC1$K%3!<%I$N=q$-J}$,0-$+$C$?$;$$$+$b$7$l$J$$$N$G!":F(B $B$SPY>e$K:\$;$FC!$+$l$F$_$k$3$H$K$7$^$7$?!#F($2$NR2p$7$?%"!<%+%$%V$G$OBP:v$,9T$J$o$l$F$$$^$9!#(B $B$=$3$G0J2<$N$h$&$J2~B$$,I,MW$G$9!#(B (1) pgp50i/src/lib/pgp/utils/pgpFileType.c 174 $B9TL\$N(B "$B#I#L#L#E#G#A#L(B" $B$r(B "$B#l#e#g#a#l(B" $B$K=q$-49$($k!#(B $B!v(B $B#2#7(B $B#E#C(B $B#e#s#c#a#p#e(B ($B#e#s#c(B) $B#l#e#g#a#l(B $B!1!1!1!1!1(B (2) pgp50i/src/lib/pgp/utils/pgpFileType.c 202 $B9TL\$N:G8eHx$K(B "$B!u!u(B $B#c(B $B!*!a(B $B#2#7(B" $B$rDI2C$9$k!#(B ...$B!C!C(B $B#c(B $B!d(B $B!l!o#r!l(B) $B!u!u(B $B#c(B $B!*!a(B $B#2#6(B $B!u!u(B $B#c(B $B!*!a(B $B#2#7(B) $B!1!1!1!1!1!1!1!1!1(B (3) pgp50i/src/lib/pgp/keydb/pgpPrefUnix.c 186 $B9TL\$N(B "$B!'(B" $B$r(B "$B!((B" $B$K=q$-49$($k!#(B $B#f#c#l#o#s#e(B($B#i#n#f(B)$B!((B $B!1(B -------------------------------------------------------------- PGP $B$NJQ99$dG[I[$J$I$Nl9g$K@5>o$KF0:n$7$^$9$+(B? x-pgp-sig.el $B$r5?$&A0$K!"$^$:$=$A$i$r3NG'$7$F2<$5$$$M!#(B:-) ---------------------------------------------------------------------- 2. Passphrase $B$NF~NO(B PGP $B$r;H$&$H$-$K:G$bL5KIHw$K$J$k$N$,$3$N=V4V$G$9!#Bh;0A0$^$G$NJ8;zNs$G(B passphrase $B$rM?$($k$3$H$,$G$-$k5!G=$,Hw$o$C$F$$$^$9!#0E9f$d=pL>$NBP(B $B>]$K$J$k%F%-%9%H$O:G=i$N2~9T$N$7$h$&$H$9$k%F%-%9%H$,=q$+$l$F$$$k(B $B%P%C%U%!$N@hF,$K(B "PASSPHRASE\n" $B$r(B insert $B$7$F!"%P%C%U%!A4BN$r(B call- process-region $B$r;H$C$F(B PGP $B$KF~NO$9$k$h$&$K$7$F$$$^$7$?!#$3$l$O(B PGP 2.6.3ia $B$G$O$&$^$/$$$C$F$$$?$N$G$9$,!"$J$<$+(B 5.0i $B$G$O(B passphrase $B$N(B $B9T$^$G$b$,=pL>$NBP>]$K$J$C$F$7$^$$$^$9!#(BPassphrase $B$N]$G$9!#$J$<$J$i$PF1$8$3$H$r%3%^%s%I%i%$%s$G(B % setenv PGPPASSFD 0 % (echo "PASSPHRASE" ; echo "Hello world.") | pgps -fat $B$H$NBP>]$K$O$J$i$J$$$N$G$9!#(B $B$J$<(B call-process $B$N>l9g$K$O$*$+$7$/$J$k$N$+$o$+$i$J$$$N$G$9$,!"$3$3(B $B$G(B Power Lisper $B$NK\NNH/4x(B :-p$B!"(B start-process $B$r;H$C$F(B PGP $B%3%^%s%I(B $B$r8F$V$h$&$K$7$?$H$3$m!":#EY$O@5$7$$7k2L$,F@$i$l$k$h$&$K$J$j$^$7$?!#(B $B$=$7$F$b$&0l$D!"(Bcall-process $B$G$b@5$7$$7k2L$,F@$i$l$kJ}K!$r8+$D$1$^(B $B$7$?!#$=$l$O(B PGP $B%3%^%s%I$r(B shell $B>e$GAv$i$;$F!"(Bpassphrase $B$H%F%-%9(B $B%H$r$$$C$?$s(B cat $B$r7PM3$7$?(B pipe $B$GM?$($k$b$N$G$9!#$3$s$J46$8$G$9!#(B (set-buffer BUFFER) (setenv "PGPPASSFD" "0") (call-process-region (point-min) (point-max) "/bin/sh" t BUFFER nil "-c" "cat | pgps -fat") $B$3$l$O$9$k$H$-$K9T$J$C$F$$$k$N$HF1$8J}K!$G$9!#$*$=$i$/(B UN|X $B$G(B $B$O$3$l$G$$$1$k$G$7$g$&!#(B $B0J>e$N$h$&$J$o$1$G$9$N$G!"$b$7%G%U%)%k%H$G$O$&$^$/=pL>$,$G$-$J$+$C$?(B $B>l9g$K$O(B (setq x-pgp-sig-process-asynchronous-p nil) $B$r;n$7$F$_$F2<$5$$!#(B ;;; NEmacs $B$G$O$"$^$j8!>Z$r9T$J$C$F$$$J$$$N$G$9$,!"(Bnil $B$K$9$k$HNI$$(B ;;; $B$h$&$G$9!#(B ---------------------------------------------------------------------- 3. x-pgp-sig.el $B$NJQ?t(B PGP 5.0i $B$r;H$&$H$-$K4X78$9$kJQ?t$O\:Y$O(B 00README.ja $B$H$3$N%U%!%$%k$NA09`$r$4Mw2<$5$$!#(B x-pgp-sig-pgp-v5-p x-pgp-sig-pgp-program x-pgp-sig-process-asynchronous-p x-pgp-sig-shell-program x-pgp-sig-shell-program-arg x-pgp-sig-pipe-command x-pgp-sig-pubring-v5 x-pgp-sig-secring-v5 x-pgp-sig-good-signature-regexps x-pgp-sig-bad-signature-regexps x-pgp-sig-expected-regexps $B:#$^$G(B PGP 2.6.3ia $B$r;H$C$F$$$??M$O!"1?$,NI$1$l$P(B x-pgp-sig-pgp-v5-p $B$NCM$r(B t $B$K$9$k$@$1$G(B 5.0i $B$K>h$j49$($i$l$k$+$b$7$l$^$;$s!#(B ---------------------------------------------------------------------- 4. PGP 2.6.3ia $B$H(B 5.0i $B$N8_49@-(B $B>/$J$/$H$b=pL>$HG'>Z$K4X$7$F$O(B PGP 2.6.3ia $B$N;~Be$K:n$C$?%-!<$r;H$&(B $B8B$j$K$*$$$FAj8_$K8_49@-$,$"$k$3$H$r3NG'$7$^$7$?!#(B $B$?$H$($P0J2<$N$h$&$K4D6-9=C[$7$F$*$/$H!"N>J}$N(B PGP $B$r@Z$jBX$($F;H$&(B $B$3$H$,$G$-$k$h$&$G$9!#(B $B$?$@$7!"(BPGP 5.0i $B$r;H$C$F(BDSS$B%-!<(B (*) $B$G:n$i$l$?=pL>$O!"(BPGP 2.6.3ia $BB&$K8_49@-$,$J$$$?$a!"8!>Z$9$k;v$O$G$-$^$;$s!#(Bx-pgp-sig.el $B$G$O!"(B 1.3b3 $B$+$i!"$3$N$h$&$J>u67$KBP1~$7$F!"7Y9pI=<(5!G=$,DI2C$5$l$F$$$^$9!#(B PGP 5.0i $B$r;H$C$F(BRSA$B%-!<(B(*)$B$G:n$i$l$?=pL>$O!"(BPGP 2.6.3ia $BB&$GLdBj$J$/(B $B8!>Z$G$-$^$9!#(B (*) DSS$B%-!<$H$O!"(BPGP $B$G$N8x3+80$r:n@.$9$k:]$N0E9f2=%"%k%4%j%:%`(B $B$N0lMh$N(BRSA$B%-!<$b%5%]!<%H$7$F(B $B$$$^$9!#>\:Y$K$D$$$F$O!"(Bpgp5.0i $B$N%*%s%i%$%s%^%K%e%"%k$r;2>H(B $B$7$F2<$5$$!#(B $B!&(BPGP 2.6.3i $B$NA0$N$^$^>C$5$J$$$G$*$/!#(B $B!&(BPGP 5.0i $B$NA0$G%$%s%9%H!<%k$9$k!#(B $B!&(Bpgpe, pgps, pgpv $B$r(B pgp5.0i $B$X$N(B symbolic linc $B$K$9$k!#(B $B!&(Bpgpk $B$O$=$N$^$^%$%s%9%H!<%k$9$k!#(B $B$=$7$F!"(B % cd pgp50i/src % cp language50.txt $PGPPATH % cd $PGPPATH % touch pgp.cfg % cp secring.pgp secring.skr % cp pubring.pgp pubring.pkr $B>e5-$NNc$G$O(B $PGPPATH/pgp.cfg $B$O6u$N%U%!%$%k$G$9!#$3$l$O(B PGP $B$N=t@_(B $BDj$r%G%U%)%k%H$G;H$&0lHV4JC1$JJ}K!$G$9!#(B secring $B$H(B pubring $B$O(B symbolic link $B$G$b2DG=$J5$$,$7$^$9$,!"(Bpubring $B$K?7$7$$%-!<$rDI2C$7$?$H$-$K(B link $B$,>C$($F$7$^$&(B (*) $B$N$G!"N>J}$H$b(B $B%3%T!<$G:n$C$?J}$,NI$$$h$&$G$9!#(B (*) link $B$,>C$($k$@$1$G(B pubring $B$N + (run-hooks 'mew-real-send-hook) +;;; (save-buffer) ) (if arg x-pgp-sig-el-1.3.5.1.orig/mua-bend.el0100644000175000017610000002177106412607665016346 0ustar kitamedebian;;; mua-bend.el --- MUA back-end for pre-post processing on the message ;;; draft. ;;; ;;; $Id: mua-bend.el,v 1.8 1997/09/26 10:28:21 ono Exp $ ;; Copyright (C) 1997,1998 by Free Software Foundation, Inc. ;; Author: Fumitoyo ONO ;; Keywords: comm, internal, mail ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;; This utility would take the convenience by coupling with the 'x-pgp-sig' ;; package, etc. ;; ;; [ Usage ] ;; Install this file on to the appropriate directory ( eg. 'site-lisp' ;; directory ), and add the definitions below to your ~/.emacs file. ;; ;; (require 'mua-bend) ;; ... ;; (add-hook 'mh-before-send-letter-hook ;; For MH-E ;; '(lambda () ;; (mua-bend-fix-message-fields) ;; (x-pgp-sig-sign)) t) ;; ;; (add-hook 'mew-send-hook ;; For Mew ;; '(lambda () ;; (x-pgp-sig-mew-encode-message) ;; (mua-bend-fix-message-fields) ;; (x-pgp-sig-sign) ;; (mua-bend-normalize-message-draft)) t) ;; ;; [ Notice ] ;; Call 'mua-bend-fix-message-fields' just after mime-encoding, and just ;; before PGP-signing. So if you use this utility with the 'x-pgp-sig' ;; package, you can also set 'mua-bend' functions as the hook values of the ;; PGP-signing process like the following example: ;; ;; (add-hook 'x-pgp-sig-prepare-sign-hook 'mua-bend-fix-message-fields) ;; (add-hook 'x-pgp-sig-post-sign-hook 'mua-bend-normalize-message-draft) ;; ;;; Code: (require 'sendmail) (defvar mua-bend-folder-directory (substitute-in-file-name "$HOME/Mail/") "The top of mail folder directories.") (defvar mua-bend-system-directory mua-bend-folder-directory "The top of system directories for the MUA back-end process to drop the mqueue files / system logs.") (defvar mua-bend-queuing-directory "queue" "The queuing folder to save the mqueue files of the pre-post messages.") (defvar mua-bend-trash-folder ".trash" "The trash folder to save the pre-post messages temporally. It's to be saved as the MH-style if the folder is a directory. Otherwise, it's to be saved as the 'traditional' mbox style.") (defvar mua-bend-local-domain (or (getenv "FROMDOMAIN") (getenv "MSGIDDOMAIN") (getenv "DOMAINNAME") "sa.osk.sumikin.co.jp") "The default local domain name.") (defvar mua-bend-subject-field "No title in original." "The default title of the subject field if it's empty.") (defvar mua-bend-process "/usr/local/lib/im/impost.pl" "The MUA back-end process for fixing undefined message fields up.") (defvar mua-bend-proc-option-list (list "-nodraftfolder" "-noverbose" "-nopush" "-FccFile" "-Fcc" mua-bend-trash-folder "-JustQueuing" "-QueueDir" mua-bend-queuing-directory "-FromDomain" mua-bend-local-domain "-Subj" mua-bend-subject-field "-IgnoreHeader" "-Date" "-MsgId" "-PidMsgId" "-noShowRcpts" "-noNScmpl" "-noPartial" "-noHistory") "The list of options for MUA back-end process.") (defvar mua-bend-replacing-fields-alist (list '("^From .*\n" . "") '("^Message-Id:" . "Message-ID:") '("^X-Dispatcher:.*\n" . "") '("^Lines:.*\n" . mail-header-separator)) "The list of fields to be replaced just after the end of the MUA back-end process. Each cell consists of the format '(REGEXP . REPLACEMENT)', and will be replaced in turn exactly.") (defvar mua-bend-preserve-bcc t "The toggle switch whether to preserve BCC fields by the time the message draft has been committed to the deliverer.") (defvar mua-bend-preserve-dcc nil "The toggle switch whether to preserve DCC fields by the time the message draft has been committed to the deliverer.") (defvar mua-bend-complete-hook nil "Hooks called just before completing 'mua-bend-fix-message-fields'.") (defun mua-bend-find-the-latest (path) "Finds the latest file ( i.e. has the newest updating time-stamp ) in the directory PATH." (let ((target (directory-files path t "^[^.,#]")) (last (list 0 0)) this result) (car (nreverse (mapcar (function (lambda (x) (setq this (nth 5 (file-attributes x))) (and (or (> (car this) (car last)) (and (= (car this) (car last)) (>= (car (cdr this)) (car (cdr last))))) (setq last this) (setq result x)) result)) target))))) (defun mua-bend-fix-message-fields () "Fixes the message fields up of the current pre-posting draft file." (let ((draft buffer-file-name) (output "*MUA-bend-output*") bcc rtn) (goto-char (point-min)) (cond ((null (re-search-forward (concat "^" mail-header-separator "$") nil t nil)) ;; Maybe the message fields are already fixed up (read-string (concat "Unable to modify this draft, so deliver it immediately ... " "(HIT RTN): "))) (t (let ((case-fold-search t) (match (concat "^\\([" (and mua-bend-preserve-bcc "b") (and mua-bend-preserve-dcc "d") "f]cc:.*\\)\n"))) ;; Preserve hiden-CC fields in a list if you need (while (re-search-backward match nil t nil) (setq bcc (append (cons (match-string 1) nil) bcc)) (and (string= "fcc" (downcase (substring (car bcc) 0 3))) (replace-match "")))) (save-buffer) (save-excursion (set-buffer (get-buffer-create output)) (erase-buffer) ;; Call the 'sendproc' process synchronously ;; by the 'just-queuing' mode (setq rtn (apply 'call-process mua-bend-process nil t nil (append mua-bend-proc-option-list (cons draft nil))))) (cond ((null (zerop rtn)) ;; Maybe internal error (read-string (concat "Failed to commit the process, " "so deliver it immediately ... (HIT RTN): "))) (t ;; Move the Fcc file onto the draft folder, and modify it ;; a little (delete-file (mua-bend-find-the-latest (concat mua-bend-system-directory mua-bend-queuing-directory))) (let ((fccpath (concat mua-bend-folder-directory mua-bend-trash-folder))) (rename-file (cond ((file-directory-p fccpath) (mua-bend-find-the-latest fccpath)) (t fccpath)) draft t)) (revert-buffer nil t) (let ((case-fold-search nil) (input-coding-system (if (boundp '*noconv*) *noconv* nil)) (coding-system-for-read 'no-conversion)) (erase-buffer) (insert-file-contents draft t nil nil) (goto-char (point-min)) (mapcar (function (lambda (x) (insert (concat x "\n")))) bcc) (mapcar (function (lambda (x) (and (re-search-forward (car x) nil t nil) (replace-match (eval (cdr x)))))) mua-bend-replacing-fields-alist)) ;; Call the hook values (run-hooks 'mua-bend-complete-hook))))))) (defun mua-bend-normalize-message-draft () "Normalizes the pre-posting message draft so as to examine which content-type matches appropriately to that." (save-buffer) (let ((input-coding-system (if (boundp '*autoconv*) *autoconv* nil)) (coding-system-for-read 'automatic-conversion)) (erase-buffer) (insert-file-contents buffer-file-name t nil nil))) (provide 'mua-bend) ;;; mua-bend.el ends here x-pgp-sig-el-1.3.5.1.orig/x-pgp-sig.el0100644000175000017610000022106206724453070016457 0ustar kitamedebian;;; x-pgp-sig.el -- Yet another PGP authenticating utility for Emacsen. ;; Copyright (C) 1996-1999 Katsumi Yamaoka ;; Copyright (C) 1996-1999 OKUNISHI Fujikazu ;; Copyright (C) 1996-1999 KOSEKI Yoshinori ;; Copyright (C) 1996-1999 Fumitoyo ONO ;; Copyright (C) 1996-1999 Hidekazu Nakamura ;; Author: Katsumi Yamaoka ;; OKUNISHI Fujikazu ;; KOSEKI Yoshinori ;; Fumitoyo ONO ;; Hidekazu Nakamura ;; Maintainer: Katsumi Yamaoka ;; Created: 1996/11/12 ;; Revised: 1999/05/31 ;; References: /anonymous@ftp.isc.org:/pub/pgpcontrol/README ;; ftp://ftp.isc.org/pub/pgpcontrol/README.html ;; Keywords: semi-gnus, gnus, mh-e, mew, cmail, vm, wl, ;; pgp, pgpverify, signcontrol, x-pgp-sig ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;; Commands: ;; x-pgp-sig-set-signer ;; "Set PGP signer and passphrase." ;; x-pgp-sig-set-signer-maybe ;; "Set PGP signer and passphrase if necessary." ;; x-pgp-sig-switch-signing ;; "Judging whether to add X-PGP signature." ;; x-pgp-sig-verify ;; "Verify X-PGP signature in current message." ;; Functions: ;; x-pgp-sig-sign ;; "Add X-PGP signature." ;; x-pgp-sig-mew-encode-coding-and-sign ;; "Encode the message to the network code and sign." ;; x-pgp-sig-reserve-sign ;; "Reserve sign or not sign before sending messages." ;; x-pgp-sig-cancel-reserve-sign ; "Cancel reserve sign flag after sending messages." ;-------------------------------------------------------------------- ;;; Code: (defconst x-pgp-sig-version-number "1.3.5.1" "Version number for this version of x-pgp-sig.") (defconst x-pgp-sig-version (format "Yet another PGP authenticating utility v%s" x-pgp-sig-version-number) "Version string for this version of x-pgp-sig.") (defconst x-pgp-sig-codename ;; "Paperback Writer" "Rain" ;; "Sun King" ;; "A Taste Of Honey" ;; "When I'm Sixty-Four" ;; "Your Mother Should Know" ;; "All You Need Is Love" ;; "Blue Jay Way" ;; "Cry Baby Cry" ;; "Do You Want To Know A Secret" ;; "Eight Days A Week" ;; "For You Blue" ;; "Glass Onion" ;; "Helter Skelter" ;; "I've Got A Feeling" ;; "Hey Jude" ; "Jude Hey" ;; "Kome Together" ;; "Long Tall Sally" ;; "Mother Nature's Son" ;; "Nowhere Man" ;; "Old Brown Shoe" ;; "Piggies" ;; "Revolution" ;; "Sgt.Pepper's" ;; "Twist & Shout" ;; "With A Little Help From My Friends" ;; "You Never Give Me Your Money" ;; "Dizzy Miss Lizzy" "Codename of this version of x-pgp-sig (a string).") (if (fboundp 'eval-when-compile) (eval-when-compile (require 'cl)) (require 'cl)) (unless (and (condition-case () (require 'custom) (file-error nil)) (fboundp 'defgroup) (fboundp 'defcustom)) (defmacro defgroup (&rest args)) (defmacro defcustom (symbol value &optional doc &rest args) (let ((doc (concat "*" (or doc "")))) (` (defvar (, symbol) (, value) (, doc))))) ) ;; Silence the byte compiler. (and (fboundp 'eval-when-compile) (eval-when-compile (save-excursion (beginning-of-defun) (eval-region (point-min) (point))) (let (case-fold-search) (if (string-match "alpha\\|beta" x-pgp-sig-version-number) (mapcar (function (lambda (symbol) (unless (boundp symbol) (make-local-variable symbol) (eval (list 'setq symbol nil))))) '(:group :prefix :type cmail-current-folder gnus-Article-buffer gnus-article-buffer gnus-article-display-hook gnus-original-article-buffer gnus-current-article gnus-local-domain gnus-newsgroup-name gnus-show-mime gnus-summary-buffer mail-host-address mc-pgp-always-fetch mew-cs-mime-trans mew-header-separator mew-summary-message-regex mh-folder-filename mime-echo-buffer-name mime-editor/pgp-processing mime-edit-pgp-processing mime-preview-original-major-mode mime-raw-buffer mime-view-original-major-mode mime::preview/original-major-mode to-ascii-display to-ascii-fileio to-ascii-process to-kanji-display to-kanji-fileio to-kanji-process vm-mail-buffer vm-message-pointer x-pgp-sig-start-position )) (make-local-variable 'byte-compile-warnings) (setq byte-compile-warnings nil) )))) (defgroup x-pgp-sig nil "Yet another PGP authenticating utility." :prefix "x-pgp-sig-" :group 'applications) (defcustom x-pgp-sig-from (or (and (boundp 'user-mail-address) (stringp user-mail-address) user-mail-address) (and (boundp 'mail-host-address) (stringp mail-host-address) (concat (user-login-name) "@" mail-host-address)) (and (boundp 'gnus-local-domain) (stringp gnus-local-domain) (concat (user-login-name) "@" gnus-local-domain)) (concat (user-login-name) "@" (system-name))) "Mail address of the signer." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-default-signer (format "%s <%s>" (user-full-name) x-pgp-sig-from) "Default PGP user ID." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-default-signer-list nil "List of PGP user IDs for PGP2 and PGP5." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-pgp-v5-p nil "Non-nil means PGP version 5 is used." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-pgp-program "pgp" "Name of PGP executable." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-process-asynchronous-p t "Don't use start-process() if it is nil." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-shell-program "/bin/sh" "File name to load inferior shells from." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-shell-program-arg "-c" "Arg used to have the shell execute its command line argument." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-pipe-command "/bin/cat" "File name to be used for pipe command." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-toMime-program "toMime" "Name of toMime executable." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-toMime-options nil "List of options used to have toMime its command line argument." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-mew-encode-message-header-function 'x-pgp-sig-mew-encode-message-header-with-toMime "Function to call to encode the message of Mew. Legal values include `x-pgp-sig-mew-encode-message-header-with-toMime' (the default), `x-pgp-sig-mew-encode-message-header-with-semi' and `x-pgp-sig-mew-encode-message-header-with-tm'." :group 'x-pgp-sig :type '(radio (function-item x-pgp-sig-mew-encode-message-header-with-toMime) (function-item x-pgp-sig-mew-encode-message-header-with-semi) (function-item x-pgp-sig-mew-encode-message-header-with-tm) function)) (defcustom x-pgp-sig-process-coding-system-for-output nil "Coding system for PGP process (output from Mule/XEmacs)." :group 'x-pgp-sig :type 'symbol) (defcustom x-pgp-sig-process-kanji-code 2 "Kanji code for PGP process (NEmacs). 0:No-conversion might not work well." :group 'x-pgp-sig :type 'integer) (defcustom x-pgp-sig-pgppath (or (let ((pp (getenv "PGPPATH"))) (when pp (setq pp (expand-file-name (if (string-match "/+$" pp) (substring pp 0 (match-beginning 0)) pp))) (and (file-directory-p pp) pp))) (expand-file-name "~/.pgp")) "Environment variable PGPPATH." :group 'x-pgp-sig :type 'directory) (defcustom x-pgp-sig-pubring (or (let ((pr (getenv "PUBRING")) pr2) (when pr (setq pr (expand-file-name (if (string-match "/+$" pr) (substring pr 0 (match-beginning 0)) pr) x-pgp-sig-pgppath)) (if (and (string-match "\\.pkr$" pr) (setq pr2 (concat (substring pr 0 (match-beginning 0)) ".pgp")) (file-exists-p pr2) (not (file-directory-p pr2))) pr2 (and (file-exists-p pr) (not (file-directory-p pr)) pr)))) (expand-file-name "pubring.pgp" x-pgp-sig-pgppath)) "Environment variable PUBRING." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-pubring-v5 (or (let ((pr (getenv "PUBRING")) pr5) (when pr (setq pr (expand-file-name (if (string-match "/+$" pr) (substring pr 0 (match-beginning 0)) pr) x-pgp-sig-pgppath)) (if (and (string-match "\\.pgp$" pr) (setq pr5 (concat (substring pr 0 (match-beginning 0)) ".pkr")) (file-exists-p pr5) (not (file-directory-p pr5))) pr5 (and (file-exists-p pr) (not (file-directory-p pr)) pr)))) (expand-file-name "pubring.pkr" x-pgp-sig-pgppath)) "Environment variable PUBRING for PGP v5." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-secring (or (let ((sr (getenv "SECRING")) sr2) (when sr (setq sr (expand-file-name (if (string-match "/+$" sr) (substring sr 0 (match-beginning 0)) sr) x-pgp-sig-pgppath)) (if (and (string-match "\\.skr$" sr) (setq sr2 (concat (substring sr 0 (match-beginning 0)) ".pgp")) (file-exists-p sr2) (not (file-directory-p sr2))) sr2 (and (file-exists-p sr) (not (file-directory-p sr)) sr)))) (expand-file-name "secring.pgp" x-pgp-sig-pgppath)) "Environment variable SECRING." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-secring-v5 (or (let ((sr (getenv "SECRING")) sr5) (when sr (setq sr (expand-file-name (if (string-match "/+$" sr) (substring sr 0 (match-beginning 0)) sr) x-pgp-sig-pgppath)) (if (and (string-match "\\.pgp$" sr) (setq sr5 (concat (substring sr 0 (match-beginning 0)) ".skr")) (file-exists-p sr5) (not (file-directory-p sr5))) sr5 (and (file-exists-p sr) (not (file-directory-p sr)) sr)))) (expand-file-name "secring.skr" x-pgp-sig-pgppath)) "Environment variable SECRING for PGP v5." :group 'x-pgp-sig :type 'file) (defcustom x-pgp-sig-delete-last-empty-line-while-verifying t "If non-nil, delete trailing empty lines of message while verifying." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-approved-field-body x-pgp-sig-from "Mail address for Approved field." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-x-info-field-body nil "String for X-Info field body." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-add-version-header nil "Non-nil forces 'x-pgp-sig-sign to add `Version' field. :-p" :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-version-field-name "X-PGP-Sig-Version" "Name of the `Version' field." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-version-field-body (format "v%s - \"%s\" (Yet another PGP authenticating utility)" x-pgp-sig-version-number x-pgp-sig-codename) "String for `Version' field body." :group 'x-pgp-sig :type 'string) (defcustom x-pgp-sig-add-key-info-field nil "If non-nil, `Key-Info' field will be added." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-key-info-field-name-alist '(("RSA" . "X-PGP-Key-Info") ("DSS" . "X-PGP5-Key-Info")) "Name of the `Key-Info' field." :group 'x-pgp-sig :type '(repeat (cons :format "%v" (choice (choice-item :tag "RSA" "RSA") (choice-item :tag "DSS" "DSS")) (string :tag "Field name")))) (defcustom x-pgp-sig-add-fingerprint-field nil "If non-nil, `Fingerprint' field will be added." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-fingerprint-field-name-alist '(("RSA" . "X-PGP-Fingerprint") ("DSS" . "X-PGP-Fingerprint20")) "Name of the `Fingerprint' field." :group 'x-pgp-sig :type '(repeat (cons :format "%v" (choice (choice-item :tag "RSA" "RSA") (choice-item :tag "DSS" "DSS")) (string :tag "Field name")))) (defcustom x-pgp-sig-sign-fields '("Subject" "Control" "Message-ID" "Date" "From" "Sender" "User-Agent" "X-Mailer" "X-Newsreader" "X-Face" "X-Face-Type") "List of fields to be signed." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-adjust-sign-fields-alist nil "Adjust `x-pgp-sig-sign-fields' if matched text exists in narrowed header. \((REGEXP1 (sub \"FIELD1\" \"FIELD2\" ...) \ (add \"FIELD3\" \"FIELD4\" ...)) \ (REGEXP2 (sub \"FIELD5\" \"FIELD6\" ...) \ (add \"FIELD7\" \"FIELD8\" ...))) REGEXP can also be a function." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-last-fields '( "Content-Type" "Content-Transfer-Encoding" "X-Face" "X-Face-Version" "X-Face-Type" ) "PGP signed field will be added above these fields." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-always-sign nil "If non-nil, always add X-PGP signature." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-inhibit-repeated-sign t "If non-nil, inhibit sign if the signature has been already exists." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-enter-keyid-first nil "If non-nil, x-pgp-sig-set-signer(-maybe) requires KeyID first." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-add-signature-judging-function 'x-pgp-sig-add-signature-y-or-n-p "Function whether to add X-PGP signature." :group 'x-pgp-sig :type 'function) (defcustom x-pgp-sig-load-hook nil "Hook to be run after the x-pgp-sig package has been loaded." :group 'x-pgp-sig :type 'hook) (defcustom x-pgp-sig-reload-hook nil "Hook to be run after the x-pgp-sig package has been *re*loaded." :group 'x-pgp-sig :type 'hook) (defcustom x-pgp-sig-sign-hook nil "Hook run after adding X-PGP-Sig field." :group 'x-pgp-sig :type 'hook) (defcustom x-pgp-sig-prepare-sign-hook nil "Hook run before signing pgp process." :group 'x-pgp-sig :type 'hook) (defcustom x-pgp-sig-post-sign-hook nil "Hook run after signing pgp process." :group 'x-pgp-sig :type 'hook) (defcustom x-pgp-sig-good-signature-regexps '( "^Good signature from user.*$" ;; v2.6 "^Good signature made .* by key:$" ;; v5 ) "Regular expression matching a PGP signature validation message." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-bad-signature-regexps (list (concat "\\(" ;; v2.6 "^Bad signature from user.*$" "\\|" "Unsupported packet format - you need a newer version of PGP" "\\)") "^BAD signature made .* by key:$" ;; v5 ) "Regular expression not matching a PGP signature validation message." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-expected-regexps '( "Key ID \\(\\S +\\) not found" ;; v2.6 "^Signature by unknown keyid: 0x\\(\\S +\\)$" ;; v5 ) "Regular expression that no keys found." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-pgp-v5-result-regexp (format "%s\\|%s\\|%s" (cadr x-pgp-sig-good-signature-regexps) (cadr x-pgp-sig-bad-signature-regexps) (cadr x-pgp-sig-expected-regexps)) "Regexp search pattern for the result of PGP v5." :group 'x-pgp-sig :type 'regexp) (defcustom x-pgp-sig-good-passphrase-regexp-for-decryption '( "\\.+Pass phrase appears good\\. \\." ;; V2.6 "^Message is encrypted\\.\nOpening file .+ type text\\.\n" ;; v5 ) "Regular expression matching PGP decryption \"good\" message." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-verify-method-alist '( (gnus-summary-mode . (x-pgp-sig-gnus-get-article x-pgp-sig-find-gnus-article-buffer x-pgp-sig-gnus-unwind-after-verify)) (gnus-Subject-mode . (x-pgp-sig-gnus-get-article x-pgp-sig-find-gnus-article-buffer x-pgp-sig-gnus-unwind-after-verify)) (mh-folder-mode . (x-pgp-sig-mh-get-article x-pgp-sig-msg-to-verify-buffer)) (mew-summary-mode . (x-pgp-sig-mew-get-article x-pgp-sig-msg-to-verify-buffer)) (mew-virtual-mode . (x-pgp-sig-mew-get-article x-pgp-sig-msg-to-verify-buffer)) (cmail-summary-mode . (x-pgp-sig-cmail-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-presentation-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (vm-summary-mode . (x-pgp-sig-vm-get-article x-pgp-sig-msg-to-verify-buffer)) (wl-summary-mode . (x-pgp-sig-wl-get-article x-pgp-sig-msg-to-verify-buffer)) ) "Alist of the MAJOR-MODE and the list of PREPARE_FUNCTION, BUFFER_or_FUNCTION and POST_FUNCTION. POST_FUNCTION ban be omitted." :group 'x-pgp-sig :type 'sexp) (defcustom x-pgp-sig-use-mime-pgp-fetch-key nil "Use `mime-pgp-fetch-key' for fetching a key if it is non-nil." :group 'x-pgp-sig :type 'boolean) (defcustom x-pgp-sig-debug nil "Turn on the debug mode if it is non-nil." :group 'x-pgp-sig :type 'boolean) ;;; Macros (defmacro x-pgp-sig-default-signer () '(let (signer) (or (and (eq 2 (length x-pgp-sig-default-signer-list)) (setq signer (if x-pgp-sig-pgp-v5-p (cadr x-pgp-sig-default-signer-list) (car x-pgp-sig-default-signer-list))) (or (stringp signer) (consp signer)) signer) x-pgp-sig-default-signer))) (defmacro x-pgp-sig-read-char-exclusive () (cond ((featurep 'xemacs) '(let ((table (quote ((backspace . ?\C-h) (delete . ?\C-?) (left . ?\C-h)))) event key) (while (not (and (key-press-event-p (setq event (next-command-event))) (setq key (or (event-to-character event) (cdr (assq (event-key event) table))))))) key)) ((fboundp 'read-char-exclusive) '(read-char-exclusive)) (t '(read-char)))) ;;; Internal variables (defvar x-pgp-sig-no-conversion (cond (; XEmacs (featurep 'xemacs) (coding-system-name (get-coding-system nil))) (; Mule 2.3 (boundp 'MULE) '*noconv*) (; Emacs 20.x, MULE 3.0 (fboundp 'check-coding-system) (or (condition-case () (check-coding-system 'binary) (coding-system-error nil)) (condition-case () (check-coding-system 'no-conversion) (coding-system-error nil)) )))) (defconst x-pgp-sig-field-name "X-PGP-Sig" "Field name of PGP signature.") (defconst x-pgp-sig-signed-headers-field-name "X-Signed-Headers" "Field name of PGP signed fields.") (defconst x-pgp-sig-msg-begin-line "-----BEGIN PGP MESSAGE-----" "Text for start of PGP message delimiter.") (defconst x-pgp-sig-msg-end-line "-----END PGP MESSAGE-----" "Text for end of PGP message delimiter.") (defconst x-pgp-sig-signed-msg-begin-line "-----BEGIN PGP SIGNED MESSAGE-----" "Text for start of PGP signed messages.") (defconst x-pgp-sig-signed-begin-line "-----BEGIN PGP SIGNATURE-----" "Text for start of PGP signature.") (defconst x-pgp-sig-signed-end-line "-----END PGP SIGNATURE-----" "Text for end of PGP signature.") (defvar x-pgp-sig-working-buffer " *x-pgp-sig-working*") (defvar x-pgp-sig-msg-to-verify-buffer nil) (defvar x-pgp-sig-enable-sign) (setq x-pgp-sig-enable-sign x-pgp-sig-always-sign) (or (stringp x-pgp-sig-default-signer) (consp x-pgp-sig-default-signer) (setq x-pgp-sig-default-signer (format "%s <%s>" (user-full-name) x-pgp-sig-from))) (and (boundp 'x-pgp-sig-pgp-program) (stringp x-pgp-sig-pgp-program) (string-match "pgp[eksv]$" x-pgp-sig-pgp-program) (setq x-pgp-sig-pgp-program (substring x-pgp-sig-pgp-program 0 (1- (match-end 0))))) (defvar x-pgp-sig-current-signer) (setq x-pgp-sig-current-signer (x-pgp-sig-default-signer)) (defvar x-pgp-sig-passphrase-alist) (setq x-pgp-sig-passphrase-alist nil) (defvar x-pgp-sig-secret-key-alist) (setq x-pgp-sig-secret-key-alist nil) (defvar x-pgp-sig-secret-key-data-list) (setq x-pgp-sig-secret-key-data-list nil) (defconst x-pgp-sig-idea-passphrase (let ((i 254) p r) (while (> i 0) (decf i) (setq r (abs (random)) p (concat p (char-to-string (+ (/ (* 95 (- r (* (/ r 100) 100))) 100) 32))))) p)) (defvar x-pgp-sig-reserve-sign-buffer nil) (defvar x-pgp-sig-reserve-sign-flag nil) (defvar x-pgp-sig-debug-buffer-num 1) (defvar x-pgp-sig-debug-buffer-list nil) (defvar x-pgp-sig-debug-buffer-max 16) (defvar x-pgp-sig-debug-log-file nil) ;;; Emulations for each Emacs variants. (and (boundp 'to-kanji-display) (setq to-ascii-display ?B to-ascii-fileio ?B to-ascii-process ?B to-kanji-display ?B to-kanji-fileio ?B to-kanji-process ?B)) (mapcar (function (lambda (elt) (let ((func (car elt))) (or (fboundp func) (fset func (symbol-function (cdr elt))))))) '( (buffer-substring-no-properties . buffer-substring) (defsubst . defun) )) (or (fboundp 'delete) ; Imported from emu-18.el (defun delete (elt list) "Delete by side effect any occurrences of ELT as a member of LIST. The modified LIST is returned. Comparison is done with `equal'. If the first member of LIST is ELT, deleting it is not a side effect; it is simply using a different list. Therefore, write `(setq foo (delete element foo))' to be sure of changing the value of `foo'." (if (equal elt (car list)) (cdr list) (let ((rest list) (rrest (cdr list)) ) (while (and rrest (not (equal elt (car rrest)))) (setq rest rrest rrest (cdr rrest)) ) (rplacd rest (cdr rrest)) list)))) (or (fboundp 'match-string) (defun match-string (num &optional string) "Return string of text matched by last search. NUM specifies which parenthesized expression in the last regexp. Value is nil if NUMth pair didn't match, or there were less than NUM pairs. Zero means the entire text matched by the whole regexp or whole string. STRING should be given if the last search was by `string-match' on STRING." (if (match-beginning num) (if string (substring string (match-beginning num) (match-end num)) (buffer-substring (match-beginning num) (match-end num)))))) (or (fboundp 'member) (defun member (elt list) "Return non-nil if ELT is an element of LIST. Comparison done with EQUAL. The value is actually the tail of LIST whose car is ELT." (while (and list (not (equal elt (car list)))) (setq list (cdr list))) list)) (or (fboundp 'put-alist) ; Imported from tl-list.el. (defun put-alist (item value alist) "Modify ALIST to set VALUE to ITEM. If there is a pair whose car is ITEM, replace its cdr by VALUE. If there is not such pair, create new pair (ITEM . VALUE) and return new alist whose car is the new pair and cdr is ALIST." (let ((pair (assoc item alist))) (if pair (progn (setcdr pair value) alist) (cons (cons item value) alist) )))) (if (and (condition-case () (require 'env) (error nil)) (fboundp 'setenv)) (fset 'x-pgp-sig-setenv (symbol-function 'setenv)) (defun x-pgp-sig-setenv (variable &optional value) (let ((re (concat "^" (regexp-quote variable) "=")) (envs process-environment) env case-fold-search) (while (setq env (pop envs)) (and (string-match re env) (setq process-environment (delete env process-environment)))) (and value (setq process-environment (cons (concat variable "=" value) process-environment))))) ) (or (fboundp 'rassoc) (defun rassoc (key list) "Return non-nil if KEY is `equal' to the cdr of an element of LIST. The value is actually the element of LIST whose cdr equals KEY." (let ((elt (assoc key (mapcar (function (lambda (elt) (cons (cdr elt) (car elt)))) list)))) (and elt (cons (cdr elt) (car elt))))) ) ;;; Function for DOSish OSes (OS/2,M$Windoze-95|NT). (defsubst x-pgp-sig-delcr () (goto-char (point-min)) (while (search-forward "\r\n" nil t) (replace-match "\n"))) ;;; Functions. (defsubst x-pgp-sig-buffer-live-p (buffer) "Say whether BUFFER is alive or not." (and buffer (get-buffer buffer) (buffer-name (get-buffer buffer)))) (defun x-pgp-sig-read-noecho (prompt &optional stars) "Read a single line of text from user without echoing, and return it." (let ((ans "") (c 0) (echo-keystrokes 0) (cursor-in-echo-area t) (log-message-max-size 0) message-log-max done msg truncate) (while (not done) (if (or (not stars) (string-equal "" ans)) (setq msg prompt) (setq msg (concat prompt (make-string (length ans) ?*))) (setq truncate (1+ (- (length msg) (window-width (minibuffer-window))))) (and (> truncate 0) (setq msg (concat "$" (substring msg (1+ truncate)))))) (message msg) (setq c (x-pgp-sig-read-char-exclusive)) (cond ((eq ?\C-g c) (setq quit-flag t done t)) ((memq c '(?\r ?\n ?\e)) (setq done t)) ((eq ?\C-u c) (setq ans "")) ((and (/= ?\b c) (/= ?\177 c)) (setq ans (concat ans (char-to-string c)))) ((> (length ans) 0) (setq ans (substring ans 0 -1))))) (if quit-flag (prog1 (setq quit-flag nil) (message "Quit") (beep t)) (message "") ans))) (defsubst x-pgp-sig-insert-file-contents-no-conversion (filename &rest args) (let (; NEmacs kanji-flag ; Mule (input-coding-system x-pgp-sig-no-conversion) ; XEmacs (>=20.1b6) (coding-system-for-read x-pgp-sig-no-conversion)) (apply 'insert-file-contents filename args))) (defun x-pgp-sig-error (&rest args) "(x-pgp-sig-error FORMAT ARG ARG ... BUFFER)." (let* ((len (length args)) (buffer (nth (1- len) args))) (cond ((zerop len) (error "")) ((and (> len 1) (x-pgp-sig-buffer-live-p buffer)) (and x-pgp-sig-debug (let ((errbuf (generate-new-buffer (concat "*x-pgp-sig-error-(" (buffer-name buffer) ")*"))) content point) (save-excursion (set-buffer buffer) (setq content (buffer-substring-no-properties (point-min) (point-max)) point (point)) (set-buffer errbuf) (insert content) (goto-char point) (set-buffer-modified-p nil) (setq buffer-read-only t) (cond ((fboundp 'set-buffer-file-coding-system) (set-buffer-file-coding-system x-pgp-sig-no-conversion)) ((fboundp 'set-file-coding-system) (set-file-coding-system x-pgp-sig-no-conversion)) ((fboundp 'set-kanji-fileio-code) (set-kanji-fileio-code nil)))) (display-buffer errbuf))) (apply 'error (reverse (cdr (reverse args))))) (t (apply 'error args))))) (defsubst x-pgp-sig-narrow-to-header (&optional include-separator) (widen) (goto-char (point-min)) (narrow-to-region (point) (or (and (re-search-forward (format "^\\(%s\\)?\n" (regexp-quote mail-header-separator)) nil t) (if include-separator (match-end 0) (match-beginning 0))) (point-max))) (goto-char (point-min))) (defun x-pgp-sig-debug-make-history (&optional out additional-buffer) (let ((cur (current-buffer)) (buffer (generate-new-buffer (format "**X-PGP-Sig-DEBUG-%04d-/%s" x-pgp-sig-debug-buffer-num (if out "O" "I"))))) (save-excursion (set-buffer buffer) (when additional-buffer (insert-buffer-substring additional-buffer) (kill-buffer additional-buffer) (insert-char ?- 70) (insert "\n")) (insert-buffer-substring cur)) (setq x-pgp-sig-debug-buffer-list (append x-pgp-sig-debug-buffer-list (list buffer)))) (when out (incf x-pgp-sig-debug-buffer-num) (while (> (length x-pgp-sig-debug-buffer-list) x-pgp-sig-debug-buffer-max) (kill-buffer (pop x-pgp-sig-debug-buffer-list))))) (defun x-pgp-sig-debug-list-buffers () (interactive) (list-buffers) (save-excursion (set-buffer (get-buffer "*Buffer List*")) (let (buffer-read-only pt) (goto-char (point-min)) (forward-line 2) (while (not (eobp)) (setq pt (point)) (if (looking-at "^.. \\*\\*X-PGP-Sig-DEBUG-[0-9]+-/[IO]") (forward-line 1) (forward-line 1) (delete-region pt (point)) )) (goto-char (point-min))))) (defun x-pgp-sig-process-buffer (args &optional passphrase buffer tail) (let ((obuf (or (and (x-pgp-sig-buffer-live-p buffer) buffer) (current-buffer))) (pgpbuf (get-buffer-create " *PGP*")) case-fold-search str process err) (mapcar (function (lambda (a) (or (member a args) (setq args (cons a args))))) (list "+verbose=1" (if x-pgp-sig-pgp-v5-p "+language=us" "+language=en") "+batchmode")) (save-excursion (set-buffer obuf) (setq str (buffer-string)) (set-buffer pgpbuf) (setq buffer-read-only nil) (erase-buffer) (setq case-fold-search nil) (when (or x-pgp-sig-debug (not x-pgp-sig-process-asynchronous-p)) (and passphrase (insert passphrase "\n")) (insert str)) (when x-pgp-sig-debug (x-pgp-sig-debug-make-history) (and x-pgp-sig-process-asynchronous-p (erase-buffer))) (let* (; NEmacs (default-kanji-process-code (or x-pgp-sig-process-kanji-code 0)) program-kanji-code-alist ; (outcode (or x-pgp-sig-process-coding-system-for-output x-pgp-sig-no-conversion)) ; Mule (input-coding-system x-pgp-sig-no-conversion) (output-coding-system x-pgp-sig-no-conversion) (default-process-coding-system (cons x-pgp-sig-no-conversion outcode)) call-process-hook ; XEmacs (<= 20.1b6) (file-coding-system outcode) ; XEmacs (>= 20.1b7) (buffer-file-coding-system outcode) ; XEmacs (>= 20.2b1) (coding-system-for-read x-pgp-sig-no-conversion) (coding-system-for-write outcode) (process-environment process-environment) process-connection-type (lines 16) ; for debugging debug-buffer debug-mark ) (x-pgp-sig-setenv "PGPPATH" x-pgp-sig-pgppath) (x-pgp-sig-setenv "PGPPASSFD" (and passphrase "0")) (if x-pgp-sig-process-asynchronous-p (progn (and x-pgp-sig-debug (setq debug-buffer (get-buffer-create " *X-PGP-Sig-DEBUG-PROCESS*")) (save-excursion (set-buffer debug-buffer) (setq buffer-read-only nil) (erase-buffer) (insert (format "******* X-PGP-Sig-DEBUG-PROCESS-%04d *******\n" x-pgp-sig-debug-buffer-num)) (and x-pgp-sig-debug-log-file (write-region (point-min) (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (setq process (apply 'start-process "*PGP*" pgpbuf (concat x-pgp-sig-pgp-program tail) args)) (and x-pgp-sig-debug (save-excursion (set-buffer debug-buffer) (insert "(" (prin1-to-string (process-status process)) ")\n") (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (and (fboundp 'set-process-coding-system) (set-process-coding-system process x-pgp-sig-no-conversion outcode)) (process-kill-without-query process) (when passphrase (process-send-string process passphrase) (process-send-string process "\n")) (or (and tail (string-match "[sv]" tail)) (accept-process-output process 1)) (and x-pgp-sig-debug passphrase (save-excursion (set-buffer debug-buffer) (insert (format "%-8s>Turtle Power!\\n\n" (concat "(" (prin1-to-string (process-status process)) ")"))) (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (set-buffer obuf) (goto-char (point-min)) (while (not (eobp)) (setq str (buffer-substring (point) (progn (end-of-line) (point)))) (process-send-string process str) (unless (eobp) (process-send-string process "\n") (decf lines) (and (or (and (zerop lines) (setq lines 16) tail (string-equal "s" tail)) (not (and tail (string-match "[sv]" tail)))) (accept-process-output process 1))) (and x-pgp-sig-debug (save-excursion (or (eobp) (setq str (concat str "\\n"))) (set-buffer debug-buffer) (insert (format "%-8s>%s\n" (concat "(" (prin1-to-string (process-status process)) ")") (if (string-match "\\\\n$" str) str "Turtle Power!"))) (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (forward-line 1)) (set-buffer pgpbuf) (process-send-eof process) (and x-pgp-sig-debug (save-excursion (set-buffer debug-buffer) (insert (format "%-8s>EOF\n" (concat "(" (prin1-to-string (process-status process)) ")"))) (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (while (eq 'run (process-status process)) (and x-pgp-sig-debug (save-excursion (set-buffer debug-buffer) (insert "(" (prin1-to-string (process-status process)) ")\n") (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) (accept-process-output process 1)) (and x-pgp-sig-debug (save-excursion (set-buffer debug-buffer) (insert "(" (prin1-to-string (process-status process)) ")\n") (and x-pgp-sig-debug-log-file (write-region debug-mark (setq debug-mark (point)) x-pgp-sig-debug-log-file 'append 'silence)))) ) (if (and tail (string-equal "s" tail)) (call-process-region (point-min) (point-max) x-pgp-sig-shell-program t pgpbuf nil x-pgp-sig-shell-program-arg (concat x-pgp-sig-pipe-command "|" x-pgp-sig-pgp-program tail " '" (mapconcat 'identity args "' '") "'")) (apply 'call-process-region (point-min) (point-max) (concat x-pgp-sig-pgp-program tail) t pgpbuf nil args) )) (and x-pgp-sig-debug (x-pgp-sig-debug-make-history 'out debug-buffer)) ) ; for 'OS/2 & 'windoze-98 convert CRLF to LF (x-pgp-sig-delcr) ; (goto-char (point-min)) (setq err (and (re-search-forward "\n\n+" nil t) (if x-pgp-sig-pgp-v5-p (or (and (looking-at "^A private key is required") "Passphrase incorrect") (and (looking-at "^Cannot find a private key") (match-string 0))) (and (looking-at "^\C-gError:[\t ]*\\(.*\\)$") (match-string 1))))) (setq str (buffer-string)) (set-buffer obuf) (setq buffer-read-only nil) (erase-buffer) (insert str)) (if err (list (format "\"%s\"" err) pgpbuf) (kill-buffer pgpbuf) nil))) (defun x-pgp-sig-idea-encrypt-string (str) "Encrypt string using IDEA method." (and (stringp str) (let ((buffer (get-buffer-create x-pgp-sig-working-buffer)) beg result) (unwind-protect (save-excursion (set-buffer buffer) (setq buffer-read-only nil) (erase-buffer) (insert str) (setq str nil) (setq result (if x-pgp-sig-pgp-v5-p (x-pgp-sig-process-buffer '("-fact") x-pgp-sig-idea-passphrase nil "e") (x-pgp-sig-process-buffer '("-fact") x-pgp-sig-idea-passphrase))) (and result (apply 'x-pgp-sig-error "!! %s" result)) (goto-char (point-min)) (or (re-search-forward (format "%s$" (regexp-quote x-pgp-sig-msg-begin-line)) nil t) (x-pgp-sig-error "!! Regexp \"%s\$\" not found" (regexp-quote x-pgp-sig-msg-begin-line) buffer)) (or (search-forward "\n\n" nil t) (x-pgp-sig-error "!! String \"\\n\\n\" not found" buffer)) (setq beg (point)) (or (re-search-forward (format "%s$" (regexp-quote x-pgp-sig-msg-end-line)) nil t) (x-pgp-sig-error "!! Regexp \"%s\$\" not found" (regexp-quote x-pgp-sig-msg-end-line) buffer)) (setq result (buffer-substring beg (match-beginning 0)))) (kill-buffer buffer)) result))) (defun x-pgp-sig-idea-decrypt-string (str) "Decrypt string using IDEA method." (and (stringp str) (let ((buffer (get-buffer-create x-pgp-sig-working-buffer)) (re (concat (if x-pgp-sig-pgp-v5-p (cadr x-pgp-sig-good-passphrase-regexp-for-decryption) (car x-pgp-sig-good-passphrase-regexp-for-decryption)) (if x-pgp-sig-process-asynchronous-p "" (concat "\\(" (regexp-quote x-pgp-sig-idea-passphrase) "\n\\)?")))) result) (unwind-protect (save-excursion (set-buffer buffer) (setq buffer-read-only nil) (erase-buffer) (insert x-pgp-sig-msg-begin-line "\n\n") (and x-pgp-sig-pgp-v5-p (insert "\n")) (insert str) (setq str nil) (or (eolp) (insert "\n")) (insert x-pgp-sig-msg-end-line "\n") (setq result (if x-pgp-sig-pgp-v5-p (x-pgp-sig-process-buffer '("-f") x-pgp-sig-idea-passphrase nil "v") (x-pgp-sig-process-buffer '("-f") x-pgp-sig-idea-passphrase))) (and result (apply 'x-pgp-sig-error "!! %s" result)) (goto-char (point-min)) (or (re-search-forward re nil t) (x-pgp-sig-error "!! Regexp \"%s\" not found" (regexp-quote re) buffer)) (setq result (buffer-substring (point) (if (and (featurep 'xemacs) x-pgp-sig-process-asynchronous-p) (progn (goto-char (point-max)) (forward-line -1) (1- (point))) (point-max))))) (kill-buffer buffer)) result))) (defun x-pgp-sig-lookup-keys-5 (&optional pub) (let ((case-fold-search t) (keyring (expand-file-name (if pub x-pgp-sig-pubring-v5 x-pgp-sig-secring-v5))) (re (concat "^\\(" (if pub "pub\\|sec.?" "sec.?") "\\)" ;;1 "[\t ]+" "\\([0-9]+\\)" ;;2 bits "[\t ]+0x" "\\([0-9a-f]+\\)" ;;3 keyid "[\t ]+" "\\([0-9/-]+\\)" ;;4 date "[\t ]+[^\n\t ]+[\t ]+" "\\([^\n\t ]+\\)" ;;5 algorithm )) (process-environment process-environment) process-connection-type buffer id data result) (or (file-exists-p keyring) (error "!! File \"%s\" not found" keyring)) (unwind-protect (save-excursion (setq buffer (set-buffer (get-buffer-create x-pgp-sig-working-buffer))) (setq buffer-read-only nil) (erase-buffer) (x-pgp-sig-setenv "PGPPATH" x-pgp-sig-pgppath) (call-process (concat x-pgp-sig-pgp-program "k") nil t nil "+verbose=1" "+language=us" "-ll") ; for 'windoze-98 (x-pgp-sig-delcr) ; (goto-char (point-min)) (when (looking-at "^Type[\t ]+Bits[\t ]+KeyID[\t ]+") (or pub (setq x-pgp-sig-secret-key-data-list nil)) (while (re-search-forward re nil t) (setq id (concat "0x" (match-string 3))) (or pub (setq data (list id (match-string 2) ;; bits (match-string 4) ;; date (match-string 5) ;; algorithm ))) (forward-line 1) (save-restriction (narrow-to-region (point) (or (and (re-search-forward "^$" nil t) (match-beginning 0)) (point-max))) (goto-char (point-min)) (re-search-forward "=[\t ]+\\(.+\\)$") (or pub (setq x-pgp-sig-secret-key-data-list (append x-pgp-sig-secret-key-data-list (list (append data (list (match-string 1))))))) (while (re-search-forward "^uid[\t ]+\\(.+\\)$" nil t) (setq result (append result (list (cons (match-string 1) id))))) (goto-char (point-max))) ))) (kill-buffer buffer)) result)) (defun x-pgp-sig-lookup-keys-2 (&optional pub) (let ((case-fold-search t) (keyring (expand-file-name (if pub x-pgp-sig-pubring x-pgp-sig-secring))) (re (concat "^" (if pub "pub" "sec") "[\t ]+" "\\([0-9]+\\)" ;;1 bits "/" "\\([0-9a-f]+\\)" ;;2 keyid "[\t ]+" "\\([0-9/-]+\\)" ;;3 date "[\t ]+" "\\(.+\\)$" ;;4 userid )) (process-environment process-environment) process-connection-type buffer id data result) (or (file-exists-p keyring) (error "!! File \"%s\" not found" keyring)) (unwind-protect (save-excursion (setq buffer (set-buffer (get-buffer-create x-pgp-sig-working-buffer))) (setq buffer-read-only nil) (erase-buffer) (x-pgp-sig-setenv "PGPPATH" x-pgp-sig-pgppath) (call-process x-pgp-sig-pgp-program nil t nil "+verbose=1" "+language=en" "-kvc" keyring) ; for 'windoze-98 (x-pgp-sig-delcr) ; (goto-char (point-min)) (when (re-search-forward (format "^Key ring: '%s'\nType.+\n" (regexp-quote keyring)) nil t) (or pub (setq x-pgp-sig-secret-key-data-list nil)) (while (re-search-forward re nil t) (setq id (concat "0x" (match-string 2)) result (append result (list (cons (match-string 4) id)))) (or pub (setq data (list id (match-string 1) ;; bits (match-string 3) ;; date "RSA" ;; algorithm ))) (forward-line 1) (re-search-forward "=[\t ]+\\(.+\\)$") (setq x-pgp-sig-secret-key-data-list (append x-pgp-sig-secret-key-data-list (list (append data (list (match-string 1)))))) (forward-line 1) (while (not (or (eobp) (looking-at "[^\n\t ]"))) (re-search-forward "[^\n\t ].+$") (setq result (append result (list (cons (match-string 0) id)))) (forward-line 1)) ))) (kill-buffer buffer)) result)) (defun x-pgp-sig-lookup-keys (&optional regexp case pub) "Extract data from the keyring." (let ((result (if x-pgp-sig-pgp-v5-p (x-pgp-sig-lookup-keys-5 pub) (x-pgp-sig-lookup-keys-2 pub))) (case-fold-search case)) (if (stringp regexp) (delq nil (mapcar (function (lambda (elt) (and (string-match regexp (car elt)) elt))) result)) result))) (defun x-pgp-sig-search-secret-key (id type) (let ((keys (cdr (if (and x-pgp-sig-secret-key-alist (if x-pgp-sig-pgp-v5-p (eq 5 (car x-pgp-sig-secret-key-alist)) (not (eq 5 (car x-pgp-sig-secret-key-alist))))) x-pgp-sig-secret-key-alist (setq x-pgp-sig-secret-key-alist (cons (if x-pgp-sig-pgp-v5-p 5 2) (x-pgp-sig-lookup-keys)))))) (case-fold-search t) key result) (or keys (error "!! No keys in \"%s\"" (if x-pgp-sig-pgp-v5-p x-pgp-sig-secring-v5 x-pgp-sig-secring))) (cond ((eq 'keyid type) (while (and (not result) (setq key (pop keys))) (and (string-equal (downcase id) (downcase (cdr key))) (setq result key)))) ((eq 'uid type) (while (and (not result) (setq key (pop keys))) (and (string-match (regexp-quote id) (car key)) (setq result key))))) result)) (defun x-pgp-sig-build-message-to-sign () "Extract fields and body to sign in current buffer." (let ((case-fold-search t) (sign-fields (copy-sequence x-pgp-sig-sign-fields)) (adjust x-pgp-sig-adjust-sign-fields-alist) (fields "") adj adj1 sub add existing-fields field re body buffer) (save-excursion (save-restriction (x-pgp-sig-narrow-to-header t) (while (setq adj (pop adjust)) (setq adj1 (pop adj)) (goto-char (point-min)) (when (cond ((stringp adj1) (re-search-forward adj1 nil t)) ((fboundp adj1) (funcall adj1))) (setq sub (cdr (assq 'sub adj)) add (cdr (assq 'add adj))) (while sub (setq sign-fields (delete (car sub) sign-fields)) (setq sub (cdr sub))) (while add (setq sign-fields (append sign-fields (list (car add))) add (cdr add))))) (while (setq field (pop sign-fields)) (setq re (format "^%s:" (regexp-quote field))) (goto-char (point-min)) (and (re-search-forward re nil t) (or (re-search-forward re nil t) (setq fields (concat fields field ":" (buffer-substring-no-properties (point) (or (and (re-search-forward "^[^\n\t ]\\|^$" nil t) (match-beginning 0)) (point-max)))) existing-fields (append existing-fields (list field)))))) (or existing-fields (error "!! No fields to sign")) (goto-char (point-max)) (widen) (setq body (buffer-substring-no-properties (point) (point-max))) (setq buffer (set-buffer (get-buffer-create " *x-pgp-sig-msg-to-sign*"))) (setq buffer-read-only nil) (erase-buffer) (insert body) (or (bolp) (insert "\n")) (goto-char (point-min)) (insert x-pgp-sig-signed-headers-field-name ": " (mapconcat 'identity existing-fields ",") "\n" fields "\n") (cons existing-fields buffer))))) (defun x-pgp-sig-create-x-pgp-signature () "To sign the message and create field body." (let ((case-fold-search t) (msgs (x-pgp-sig-build-message-to-sign)) (passphrase (and (consp x-pgp-sig-current-signer) (x-pgp-sig-idea-decrypt-string (cdr (assoc (cdr x-pgp-sig-current-signer) x-pgp-sig-passphrase-alist))))) buffer result beg version) (when (or passphrase (setq passphrase (x-pgp-sig-set-signer))) (unwind-protect (save-excursion (set-buffer (setq buffer (cdr msgs))) (setq case-fold-search t) (run-hooks 'x-pgp-sig-prepare-sign-hook) (setq result (if x-pgp-sig-pgp-v5-p (x-pgp-sig-process-buffer (list "-fatu" (cdr x-pgp-sig-current-signer)) passphrase nil "s") (x-pgp-sig-process-buffer (list "-fastu" (cdr x-pgp-sig-current-signer)) passphrase))) (and result (apply 'x-pgp-sig-error "!! %s" result)) (run-hooks 'x-pgp-sig-post-sign-hook) (goto-char (point-min)) (or (re-search-forward (format "^%s\n" (regexp-quote x-pgp-sig-signed-begin-line)) nil t) (x-pgp-sig-error "!! Regexp \"%s\\n\" not found" (regexp-quote x-pgp-sig-signed-begin-line) buffer)) (setq beg (point)) (or (re-search-forward (format "^%s$" (regexp-quote x-pgp-sig-signed-end-line)) nil t) (x-pgp-sig-error "!! Regexp \"%s\$\" not found" (regexp-quote x-pgp-sig-signed-end-line) buffer)) (narrow-to-region beg (match-beginning 0)) (goto-char (point-min)) (setq version (or (and (re-search-forward (format "^version:.*[\t ]\\(%s\\.[^\n\t ]+\\)" (if x-pgp-sig-pgp-v5-p "5" "[0-4]")) nil t) (match-string 1)) "0.0")) (or (re-search-forward "\n\n\\([^\n\t ]\\)" nil t) (x-pgp-sig-error "!! Regexp \"\\n\\n\\\\(\[\^\\n\\t \]\\\\)\" not found" buffer)) (delete-region (point-min) (match-beginning 1)) (goto-char (point-min)) (insert version " " (mapconcat 'identity (car msgs) ",") "\n") (while (not (eobp)) (insert "\t") (end-of-line) (forward-char 1)) (setq msgs (buffer-substring (point-min) (1- (point-max))))) (kill-buffer buffer)) msgs))) (defun x-pgp-sig-build-message-to-verify (&optional buffer silent) "Extract header and body to verify in specified buffer." (if (and buffer (not (x-pgp-sig-buffer-live-p buffer))) (format "!! Buffer %s does not exist" (prin1-to-string buffer)) (and buffer (set-buffer (get-buffer buffer))) (let ((case-fold-search t) lines version beg end fields fieldsx field pgpsig pgphead body clines ldiff vbuff) (save-restriction (x-pgp-sig-narrow-to-header t) (and (re-search-forward "^lines:[\t ]+\\([0-9]+\\)" nil t) (setq lines (string-to-int (match-string 1)))) (goto-char (point-min)) (if (re-search-forward (format "^%s:%s%s" (regexp-quote x-pgp-sig-field-name) "[\t ]+\\([^\n\t ,]+\\)[\t ]+\\([^\n\t ]+\\)" "\\(\n\\([\t ]+.+\n\\)+\\|\\([\t ]+[^\n\t ]+\\)+\n\\)" ) nil t) (progn (setq version (match-string 1) beg (match-end 2) end (match-end 0)) (goto-char (match-beginning 2)) (while (re-search-forward "[^\n\t ,]+" beg t) (setq fields (append fields (list (match-string 0))))) (setq fieldsx fields) (goto-char beg) (while (re-search-forward "[\t ]+\\([^\n\t ]+\\)" end t) (setq pgpsig (concat pgpsig (match-string 1) "\n"))) (while (setq field (pop fields)) (goto-char (point-min)) (setq pgphead (concat pgphead field (or (and (re-search-forward (format "^\\(%s\\):\\([\t ]+.+\n\\)+" (regexp-quote field)) nil t) (buffer-substring-no-properties (match-end 1) (match-end 0))) ": \n")))) (goto-char (point-max)) (widen) (setq body (buffer-substring-no-properties (point) (point-max)) clines (count-lines (point) (point-max)) ldiff (or (and lines (- lines clines)) 0) vbuff (set-buffer (get-buffer-create " *x-pgp-sig-msg-to-verify*"))) (setq buffer-read-only nil) (erase-buffer) (insert body) (or (eolp) (insert "\n")) (goto-char (point-min)) (while (re-search-forward "^-" nil t) (replace-match "- -")) (goto-char (point-min)) (insert x-pgp-sig-signed-msg-begin-line "\n" "\n" x-pgp-sig-signed-headers-field-name ": " (mapconcat 'identity fieldsx ",") "\n" pgphead "\n") (goto-char (point-max)) (insert "\n" x-pgp-sig-signed-begin-line "\n" "Version: " version "\n" "\n" pgpsig x-pgp-sig-signed-end-line "\n") (cons ldiff vbuff)) (if silent "" (format "!! Field \"%s\" not found" x-pgp-sig-field-name))))))) (defun x-pgp-sig-put-field (field-name field-body) "Insert field without dragging faces." (let ((case-fold-search t) (re (format "^%s:" (regexp-quote field-name))) (last (format "^\\(%s\\):" (mapconcat 'identity x-pgp-sig-last-fields "\\|")))) (save-excursion (goto-char (point-min)) (save-restriction (narrow-to-region (point) (or (and (re-search-forward (format "^\\(%s\\)?\n" (regexp-quote mail-header-separator)) nil t) (match-beginning 0)) (point-max))) (goto-char (point-min)) (while (re-search-forward re nil t) (delete-region (match-beginning 0) (or (and (re-search-forward "^[^\n\t ]\\|^$" nil t) (match-beginning 0)) (point-max)))) (goto-char (point-min)) (if (re-search-forward last nil t) (goto-char (match-beginning 0)) (goto-char (point-max))) (unless (boundp 'x-pgp-sig-start-position) (make-local-variable 'x-pgp-sig-start-position) (setq x-pgp-sig-start-position (point))) (if (bobp) (insert field-name ": " field-body "\n") (backward-char 1) (insert "\n" field-name ": " field-body)) )))) (defun x-pgp-sig-add-signature-y-or-n-p () (y-or-n-p "Do you want to add X-PGP-Sig field? ")) (defun x-pgp-sig-enter-keyid (init) (let (kid kids) (completing-read "Enter the key's KeyID: " (delq nil (mapcar (function (lambda (elt) (setq kid (cdr elt)) (unless (member kid kids) (setq kids (cons kid kids)) (cons kid (car elt))))) (cdr x-pgp-sig-secret-key-alist))) nil t (cdr init)))) (defun x-pgp-sig-enter-uid (init) (completing-read "Enter the key's UserID: " (cdr x-pgp-sig-secret-key-alist) nil t (car init))) (defun x-pgp-sig-enter-uid-or-keyid (init) (let ((keys (cdr x-pgp-sig-secret-key-alist)) (ret (if x-pgp-sig-enter-keyid-first (x-pgp-sig-enter-keyid init) (x-pgp-sig-enter-uid init)))) (if (string-match "^[\t ]*$" ret) (if x-pgp-sig-enter-keyid-first (assoc (x-pgp-sig-enter-uid init) keys) (rassoc (x-pgp-sig-enter-keyid init) keys)) (if x-pgp-sig-enter-keyid-first (rassoc ret keys) (assoc ret keys))))) ;;; Commands and functions to be autoloaded. ;;;###autoload (defun x-pgp-sig-reserve-sign (&optional force) "Reserve sign or not sign before sending messages." (make-local-variable 'x-pgp-sig-reserve-sign-flag) (setq x-pgp-sig-reserve-sign-buffer (current-buffer) x-pgp-sig-reserve-sign-flag (or force x-pgp-sig-always-sign x-pgp-sig-enable-sign (and (fboundp x-pgp-sig-add-signature-judging-function) (funcall x-pgp-sig-add-signature-judging-function))))) ;;;###autoload (defun x-pgp-sig-cancel-reserve-sign () "Cancel reserve sign flag after sending messages." (and (x-pgp-sig-buffer-live-p x-pgp-sig-reserve-sign-buffer) (save-excursion (set-buffer x-pgp-sig-reserve-sign-buffer) (setq x-pgp-sig-reserve-sign-flag nil x-pgp-sig-reserve-sign-buffer nil)))) ;;;###autoload (defun x-pgp-sig-sign (&optional force) "Add X-PGP signature." (let ((case-fold-search t) (inhibit-read-only t) end clength signature keyinfo algorithm infofield fpfield) (save-excursion (save-restriction (widen) (unless (and x-pgp-sig-inhibit-repeated-sign (goto-char (point-min)) (search-forward "\n\n" nil t) (re-search-backward (format "^%s:" x-pgp-sig-field-name) nil t)) (goto-char (point-min)) (when (re-search-forward (format "^\\(%s\\)?\n" (regexp-quote mail-header-separator)) nil t) (setq end (match-beginning 0) clength (- (point-max) (match-end 0))) (goto-char (point-min)) (and (not (zerop clength)) (if (x-pgp-sig-buffer-live-p x-pgp-sig-reserve-sign-buffer) (save-excursion (set-buffer x-pgp-sig-reserve-sign-buffer) x-pgp-sig-reserve-sign-flag) (or force x-pgp-sig-always-sign (and (not (re-search-forward "^control:[\t ]*cancel\\|^resent-\\(to\\|cc\\):" end t)) (or x-pgp-sig-enable-sign (and (fboundp x-pgp-sig-add-signature-judging-function) (funcall x-pgp-sig-add-signature-judging-function) ))))) (when (setq signature (condition-case err (progn (message "Signing the message...") (let ((sig (x-pgp-sig-create-x-pgp-signature))) (and sig (message "Signing the message...done")) sig)) (error (message (if (and (listp err) (stringp (car (cdr err)))) (car (cdr err)) (prin1-to-string err))) nil))) (and x-pgp-sig-approved-field-body (re-search-forward "^control:" end t) (x-pgp-sig-put-field "Approved" x-pgp-sig-approved-field-body)) (and x-pgp-sig-x-info-field-body (x-pgp-sig-put-field "X-Info" x-pgp-sig-x-info-field-body)) (and x-pgp-sig-add-version-header (x-pgp-sig-put-field x-pgp-sig-version-field-name x-pgp-sig-version-field-body)) (setq keyinfo (assoc (cdr x-pgp-sig-current-signer) x-pgp-sig-secret-key-data-list) algorithm (nth 3 keyinfo) infofield (cdr (assoc algorithm x-pgp-sig-key-info-field-name-alist)) fpfield (cdr (assoc algorithm x-pgp-sig-fingerprint-field-name-alist))) (and x-pgp-sig-add-key-info-field infofield (x-pgp-sig-put-field infofield (format "%sbits, KeyID %s, Created %s, Algorithm %s" (nth 1 keyinfo) (car keyinfo) (nth 2 keyinfo) algorithm))) (and x-pgp-sig-add-fingerprint-field fpfield (x-pgp-sig-put-field fpfield (nth 4 keyinfo))) (x-pgp-sig-put-field x-pgp-sig-field-name signature) (goto-char x-pgp-sig-start-position) (run-hooks 'x-pgp-sig-sign-hook))))))) (setq x-pgp-sig-enable-sign nil))) ;;;###autoload (defun x-pgp-sig-set-signer (&optional signer passphrase) "Set PGP signer and passphrase." (interactive) (let ((uk (cond ((stringp signer) (or (x-pgp-sig-search-secret-key signer 'keyid) (x-pgp-sig-search-secret-key signer 'uid))) ((consp x-pgp-sig-current-signer) x-pgp-sig-current-signer) ((stringp x-pgp-sig-current-signer) (x-pgp-sig-search-secret-key x-pgp-sig-current-signer 'uid)) (t (x-pgp-sig-search-secret-key (user-login-name) 'uid)))) (interactive (interactive-p)) (case-fold-search t) (success t) result) (and (or interactive (not uk)) (setq uk (x-pgp-sig-enter-uid-or-keyid uk) interactive t)) (or interactive uk (error "!! Secret key for %s not found" (prin1-to-string signer))) (and (or interactive (not passphrase)) (setq passphrase (x-pgp-sig-read-noecho (format "PGP passphrase for %s (%s): " (car uk) (cdr uk)) t) interactive t)) (if (zerop (length passphrase)) (progn (message "!! Empty passphrase") (sit-for 1) nil) (and interactive (message "Confirming passphrase...") (let ((buffer (get-buffer-create x-pgp-sig-working-buffer))) (unwind-protect (save-excursion (set-buffer buffer) (setq buffer-read-only nil) (erase-buffer) (insert "**Confirmation**\n") (setq result (if x-pgp-sig-pgp-v5-p (x-pgp-sig-process-buffer (list "-fatu" (cdr uk)) passphrase nil "s") (x-pgp-sig-process-buffer (list "-fastu" (cdr uk)) passphrase))) (if result (if x-pgp-sig-debug (apply 'x-pgp-sig-error "!! %s" result) (message "!! %s" result) (sit-for 1) (setq success nil)) (message "Confirming passphrase...done"))) (kill-buffer buffer)))) (when success (setq x-pgp-sig-passphrase-alist (put-alist (cdr uk) (progn (message "Encrypting passphrase...") (x-pgp-sig-idea-encrypt-string passphrase)) x-pgp-sig-passphrase-alist)) (setq x-pgp-sig-current-signer uk) (message "The signer and the passphrase have been registered.") passphrase)))) ;;;###autoload (defun x-pgp-sig-set-signer-maybe () "Set PGP signer and passphrase if necessary." (interactive) (or (stringp x-pgp-sig-default-signer) (consp x-pgp-sig-default-signer) (setq x-pgp-sig-default-signer (format "%s <%s>" (user-full-name) x-pgp-sig-from))) (let ((uk (cond ((consp x-pgp-sig-current-signer) x-pgp-sig-current-signer) ((stringp x-pgp-sig-current-signer) (x-pgp-sig-search-secret-key x-pgp-sig-current-signer 'uid)) (t (x-pgp-sig-search-secret-key (user-login-name) 'uid)))) (default (x-pgp-sig-default-signer)) (minibuffer-setup-hook (and (boundp 'minibuffer-setup-hook) minibuffer-setup-hook)) default-key) (if uk (progn (or (if (stringp default) (progn (or (string-equal default (car uk)) (and (setq default-key (cdr (assoc default x-pgp-sig-secret-key-alist))) (string-equal (downcase default-key) (downcase (cdr uk)))))) (and (string-equal (car default) (car uk)) (string-equal (downcase (cdr default)) (downcase (cdr uk))))) (if (y-or-n-p (format "X-PGP signer %s (%s) is OK? " (car uk) (cdr uk))) (message "") (setq minibuffer-setup-hook (append minibuffer-setup-hook '(beginning-of-line)) uk (x-pgp-sig-enter-uid-or-keyid uk)))) (and uk (if (assoc (cdr uk) x-pgp-sig-passphrase-alist) (setq x-pgp-sig-current-signer uk) (x-pgp-sig-set-signer (cdr uk))))) (call-interactively 'x-pgp-sig-set-signer)))) ;;;###autoload (defun x-pgp-sig-switch-signing (&optional switch) "Judging whether to add X-PGP signature." (interactive (list (y-or-n-p (format "Do you want to add %s field? " x-pgp-sig-field-name)))) (let ((msg "This message will %sbe signed.")) (if (setq x-pgp-sig-enable-sign (not (not switch))) (progn (and (boundp 'mime-edit-pgp-processing) (eq mime-edit-pgp-processing 'sign) (setq mime-edit-pgp-processing nil)) (and (boundp 'mime-editor/pgp-processing) (eq mime-editor/pgp-processing 'sign) (setq mime-editor/pgp-processing nil)) (setq msg (format msg ""))) (setq msg (format msg "not "))) (and (interactive-p) (message msg)))) (defun x-pgp-sig-fetch-key (pgp-id) (cond ((and x-pgp-sig-use-mime-pgp-fetch-key (or (featurep 'mime-pgp) (load "mime-pgp" t)) (fboundp 'mime-pgp-fetch-key)) (let ((mime-preview-buffer (if (and (get-buffer mime-echo-buffer-name) (get-buffer-window mime-echo-buffer-name)) mime-preview-buffer (window-buffer (get-largest-window)))) (pgp-version (if x-pgp-sig-pgp-v5-p 'pgp50 'pgp))) (mime-pgp-fetch-key (cons pgp-id nil)))) (x-pgp-sig-pgp-v5-p (mc-pgp50-fetch-key (cons pgp-id nil))) (t (mc-pgp-fetch-key (cons pgp-id nil))))) ;;;###autoload (defun x-pgp-sig-verify () "Verify X-PGP signature in current message." (interactive) (let ((method (assq (or (and (boundp 'mime-raw-buffer) mime-raw-buffer (save-excursion (set-buffer mime-raw-buffer) major-mode)) (and (boundp 'mime-preview-original-major-mode) mime-preview-original-major-mode) (and (boundp 'mime-view-original-major-mode) mime-view-original-major-mode) (and (boundp 'mime::preview/original-major-mode) mime::preview/original-major-mode) major-mode) x-pgp-sig-verify-method-alist)) (delete x-pgp-sig-delete-last-empty-line-while-verifying) (re (format "\\(\n+\\)%s" (regexp-quote x-pgp-sig-signed-begin-line))) (count 0) prepare buffer post vbuff vbuf2 ldiff plus newlines nokey good bad pgp-id) (and method (setq method (cdr method) prepare (car method) buffer (car (cdr method)) post (car (cdr (cdr method))))) (and (interactive-p) (message "Verifying signature...")) (and prepare (funcall prepare)) (setq buffer (condition-case () (if (fboundp buffer) (funcall buffer) (symbol-value buffer)) (error nil))) (or (x-pgp-sig-buffer-live-p buffer) (setq buffer (current-buffer))) (save-excursion (setq vbuff (x-pgp-sig-build-message-to-verify buffer (not (interactive-p)))) (unless (stringp vbuff) (setq ldiff (car vbuff) plus (if (>= ldiff 0) "+" "") vbuff (set-buffer (cdr vbuff))) (if (zerop ldiff) (message "Verifying signature...") (message "(%s%d/0) Verifying signature..." plus ldiff)) (goto-char (point-min)) (setq newlines (or (and (re-search-forward re nil t) (length (match-string 1))) 0)) (setq vbuf2 (set-buffer (get-buffer-create " *x-pgp-sig-msg-to-verify-2*"))) (setq buffer-read-only nil) (while (and (or delete (not (or good bad))) (not nokey)) (erase-buffer) (insert-buffer-substring vbuff) (and delete (> count 0) (> newlines (1+ count)) (goto-char (point-min)) (re-search-forward re nil t) (goto-char (match-beginning 0)) (message "(%s%d/-%d) Verifying signature..." plus ldiff count) (delete-char count)) (or (> newlines (+ 2 count)) (setq delete nil)) (if x-pgp-sig-pgp-v5-p (x-pgp-sig-process-buffer '("-f") nil vbuf2 "v") (x-pgp-sig-process-buffer '("-f") nil vbuf2)) (incf count) (if x-pgp-sig-pgp-v5-p (progn (goto-char (point-max)) (and (re-search-backward x-pgp-sig-pgp-v5-result-regexp nil t) (looking-at (cadr x-pgp-sig-good-signature-regexps)) (progn (forward-line 2) (skip-chars-forward " ") (setq good (format "Good signature from user %s." (buffer-substring-no-properties (point) (progn (end-of-line) (point)))) delete nil)))) (goto-char (point-min)) (and (re-search-forward (car x-pgp-sig-good-signature-regexps) nil t) (setq good (match-string 0) delete nil))) (if (if x-pgp-sig-pgp-v5-p (progn (goto-char (point-max)) (forward-line (if (featurep 'xemacs) -3 -1)) (looking-at (cadr x-pgp-sig-expected-regexps))) (goto-char (point-min)) (re-search-forward (car x-pgp-sig-expected-regexps) nil t)) (progn (setq pgp-id (concat "0x" (buffer-substring-no-properties (match-beginning 1) (match-end 1)))) (or (and (or (boundp 'mc-pgp-always-fetch) (condition-case () (load-library "mc-pgp")) (error nil)) (not (eq mc-pgp-always-fetch 'never)) (or mc-pgp-always-fetch (or (y-or-n-p (format "Key %s not found; attempt to fetch? " pgp-id)) (progn (setq good "Aborted") nil))) (x-pgp-sig-fetch-key pgp-id) (setq count 0)) (setq bad (format "!! Key %s not found" pgp-id) nokey t))) (if x-pgp-sig-pgp-v5-p (progn (goto-char (point-max)) (setq bad (format "!! Bad signature%s" (or (and (re-search-backward x-pgp-sig-pgp-v5-result-regexp nil t) (looking-at (cadr x-pgp-sig-bad-signature-regexps)) (progn (forward-line 2) (skip-chars-forward " ") (format " from user %s." (buffer-substring-no-properties (point) (progn (end-of-line) (point)))))) "")))) (goto-char (point-min)) (setq bad (concat "!! " (or (and (re-search-forward (car x-pgp-sig-bad-signature-regexps) nil t) (match-string 1)) "Bad signature")))) )))) (if (stringp vbuff) (message vbuff) (and vbuff (kill-buffer vbuff)) (and vbuf2 (if (and x-pgp-sig-debug (not good) bad) (progn (pop-to-buffer vbuf2) (and x-pgp-sig-pgp-v5-p (goto-char (point-max)) (recenter (1- (window-height))))) (kill-buffer vbuf2))) (and post (funcall post)) (and (x-pgp-sig-buffer-live-p x-pgp-sig-msg-to-verify-buffer) (kill-buffer x-pgp-sig-msg-to-verify-buffer)) (decf count) (message "%s%s" (if (and (zerop ldiff) (zerop count)) "" (format "(%s%d/-%d) " plus ldiff count)) (or good bad))))) ;;; GNUS, Gnus, Semi-Gnus (eval-when-compile (autoload 'mime-find-field-decoder "eword-decode") ;; Pickup the macro `gnus-summary-article-number'. (load "gnus-sum" t) ) (defun x-pgp-sig-gnus-get-article () (and (boundp 'gnus-article-display-hook) (memq 'x-pgp-sig-verify-for-gnus gnus-article-display-hook) (setq gnus-article-display-hook (append (delq 'x-pgp-sig-verify-for-gnus gnus-article-display-hook) '(x-pgp-sig-verify-for-gnus)))) (or (and (boundp 'gnus-original-article-buffer) (x-pgp-sig-buffer-live-p gnus-original-article-buffer) (eq gnus-current-article (gnus-summary-article-number))) (cond ((eq 'gnus-summary-mode major-mode) (if (boundp 'gnus-original-article-buffer) ; >= v5.2 (gnus-summary-show-article) ; <= v5.1 (let ((gnus-show-all-headers t) gnus-show-mime) (gnus-summary-show-article)))) ((eq 'gnus-Subject-mode major-mode) ; <= 3.14.4 (let ((gnus-show-all-headers t)) (gnus-Subject-show-article)))))) (defun x-pgp-sig-find-gnus-article-buffer () "Find article buffer may includes X-PGP-Sig field." (or (and (boundp 'gnus-original-article-buffer) (x-pgp-sig-buffer-live-p gnus-original-article-buffer)) (and (boundp 'gnus-article-buffer) (x-pgp-sig-buffer-live-p gnus-article-buffer)) (and (boundp 'gnus-Article-buffer) (x-pgp-sig-buffer-live-p gnus-Article-buffer)))) (defun x-pgp-sig-gnus-unwind-after-verify () (or (boundp 'gnus-original-article-buffer) (cond ((eq 'gnus-summary-mode major-mode) (gnus-summary-show-article)) ((eq 'gnus-Subject-mode major-mode) (gnus-Subject-show-article))))) (defvar x-pgp-sig-verify-for-gnus-unread-articles nil) (setq-default x-pgp-sig-verify-for-gnus-unread-articles nil) (defun x-pgp-sig-verify-for-gnus () (unless (car x-pgp-sig-verify-for-gnus-unread-articles) (make-local-variable 'x-pgp-sig-verify-for-gnus-unread-articles) (setq x-pgp-sig-verify-for-gnus-unread-articles (cons t (gnus-list-of-unread-articles gnus-newsgroup-name)))) (and gnus-show-mime gnus-current-article (not (zerop gnus-current-article)) (when (memq gnus-current-article x-pgp-sig-verify-for-gnus-unread-articles) (setq x-pgp-sig-verify-for-gnus-unread-articles (delq gnus-current-article x-pgp-sig-verify-for-gnus-unread-articles)) (gnus-summary-goto-subject gnus-current-article) (gnus-summary-recenter) (x-pgp-sig-verify)))) ;;; MH-E (defun x-pgp-sig-mh-get-article () "Get current message in article buffer." (let ((file (format "%s%d" mh-folder-filename (mh-get-msg-num t)))) (save-excursion (setq x-pgp-sig-msg-to-verify-buffer (set-buffer (get-buffer-create " *x-pgp-sig-tmp-article*"))) (setq buffer-read-only nil) (erase-buffer) (x-pgp-sig-insert-file-contents-no-conversion file) (x-pgp-sig-delcr)))) ;;; Mew (eval-when-compile (if (or (featurep 'use-mew-1.94b20-or-later) (and (fboundp 'function-max-args) (or (fboundp 'mew-summary-display) (load "mew-summary" t)) (eq 2 (function-max-args 'mew-summary-display)))) (progn (defmacro x-pgp-sig-mew-summary-display () '(mew-summary-display t)) (message "Use mew-1.94b20 or later.")) (defmacro x-pgp-sig-mew-summary-display () '(condition-case nil (mew-summary-display) (wrong-number-of-arguments (mew-summary-display t)))) )) (defun x-pgp-sig-mew-get-article () "Get current message in article buffer." (and (if (fboundp 'mew-summary-goto-message) (mew-summary-goto-message) ;; >= 1.93b19 (mew-summary-part-number) ;; <= 1.93b17 (re-search-backward mew-summary-message-regex nil t)) (x-pgp-sig-mew-summary-display)) (let ((file (if (fboundp 'mew-expand-folder) (mew-expand-folder (mew-summary-folder-name) ;; Mew 1.78 - (mew-summary-message-number)) (mew-expand-file-name (mew-summary-message-number) ;; - Mew 1.76 (mew-summary-folder-name))))) (save-excursion (setq x-pgp-sig-msg-to-verify-buffer (set-buffer (get-buffer-create " *x-pgp-sig-tmp-article*"))) (setq buffer-read-only nil) (erase-buffer) (x-pgp-sig-insert-file-contents-no-conversion file) (x-pgp-sig-delcr)))) (defun x-pgp-sig-mew-encode-message-header-with-semi () "Encode the message header to MIME format with SEMI." (require 'eword-encode) (eword-encode-header)) (defun x-pgp-sig-mew-encode-message-header-with-tm () "Encode the message header to MIME format with tm." (require 'tm-ew-e) (mime/encode-message-header)) (defun x-pgp-sig-mew-encode-message-header-with-toMime () "Encode the message header to MIME format with toMime." (save-excursion (save-restriction (x-pgp-sig-narrow-to-header) (let ( ; Mule-2.x (input-coding-system '*noconv*) (output-coding-system mew-cs-mime-trans) ; Emacs 20, XEmacs (coding-system-for-read 'binary) (coding-system-for-write mew-cs-mime-trans) ) (apply 'call-process-region (point-min) (point-max) x-pgp-sig-toMime-program t t nil x-pgp-sig-toMime-options))))) (defun x-pgp-sig-mew-encode-message () "Encode the message to the network code." (save-excursion (save-restriction (widen) (let ((inhibit-read-only t)) (put-text-property (point-min) (point-max) 'read-only nil)) (make-local-variable 'mail-header-separator) (setq mail-header-separator mew-header-separator buffer-read-only nil) (and x-pgp-sig-mew-encode-message-header-function (funcall x-pgp-sig-mew-encode-message-header-function)) (goto-char (point-min)) (and (re-search-forward "\\cj\\|\\ch\\|\\ck" nil t) (mew-cs-encode-region (point-min) (point-max) mew-cs-mime-trans))))) (defun x-pgp-sig-mew-encode-coding-and-sign (&optional force) "Encode the message to the network code and sign." (let ((inhibit-read-only t)) (put-text-property (point-min) (point-max) 'read-only nil)) (mew-cs-encode-region (point-min) (point-max) mew-cs-mime-trans) (x-pgp-sig-sign force)) ;;; cmail (defun x-pgp-sig-cmail-get-article () "Get current message in article buffer." (let ((page (cmail-get-page-number-from-summary)) (folder (get-buffer (cmail-folder-buffer cmail-current-folder))) beg end) (save-excursion (set-buffer folder) (cmail-n-page page) (setq beg (point)) (cmail-n-page (1+ page)) (forward-line -1) (setq end (point)) (setq x-pgp-sig-msg-to-verify-buffer (set-buffer (get-buffer-create " *x-pgp-sig-tmp-article*"))) (setq buffer-read-only nil) (erase-buffer) (insert-buffer-substring folder beg end)))) ;;; VM (eval-when-compile ;; Pickup the macro `vm-select-folder-buffer'. (unless (load "vm-macro" t) (load "vm-misc" t) ;; For old VM. ) ;; Pickup the macros 'vm-headers-of' and `vm-text-end-of'. (load "vm-message" t) ) (defun x-pgp-sig-vm-get-article () (and (eq 'vm-summary-mode major-mode) (vm-follow-summary-cursor)) (vm-select-folder-buffer) (let ((mp (car vm-message-pointer))) (save-restriction (widen) (copy-to-buffer (setq x-pgp-sig-msg-to-verify-buffer (get-buffer-create " *x-pgp-sig-tmp-article*")) (vm-headers-of mp) (vm-text-end-of mp))))) ;;; Wanderlust (defun x-pgp-sig-wl-get-article () "Get current message in article buffer." (save-excursion (let ((message-buf (wl-message-get-original-buffer))) (wl-summary-set-message-buffer-or-redisplay) (setq x-pgp-sig-msg-to-verify-buffer (set-buffer (get-buffer-create " *x-pgp-sig-tmp-article*"))) (setq buffer-read-only nil) (erase-buffer) (insert-buffer-substring message-buf)))) (and (featurep 'x-pgp-sig) (run-hooks 'x-pgp-sig-reload-hook)) (provide 'x-pgp-sig) (run-hooks 'x-pgp-sig-load-hook) ;;; x-pgp-sig.el ends here.