Commits

youngs  committed cf632ed

2002-10-03 Steve Youngs <youngs@xemacs.org>

* Makefile (MANUAL): Removed.
(EXTRA_SOURCES): Add README.dev, ChangeLog.1, WARNINGS
(AUTHOR_VERSION): Bump to 3.5.8.

2002-09-26 Brian Warner <warner@lothar.com>

* mailcrypt: Release mailcrypt 3.5.8

* mailcrypt.texi (VERSION): bumped to 3.5.8

* mailcrypt.el (mc-version): bumped to 3.5.8

* ANNOUNCE: update for 3.5.8

* NEWS: final updates for 3.5.8

2002-09-24 Brian Warner <warner@lothar.com>

* tests/remailer/Makefile.in (have-py-gnupg.stamp): check for
GnuPGInterface before attempting to run tests

* NEWS: mention remailer test framework

* configure.in (AC_OUTPUT): build tests/remailer/Makefile too

* NEWS: begin to write up changes for next release

* README.dev: explain regenerating keys/testcases a bit more

* mc-gpg.el (mc-gpg-always-fetch): Add missing defvar. Fixes
free-variable warning during byte-compiling. Default value is
'never, unlike pgp2 and pgp5, because mc-gpg-fetch-key is
unimplemented.
(mc-gpg-decrypt-region,mc-gpg-sign-region): Use keyid as index for
mc-activate-passwd, not key name. Thanks to Alexander Zangerl for
the catch. This is especially helpful for folks who use multiple
keys with the same name but with different passphrases: the wrong
cached passphrase would be used for the second key.

2002-07-30 Brian Warner <warner@lothar.com>

* mc-remail.el
(mc-remailer-preserved-headers, mc-rewrite-for-remailer): Merge
handling of Subject: header in with other preserved headers
instead of handling it specially. This should get Subject: put
into the ## section instead of the :: section, so most remailers
should copy it into the final message, allowing you to specify the
subject of the final plaintext email once more. Thanks to an
anonymous sourceforge bug submitter for the suggestion.
(mc-generic-pre-encrypt-function): Use Anon-To: instead of
Request-Remailing-To:, as the docs for modern remailers (defined
as MixMaster-2.9b33) prefers that command, even though they'll
still accept the old one. Remove the 'eric' remailer case (which
used Anon-Send-To:), because they've all gone away.

Note: I might have broken mixmaster 'Subject:' line support with
this change. It will be a few days before I can put together a
test setup to make sure I didn't.

2002-07-29 Brian Warner <warner@lothar.com>

* mailcrypt.texi (Remailer Quick Start): Update finger addresses
for remailer lists again, since frog's list seems to keep moving
around. Point at shinn, also mention noisebox and efga.

2002-07-23 Brian Warner <warner@lothar.com>

* mailcrypt.texi (Remailer Quick Start): Suggest
rlist@mixmaster.shinn.net too, point to mc-levien-file-name
docstring for details of the file format. Thanks to Jari Aalto for
the suggestion.

* mc-remail.el (mc-levien-file-name): Update docstring to suggest
'filter rlist@noisebox.remailer.org' to get the list, rather than
the defunct publius.net site. Suggest rlist@mixmaster.shinn.net
too.

* mailcrypt.el (mc-temp-directory): Use (temp-directory),
temporary-file-directory, or "/tmp/", as available. Fixes error
when used from XEmacs21. Thanks to Peter Galbraith for the catch
and the patch.

2002-07-08 Brian Warner <warner@lothar.com>

* mailcrypt: Release mailcrypt 3.5.7

2002-07-07 Brian Warner <warner@lothar.com>

* ANNOUNCE: update for 3.5.7

* NEWS: finalized 3.5.7 change section

* mailcrypt.el (mc-version): bumped to 3.5.7

* mailcrypt.texi (VERSION): bumped to 3.5.7

* README.dev: Add my checklist for making a release.

2002-06-12 Brian Warner <warner@lothar.com>

* NEWS: summarize changes since 3.5.6

* mc-toplev.el (mc-mew-decrypt-message): remove unnecessary progn
(mc-mh-decrypt-message): Switch read-only off briefly when decrypting
mh-e buffers. Thanks to Peter Galbraith for the patch.

* mailcrypt.el (mc-modes-alist): add mew-summary-mode functions

* mc-toplev.el (mc-mew-decrypt-message): Add functions to decrypt
in Mew message buffers. No replace-with-decrypted functions yet,
this is just a hack which flips the read-only flag off while the
message is being processed. As a result the decrypted text simply
vanishes when you switch to a different message.
(mc-mew-summary-decrypt-message)
(mc-mew-summary-verify-signature)
(mc-mew-summary-snarf-keys): functions to use in mew-summary-mode,
which know how to switch to the right message buffer before doing
anything on the actual message.
(eval-when-compile): add some mew autoloads to shush compile warnings

2002-06-11 Brian Warner <warner@lothar.com>

* mc-toplev.el: start planning Mew functions

2002-06-10 Brian Warner <warner@lothar.com>

* mailcrypt.el (mc-version): bump to "3.5.6+" while we're
in-between releases. If you distribute such intermediate versions,
make sure they're clearly labeled as coming out of CVS.
(mc-modes-alist): add case for mew-draft-mode, behaves just like
message-mode.

* mailcrypt.texi (Hooking into Mew): added blurb about how to glue
into Mew, and why you might not want to.

* mailcrypt.el (mc-message-sigstatus): Added function to emit status
messages, is redefined by the test harness to compare output status
against expected values.
* mc-gpg.el: Use mc-message-sigstatus instead of raw message().
* README.dev: added notes on how to build from CVS, how to create
test cases.

2001-11-21 Brian Warner <warner@lothar.com>

* mailcrypt.el (mc-temp-directory): use temporary-file-directory
instead of hardwired "/tmp". Might help NT. Thanks to Jason Rumney
and RMS for the fix.

2001-11-19 Brian Warner <warner@lothar.com>

* mailcrypt.texi: add @dircategory "Emacs" section entry. Only
really useful for texinfo's 'install-info'.

* mailcrypt.texi: embed menu entry text with @direntry section.

2001-11-05 Brian Warner <warner@lothar.com>

* ChangeLog.1: revived the real old ChangeLog as
ChangeLog.1 . Patrick's original changelog text was in
ChangeLog.old v1.1 and disappeared because of a merge
problem. Used .1 instead of .old to make life with CVS easier, at
the request of the debian maintainer Davide Salvetti.

* ChangeLog, ChangeLog.old: merged ChangeLogs, removed .old, which
wasn't really old and overlapped the real one.

* mailcrypt.texi (Key Fetching): Add reminder about GnuPG's internal
keyserver support. Thanks to Dan Girellini.

2001-10-24 Brian Warner <warner@lothar.com>

* mailcrypt.texi (Remailer Support): update pointers for remailer
lists, remailer keyrings.. the old ones have gone away by now.

2001-09-25 Brian Warner <warner@lothar.com>

* mc-gpg.el (mc-gpg-comment): Remove the GnuPG URL, now that gpg adds
its own Version: header.
(mc-gpg-extra-args,mc-gpg-debug-buffer): Turn into defvar, because
otherwise setq statements in user's .emacs file get overridden. I
use this to point to a separate secret keyring (on removeable
media) in my .emacs and somehow it took months for me to realize
that it didn't actually work.

* mc-gpg.el (mc-gpg-lookup-key): Use UTF-8 when asking user for a
passphrase (if UTF-8 is available), patch adapted from Debian
version, thanks to Francesco Potorti.

2001-09-18 Brian Warner <warner@lothar.com>

* mc-toplev.el (autoloads): added gnus-summary autoloads, patch
from XEmacs version, thanks to Steve Youngs.

* README.gpg: update GnuPG home page, version numbers.

* mc-gpg.el (mc-gpg-process-region): Another patch from Pavel Janík:
mc-gpg-debug-buffer is not always bound.

2001-06-23 Brian Warner <warner@lothar.com>

* mc-setversion.el (mc-default-scheme): Fix typo. Thanks to Pavel
Janík for the catch.

* mc-gpg.el (mc-gpg-encrypt-region): Use --recipient instead of
old --remote-user to specify encryption target. This has been the
standard argument name since gnupg-0.9.3, --remote-user is not
documented and probably shouldn't be used. Unfortunately
--recipient didn't exist in gnupg-0.9.2 and before, so this will
break compatibility with ancient versions (where ancient = over
two years old.. not something to worry about). Thanks to Filip
Stokkeland for the catch.

  • Participants
  • Parent commits 6db9e73

Comments (0)

Files changed (16)

-  Mailcrypt 3.5.6 is Available for Download
+  Mailcrypt 3.5.8 is Available for Download
 
 
   1.  Introduction
 
-
   Mailcrypt is an Emacs Lisp package which provides a simple interface
   to message encryption with PGP (you do use Emacs to handle your mail
-  and news, right?).  Mailcrypt version 3.5b1 and higher have been
-  extended to handle both PGP 2.6.x and PGP 5.x.  Versions 3.5 and
-  higher, including 3.5.6, also support encryption with GnuPG.
+  and news, right?).  The current version of Mailcrypt handles PGP 2.6.x,
+  PGP 5.x, and GnuPG 1.x .
 
 
   2.  Features
 
   2.1. New in this Release
 
-  This release is contains no new features.  A one-character fix was
-  made to support the use of the latest GnuPG (gpg-1.0.5), some old
-  bugfixes (that have languished in CVS for an embarrassingly long
-  time) have been merged into the release, and the documentation was
-  updated to point to MailCrypt's new home on sourceforge.net.
+  This is mainly a bugfix release. Anonymous remailer support was updated to
+  match modern remailers, and the GPG passphrase code was changed to cache
+  by keyid instead of name, which will help folks who use multiple keys with
+  the same name but different passphrases.
 
 
   2.2.	Stable Features for PGP 5.0 and GnuPG
   o  Refine Mailcrypt schemes so that alternate backends, like Crypt++,
      can be used.
 
-  o  Build self-test framework.
+  o  Expand self-test framework.
 
 
   3.  Downloading Mailcrypt
 
-  The Official Mailcrypt version 3.5.6 can be downloaded at:
+  The Official Mailcrypt version 3.5.8 can be downloaded at:
 
   <http://mailcrypt.sourceforge.net>
 
   <ftp://cag.lcs.mit.edu/pub/patl/>
 
   Share and Enjoy!
-	- Brian Warner <warner@lothar.com>
+	- Brian Warner <warner-mailcrypt@lothar.com>
 	- Len Budney <lbudney@pobox.com>
+2002-10-03  Steve Youngs  <youngs@xemacs.org>
+
+	* Makefile (MANUAL): Removed.
+	(EXTRA_SOURCES): Add README.dev, ChangeLog.1, WARNINGS
+	(AUTHOR_VERSION): Bump to 3.5.8.
+
+2002-09-26  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt: Release mailcrypt 3.5.8
+
+	* mailcrypt.texi (VERSION): bumped to 3.5.8
+
+	* mailcrypt.el (mc-version): bumped to 3.5.8
+
+	* ANNOUNCE: update for 3.5.8
+
+	* NEWS: final updates for 3.5.8
+
+2002-09-24  Brian Warner  <warner@lothar.com>
+
+	* tests/remailer/Makefile.in (have-py-gnupg.stamp): check for
+	GnuPGInterface before attempting to run tests
+
+	* NEWS: mention remailer test framework
+
+	* configure.in (AC_OUTPUT): build tests/remailer/Makefile too
+
+	* NEWS: begin to write up changes for next release
+
+	* README.dev: explain regenerating keys/testcases a bit more
+
+	* mc-gpg.el (mc-gpg-always-fetch): Add missing defvar. Fixes
+	free-variable warning during byte-compiling. Default value is
+	'never, unlike pgp2 and pgp5, because mc-gpg-fetch-key is
+	unimplemented.
+	(mc-gpg-decrypt-region,mc-gpg-sign-region): Use keyid as index for
+	mc-activate-passwd, not key name. Thanks to Alexander Zangerl for
+	the catch. This is especially helpful for folks who use multiple
+	keys with the same name but with different passphrases: the wrong
+	cached passphrase would be used for the second key.
+
+
+2002-07-30  Brian Warner  <warner@lothar.com>
+
+	* mc-remail.el
+	(mc-remailer-preserved-headers, mc-rewrite-for-remailer): Merge
+	handling of Subject: header in with other preserved headers
+	instead of handling it specially. This should get Subject: put
+	into the ## section instead of the :: section, so most remailers
+	should copy it into the final message, allowing you to specify the
+	subject of the final plaintext email once more. Thanks to an
+	anonymous sourceforge bug submitter for the suggestion.
+	(mc-generic-pre-encrypt-function): Use Anon-To: instead of
+	Request-Remailing-To:, as the docs for modern remailers (defined
+	as MixMaster-2.9b33) prefers that command, even though they'll
+	still accept the old one. Remove the 'eric' remailer case (which
+	used Anon-Send-To:), because they've all gone away.
+
+	Note: I might have broken mixmaster 'Subject:' line support with
+	this change. It will be a few days before I can put together a
+	test setup to make sure I didn't.
+
+2002-07-29  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.texi (Remailer Quick Start): Update finger addresses
+	for remailer lists again, since frog's list seems to keep moving
+	around. Point at shinn, also mention noisebox and efga.
+
+2002-07-23  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.texi (Remailer Quick Start): Suggest
+	rlist@mixmaster.shinn.net too, point to mc-levien-file-name
+	docstring for details of the file format. Thanks to Jari Aalto for
+	the suggestion.
+
+	* mc-remail.el (mc-levien-file-name): Update docstring to suggest
+	'filter rlist@noisebox.remailer.org' to get the list, rather than
+	the defunct publius.net site. Suggest rlist@mixmaster.shinn.net
+	too.
+
+	* mailcrypt.el (mc-temp-directory): Use (temp-directory),
+	temporary-file-directory, or "/tmp/", as available. Fixes error
+	when used from XEmacs21. Thanks to Peter Galbraith for the catch
+	and the patch.
+
+2002-07-08  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt: Release mailcrypt 3.5.7
+
+2002-07-07  Brian Warner  <warner@lothar.com>
+
+	* ANNOUNCE: update for 3.5.7
+
+	* NEWS: finalized 3.5.7 change section
+
+	* mailcrypt.el (mc-version): bumped to 3.5.7
+
+	* mailcrypt.texi (VERSION): bumped to 3.5.7
+
+	* README.dev: Add my checklist for making a release.
+
+2002-06-12  Brian Warner  <warner@lothar.com>
+
+	* NEWS: summarize changes since 3.5.6
+
+	* mc-toplev.el (mc-mew-decrypt-message): remove unnecessary progn
+	(mc-mh-decrypt-message): Switch read-only off briefly when decrypting
+	mh-e buffers. Thanks to Peter Galbraith for the patch.
+
+	* mailcrypt.el (mc-modes-alist): add mew-summary-mode functions
+
+	* mc-toplev.el (mc-mew-decrypt-message): Add functions to decrypt
+	in Mew message buffers. No replace-with-decrypted functions yet,
+	this is just a hack which flips the read-only flag off while the
+	message is being processed. As a result the decrypted text simply
+	vanishes when you switch to a different message.
+	(mc-mew-summary-decrypt-message)
+	(mc-mew-summary-verify-signature)
+	(mc-mew-summary-snarf-keys): functions to use in mew-summary-mode,
+	which know how to switch to the right message buffer before doing
+	anything on the actual message.
+	(eval-when-compile): add some mew autoloads to shush compile warnings
+
+2002-06-11  Brian Warner  <warner@lothar.com>
+
+	* mc-toplev.el: start planning Mew functions
+
+2002-06-10  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.el (mc-version): bump to "3.5.6+" while we're
+	in-between releases. If you distribute such intermediate versions,
+	make sure they're clearly labeled as coming out of CVS.
+	(mc-modes-alist): add case for mew-draft-mode, behaves just like
+	message-mode.
+
+	* mailcrypt.texi (Hooking into Mew): added blurb about how to glue
+	into Mew, and why you might not want to.
+	
+	* mailcrypt.el (mc-message-sigstatus): Added function to emit status
+	messages, is redefined by the test harness to compare output status
+	against expected values.
+	* mc-gpg.el: Use mc-message-sigstatus instead of raw message().
+	* README.dev: added notes on how to build from CVS, how to create
+	test cases.
+
+2001-11-21  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.el (mc-temp-directory): use temporary-file-directory
+	instead of hardwired "/tmp". Might help NT. Thanks to Jason Rumney
+	and RMS for the fix.
+
+2001-11-19  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.texi: add @dircategory "Emacs" section entry. Only
+	really useful for texinfo's 'install-info'.
+
+	* mailcrypt.texi: embed menu entry text with @direntry section.
+
+2001-11-05  Brian Warner  <warner@lothar.com>
+
+	* ChangeLog.1: revived the real old ChangeLog as
+	ChangeLog.1 .  Patrick's original changelog text was in
+	ChangeLog.old v1.1 and disappeared because of a merge
+	problem. Used .1 instead of .old to make life with CVS easier, at
+	the request of the debian maintainer Davide Salvetti.
+
+	* ChangeLog, ChangeLog.old: merged ChangeLogs, removed .old, which
+	wasn't really old and overlapped the real one.
+
+	* mailcrypt.texi (Key Fetching): Add reminder about GnuPG's internal
+	keyserver support. Thanks to Dan Girellini.
+
+2001-10-24  Brian Warner  <warner@lothar.com>
+
+	* mailcrypt.texi (Remailer Support): update pointers for remailer
+	lists, remailer keyrings.. the old ones have gone away by now.
+
+2001-09-25  Brian Warner  <warner@lothar.com>
+
+	* mc-gpg.el (mc-gpg-comment): Remove the GnuPG URL, now that gpg adds
+	its own Version: header.
+	(mc-gpg-extra-args,mc-gpg-debug-buffer): Turn into defvar, because
+	otherwise setq statements in user's .emacs file get overridden. I
+	use this to point to a separate secret keyring (on removeable
+	media) in my .emacs and somehow it took months for me to realize
+	that it didn't actually work.
+
+	* mc-gpg.el (mc-gpg-lookup-key): Use UTF-8 when asking user for a
+	passphrase (if UTF-8 is available), patch adapted from Debian
+	version, thanks to Francesco Potorti.
+
+2001-09-18  Brian Warner  <warner@lothar.com>
+
+	* mc-toplev.el (autoloads): added gnus-summary autoloads, patch
+	from XEmacs version, thanks to Steve Youngs.
+
+	* README.gpg: update GnuPG home page, version numbers.
+
+	* mc-gpg.el (mc-gpg-process-region): Another patch from Pavel Jan�k:
+	mc-gpg-debug-buffer is not always bound.
+
+2001-06-23  Brian Warner  <warner@lothar.com>
+
+	* mc-setversion.el (mc-default-scheme): Fix typo. Thanks to Pavel
+	Jan�k for the catch.
+
+	* mc-gpg.el (mc-gpg-encrypt-region): Use --recipient instead of
+	old --remote-user to specify encryption target. This has been the
+	standard argument name since gnupg-0.9.3, --remote-user is not
+	documented and probably shouldn't be used. Unfortunately
+	--recipient didn't exist in gnupg-0.9.2 and before, so this will
+	break compatibility with ancient versions (where ancient = over
+	two years old.. not something to worry about). Thanks to Filip
+	Stokkeland for the catch.
+
 2002-07-16  Adrian Aichner  <adrian@xemacs.org>
 
 	* .cvsignore: Add generated .info* and .html files.
+Sat May 02 10:08:30 1998  Leonard R. Budney <lbudney@pobox.com>
+
+	* Fixed a bug in mc-pgpk which broke mailcrypt for small
+	PGP keys; contributed by Eric Newton <ecn@smart.net>.
+
+Sat Jan 31 20:05:30 1998  Leonard R. Budney <lbudney@pobox.com>
+
+	* Version 3.5 released.
+
+	* mc-pgp.el: parsers were extracted into two files, mc-pgp2.el and
+	mc-pgp5.el to support multiple PGP versions.
+
+	* mailcrypt.el: (mc-process-region) was cloned into two functions,
+	mc-pgp2-process-region and mc-pgp5-process-region, because
+	handling of PGP 5.0 is done very differently due to a broken
+	batchmode.
+
+	* mc-setversion.el: (mc-setversion) was added to toggle between
+	various PGP versions.
+
+	* expect.el: This file was added to incorporate expect-like
+	functionality for handling PGP 5.0.  It was provided courtesy of
+	Lars Magne Ingebrigtsen <[22]lmi@gnus.org>.
+
+Tue Oct 10 15:53:01 1995  Patrick J. LoPresti  <patl@eiffel.lcs.mit.edu>
+
+	* Version 3.4 released.
+
+Wed Oct  4 18:25:02 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* INSTALL: Document setting mc-pgp-comment to nil if using
+	obsolete version of PGP.
+
+	* mc-remail.el (mc-parse-levien-buffer): Allow remailers with
+ 	"mix" property, even if "pgp" and "cpunk" properties are lacking.
+	(mc-generic-pre-encrypt-function): Don't try to
+	expand-mail-aliases if 'mail-abbrevs is provided.
+
+	* mc-pgp.el (mc-pgp-always-fetch): New variable.  Use to regulate
+	key fetching.
+
+Fri Sep 29 14:39:17 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-deactivate-passwd): Don't give feedback unless
+	called interactively.
+	(mc-get-fields): Use `buffer-substring-no-properties' to get the
+	body of the field as well as the name.  Egad.
+
+Fri Sep 22 15:34:47 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-gnus-verify-signature): Renamed from
+	`mc-gnus-summary-verify-signature'.
+	(mc-gnus-snarf-keys): Renamed from `mc-gnus-summary-snarf-keys'.
+	(mc-gnus-decrypt-message): Renamed from
+	`mc-gnus-summary-decrypt-message'.
+
+	* mailcrypt.el (mc-modes-alist): Add `gnus-article-mode'.
+	Reflect	name changes to Gnus support functions.
+
+Wed Sep 20 09:30:53 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-gnus-summary-decrypt-message): Bind
+	`case-fold-search' to nil when matching "Gnus".
+
+	* mailcrypt.el (mc-xemacs-p): "XEmacs", not "Xemacs".
+
+Sat Sep 16 09:51:03 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-encrypt-region): If no recipients, just armor
+	file.
+	(mc-pgp-msg-end-line): Match optional newline at end.
+	(mc-pgp-encrypt-region): Don't honor mc-encrypt-for-me if only
+	armoring.
+	Output "Armoring..." if only armoring.
+
+	* mc-toplev.el (mc-gnus-summary-decrypt-message): Don't
+	bother trapping error on decrypt.
+	Require Gnus version 5.0.4 or higher.
+	Use new	`gnus-group-read-only-p' predicate.
+	Pass t to `gnus-summary-edit-article'.
+	(mc-encrypt-message): Punt check for no recipients.
+
+Sun Sep 10 16:36:37 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-decrypt-parser): Deal with armor-only files.
+
+	* mc-remail.el (mc-eliminate-continuation-lines): New function.
+	(mc-generic-pre-encrypt-function): Eliminate continuation lines in
+	preserved headers.
+	(mc-rewrite-for-mixmaster): Ditto.
+
+Mon Sep  4 17:57:47 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-process-region): Make sure we are in the source
+ 	buffer when starting process, in case `process-environment' is
+ 	buffer-local.
+
+	* mc-remail.el (mc-rewrite-for-mixmaster): Signal error if
+ 	attempting to post through a Mixmaster.
+
+Sun Sep  3 18:09:58 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-decrypt-region): Add strategic
+ 	`save-excursion' calls to avoid changing buffers inside `let'.
+
+Fri Sep  1 15:05:56 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-remail.el (mc-remailer-remove-property): New function.
+	(mc-remailer-canonicalize-chain): Make second arg CHAINS-ALIST
+	optional; default to `(mc-remailer-make-chains-alist)'.
+	(mc-demix): New function.
+
+	* mailcrypt.el (mc-process-region): Fix regexp to match "Process
+	*PGP* killed" et al.
+
+Thu Aug 31 12:52:44 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-encrypt-message): Clean up.  Use
+	`mc-get-fields' and `mc-strip-addresses'.
+
+	* mailcrypt.el (mc-strip-addresses): New function. Use everywhere.
+	
+	* mc-remail.el (mc-remailer-choose-first): New function.
+	(mc-remailer-choose-chain): New function.
+	(mc-parse-levien-buffer): Add support for returning a "ranking" of
+	remailers.
+	(mc-remailer-canonicalize-elmt): Add support for using an integer
+	N in a remailer-list to represent the top N remailers, shuffled
+	randomly.
+	(mc-strip-address): New function.  Use everywhere.
+
+	* mc-toplev.el (mc-vm-decrypt-message): Bind `this-command' to
+	`vm-edit-message-end' to trick VM into doing the right thing when
+	redisplaying.
+
+Sun Aug 27 13:12:22 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-sign-generic): Only run hooks if signing was
+	successful.
+
+Sat Aug 26 09:18:51 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-vm-decrypt-message): Bind `vm-frame-per-edit'
+	to nil.
+
+Fri Aug 25 17:41:28 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-sign-generic): Return result of signing
+	message, instead of always returning nil.
+
+Mon Aug 21 11:58:07 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-modes-alist): Add support for
+	`vm-virutal-mode'.
+
+Sun Aug 20 15:19:52 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* Makefile.in (install): Use a loop for installing .elc files,
+	since install-sh can't copy multiple files at once.
+
+	* mc-toplev.el (mc-gnus-summary-decrypt-message): Back out 8/4
+	change; call `gnus-summary-edit-article-postpone' instead.
+	Call `gnus-version' function instead of reading variable.
+
+Fri Aug  4 11:51:37 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-gnus-summary-decrypt-message): Run
+	`gnus-article-display-hook' after decrypting.
+
+Wed Aug  2 10:05:06 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-split): Use \\' instead of $ to match end of
+	string.
+	
+Tue Aug  1 15:55:47 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* Version 3.3 released.
+
+Mon Jul 31 11:22:23 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-rmail-decrypt-message): Use abstractions for
+	keymaps to work with XEmacs.
+	(mc-gnus-summary-decrypt-message): Clean up.
+	(mc-gnus-summary-verify-signature): Don't display all headers.
+	(mc-gnus-summary-snarf-keys): Ditto.
+
+Sat Jul 29 11:47:51 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-decrypt-region): Call `undo-boundary'.
+
+Thu Jul 27 20:56:41 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* load-path.hack: Give a friendly warning if a version of Emacs
+	other than 19 is used to byte-compile.
+
+Thu Jul 27 16:05:13 1995  Patrick J. LoPresti  <patl@eiffel.lcs.mit.edu>
+
+	* configure.in: Use `EMACS19' instead of `EMACS' for autoconf
+ 	substitution variable, lest "configure" get confused when run
+ 	under an Emacs shell.
+
+	* Makefile.in: Ditto.
+
+Thu Jul 27 10:24:47 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-keyserver-address): Use "pgp.ai.mit.edu"
+	instead of "www-swiss.ai.mit.edu".
+
+	* ANNOUNCE: Update version and date in preparation for 3.3
+ 	release.
+
+	* INSTALL: Updated to reflect new installation directory and
+	absolute requirement of `easymenu'.
+
+	* mailcrypt.el (mc-process-region): Fix parenthesization error.
+	Again.
+
+Wed Jul 26 12:48:50 1995  Patrick J. LoPresti  <patl@eiffel.lcs.mit.edu>
+
+	* mc-remail.el (mc-rewrite-for-remailer): Use `mc-encrypt-for-me'
+	instead of `mc-encrypt-to-me', since there the latter does not
+	exist.
+
+Sun Jul 23 13:01:47 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-decrypt-region): Clean up case where key is
+	missing and we offer to fetch it.
+
+Thu Jul 20 11:51:06 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-newkey-re): Incorporate fix from Mike Long to
+	only recognize key additions.
+
+Wed Jul 19 10:50:55 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el: Deal with unbound buffer-substring-no-properties
+ 	to work with Emacs 19.28 after all.
+
+	* mc-pgp.el (mc-pgp-verify-region): Return nil if signature fails
+	to verify.
+
+	* mc-toplev.el (mc-sign-generic): Make sure start and end are
+	markers before calling mc-pre-signature-hook.
+	(mc-encrypt-generic): Ditto, mc-pre-encryption-hook.
+
+	* mc-remail.el (mc-remailer-insert-response-block): Fix
+ 	parenthesization error.
+
+	* mc-toplev.el (mc-gnus-summary-decrypt-message): Incorporate Fran
+	Litterio's changes for (ding) GNUS.
+	Clean up MH-E stuff a bit.  Should really redo it entirely at some
+	point.
+
+	* texi2html.ext: New file.
+
+Tue Jul 18 14:26:00 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* Fix stuff all over to silence byte compilation warnings under
+	XEmacs.
+
+	* mailcrypt.el: (require 'easymenu) outright.  Starting now we
+ 	demand at least FSF Emacs 19.28 or XEmacs 19.13.
+
+Mon Jul 17 16:30:43 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* Makefile.in: Minor tweaks.  Use `.../share/emacs/site-lisp'.
+
+Sun Jul 16 13:48:06 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el: Use "buffer-substring-no-properties" everywhere.  Feh.
+	mc-remail.el: Ditto.
+	
+Sat Jul 15 01:41:18 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el: Add "+language=en" to PGP command lines so that we
+	are sure to parse the output correctly.
+
+Wed Jul 12 16:37:37 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-vm-verify-signature): Call vm-widen-page in
+	case vm-honor-page-delimiters is set.
+	(mc-vm-snarf-keys): Ditto.
+	('mail-utils): Required for mail-fetch-field on some Emacsen.
+
+Fri Jun 30 10:20:52 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-remail.el (mc-rewrite-news-to-mail): Nuke "Newsgroups" field.
+
+Fri Jun 23 11:04:54 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* Version 3.2 released.
+
+	* mc-pgp.el (mc-pgp-fetch-key): Add "+batchmode" to PGP arglist.
+	(mc-pgp-key-begin-line): Allow match only when delimiter string
+	is the entire line.
+	(mc-pgp-key-end-line): Likewise.
+
+	* configure.in: New file.
+	configure: New file.
+	Makefile.in: New file.  Brought into conformance with GNU
+	standards.
+	INSTALL: Revised to reflect `autoconf'-generated configuration
+	scheme.
+
+	* mailcrypt.el (mc-deactivate-passwd, mc-activate-passwd): Do the
+	right thing if both `timer' and `itimer' are present.
+
+Thu Jun 22 16:57:49 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-generic-parser): Include '\n' from final
+	delimiter line.
+
+Wed Jun 21 18:13:10 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-fetch-key): Give a diagnostic if the key was
+	not found.
+
+Tue Jun 20 00:53:51 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-toplev.el (mc-rmail-view-quit): Mark buffer unmodified when
+	quitting.
+
+	* mailcrypt.el (mc-process-region): Don't rely on
+	accept-process-output returning immediately if process is dead
+	(for XEmacs' sake).
+
+	* README: Revised (i.e., truncated) to reflect INSTALL file,
+        Texinfo docs, and Web pages.
+
+	* INSTALL: New file.
+
+	* Makefile: New file.
+
+Mon Jun 19 16:55:39 1995  Patrick J. LoPresti  <patl@catfish.lcs.mit.edu>
+
+	* NEWS: New file.
+
+	* mailcrypt.texi: New file.  Spent last few days getting this
+	written and the Web pages up.
+
+Fri Jun 16 17:55:14 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el (mc-pgp-comment): New variable.
+
+Thu Jun 15 00:33:44 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mc-pgp.el: New file.
+
+	* mc-toplev.el: New file.
+
+Wed Jun 14 16:51:00 1995  Patrick J. LoPresti  <patl@catfish.lcs.mit.edu>
+
+	* mailcrypt.el (mc-pgp-fetch-from-keyrings): New function.
+	(mc-pgp-fetch-keyring-list): New variable.
+	Forgot to document most of the changes in the past week, oh well.
+	(mc-scheme-pgp): New function to replace variable of same name in
+	preparation for putting PGP support into its own file.
+
+Thu Jun  8 13:16:50 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-pgp-fetch-finger): New function.
+	(mc-pgp-fetch-http): New function.
+	(mc-pgp-fetch-key): New function.
+
+Thu Jun  1 20:09:21 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-encrypt-generic): Only use Email addresses in
+	default-recipients.
+	(mc-pgp-generic-parser): Fix parenthesis error causing non-nil
+	return on bad passphrase.  Fix regular expression for bad
+	passphrase.
+
+Thu May 11 19:32:19 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-pgp-display-snarf-output): New variable,
+	defaults to nil.  If t, pop up a window to display the output of
+	key snarfing.
+
+	* mc-remail.el (mc-nuke-field): Do not clobber markers.  (This is
+	the wrong place to do it anyway.)
+	(mc-rewrite-for-remailer): Eliminate "Comment" and "From" headers
+	after encryption.
+
+Tue May  9 15:58:53 1995  Patrick J. LoPresti  <patl@eiffel.lcs.mit.edu>
+
+	* mailcrypt.el (mc-modes-alist): Fix typos for mh-folder-mode and
+	gnus-summary-mode.
+	(mc-sign-message): Fix parenthesization error in let.
+
+Mon May  8 22:27:20 1995  Patrick J. LoPresti  <patl@skyclad.lcs.mit.edu>
+
+	* mailcrypt.el (mc-encrypt-region): New interactive function.
+        Encrypts the current region by calling the appropriate function as
+        determined by mc-modes-alist.
+	(mc-encrypt-generic): New function; bottom level of
+	scheme-independent encryption routines.
+	(mc-encrypt-message): Rewritten to call mc-encrypt-generic.
+	(mc-encrypt): Rewritten to just call mc-encrypt-region.
+	Upshot of all this is to allow encryption in arbitrary buffers,
+	not just message buffers.
+	(mc-sign-region): New interactive function.
+	(mc-sign-generic): New function; bottom level of
+	scheme-independent signing routines.
+	(mc-sign-message): Rewritten to call mc-sign-generic.
+	(mc-sign): Rewritten to just call mc-sign-region.
+	Upshot of all this is to allow signing in arbitrary buffers, not
+	just message buffers.
+
+Mon May  8 16:02:45 1995  Patrick J. LoPresti  <patl@eiffel.lcs.mit.edu>
+
+	* mailcrypt.el (mc-always-replace): Add 'never option.
+	(mc-message): Remove "is-err" argument.
+	Only deactivate passphrase on "Bad passphrase" error.
 compilation.
 
 In addition, PGP 5.0 support requires the file timer.el, which should
-be included in FSF Emacs, but is NOT included with XEmacs.  This file
+be included in FSF Emacs, but is NOT included with Xemacs.  This file
 is included with Mailcrypt, and will be installed if the timer library
 isn't found in the load path.  If you already have timer.el, but it is
 in an unusual place, edit the file `load-path.hack' file accordingly.
 # Boston, MA 02111-1307, USA.
 
 VERSION = 2.11
-AUTHOR_VERSION = 3.5.6
+AUTHOR_VERSION = 3.5.8
 MAINTAINER = XEmacs Development Team <xemacs-beta@xemacs.org>
 PACKAGE = mailcrypt
 PKG_TYPE = regular
 ELCS = expect.elc mailcrypt.elc mc-gpg.elc mc-pgp.elc mc-pgp5.elc \
 	mc-remail.elc mc-setversion.elc mc-toplev.elc
 
-EXTRA_SOURCES = ANNOUNCE INSTALL LCD-entry NEWS ONEWS README README.gpg
+EXTRA_SOURCES = ANNOUNCE INSTALL LCD-entry NEWS ONEWS README README.dev \
+	README.gpg ChangeLog.1 WARNINGS
 
 INFO_FILES = $(PACKAGE).info*
-MANUAL = $(PACKAGE)
 HTML_FILES = $(PACKAGE)*.html
 HTML_DEP = $(PACKAGE).html
 TEXI_FILES = $(PACKAGE).texi
 
 include ../../XEmacs.rules
 
-all:: $(ELCS) auto-autoloads.elc $(PACKAGE).info
+all:: auto-autoloads.elc $(ELCS) $(PACKAGE).info
 
 srckit: srckit-std
 
 ## This is a -*- makefile -*-
 
-# What the Emacs 19 binary is called on your system
+# What the Emacs binary is called on your system
 EMACS = @EMACS@
 EMACSFLAGS = @EMACSFLAGS@
 
 datadir = $(prefix)/share
 
 # Where to put the .el and .elc files
-lispdir=$(datadir)/emacs/site-lisp
+lispdir = $(datadir)/emacs/site-lisp
 
 # Where to put the Info files
-infodir=$(prefix)/info
-INFOFILES  = mailcrypt.info mailcrypt.info-1 mailcrypt.info-2
+infodir = @infodir@
+INFOFILES = mailcrypt.info mailcrypt.info-1 mailcrypt.info-2
 
 # Where to put the helper scripts
-bindir=$(prefix)/bin
+bindir = $(prefix)/bin
 
 # Installation command
 INSTALL = @INSTALL@
 	mailcrypt.elc mc-toplev.elc mc-pgp.elc mc-remail.elc \
 	mc-pgp5.elc mc-gpg.elc expect.elc mc-setversion.elc
 
-DISTFILES = $(SOURCES) ANNOUNCE ChangeLog INSTALL LCD-entry Makefile.in \
-	NEWS ONEWS README configure configure.in install-sh load-path.hack \
-	mailcrypt.texi mkinstalldirs texi2html.ext FSF-timer.el \
-	$(INFOFILES) mailcrypt.dvi README.gpg
+GPG_TESTCASES = $(foreach f,CS.s1v CS.s3v E.e1r E.e3 ES.e1r.s1v ES.e1r.s3v \
+		  ES.e3.s1v S.s1v S.s3v CS.s2v CS.s4 E.e2r E.e4 ES.e1r.s2v \
+		  ES.e1r.s4 ES.e4.s1v S.s2v S.s4 SE,tests/gpg-testcases/$(f))
+
+TESTFILES_GPG = tests/Makefile.in					      \
+	tests/make_gpg_testcases.py tests/test-gpg.el tests/gpg-keys/Makefile \
+	tests/gpg-keys/fix-trust.py tests/gpg-keys/make-rings.py	      \
+	tests/gpg-keys/rings.txt $(GPG_TESTCASES)
+TESTFILES_REMAILER = tests/remailer/Makefile.in tests/remailer/rings.txt \
+	tests/remailer/rlist.txt tests/remailer/test-remailer.el	 \
+	tests/remailer/unwind.py
+
+DISTFILES = $(SOURCES) ANNOUNCE COPYING ChangeLog ChangeLog.1 INSTALL	     \
+	LCD-entry Makefile.in NEWS ONEWS README configure configure.in	     \
+	install-sh load-path.hack mailcrypt.texi mkinstalldirs texi2html.ext \
+	FSF-timer.el $(INFOFILES) mailcrypt.dvi README.gpg $(TESTFILES_GPG)  \
+	$(TESTFILES_REMAILER)
 
 SHELL = /bin/sh
 #.PHONY: all clean dist distclean dvi html info install \
 
 all: $(OBJECTS)
 
+check: $(OBJECTS)
+	$(MAKE) -C tests check
+
 install: all installdirs install-info $(bindir)
 	for f in $(SOURCES); do \
 	  $(INSTALL_DATA) $(srcdir)/$$f $(lispdir); \
 installdirs: mkinstalldirs
 	$(srcdir)/mkinstalldirs $(lispdir) $(infodir) $(bindir)
 
+# If your install-info doesn't know how to look inside the .info file for the
+# menu entry to add, try adding
+#   --entry="* Mailcrypt: (mailcrypt).       An Emacs/PGP interface"
+# to the arguments.
+
 install-info: info
 	cd $(srcdir) && for file in $(INFOFILES); do\
 	  $(INSTALL_DATA) $$file $(infodir)/$$file; \
 	done
-	-$(INSTALL_INFO) --info-dir=$(infodir) \
-	--entry="* Mailcrypt: (mailcrypt).       An Emacs/PGP interface" \
-	mailcrypt.info
+	-$(INSTALL_INFO) --info-dir=$(infodir) mailcrypt.info
 
 uninstall:
 	-cd $(lispdir) && rm -f $(SOURCES) $(OBJECTS)
 ps: mailcrypt.ps
 
 mailcrypt.ps: mailcrypt.dvi
-	$(DVIPS) $(srcdir)/mailcrypt.dvi
+	$(DVIPS) -f $(srcdir)/mailcrypt.dvi >$@
 
 html: mailcrypt_toc.html
 
 	distname=mailcrypt-$$version; \
 	rm -rf $$distname; \
 	mkdir $$distname; \
+	mkdir $$distname/tests; mkdir $$distname/tests/gpg-keys; \
+	mkdir $$distname/tests/gpg-testcases; \
+	mkdir $$distname/tests/remailer; \
 	for file in $(DISTFILES); do \
 	  ln $$file $$distname/$$file; \
 	done; \
+Noteworthy changes in Mailcrypt version 3.5.8:
+
+ * mc-remail.el updated to support modern remailers (as defined by MixMaster
+   version 2.9b33, on sourceforge). Closes most of SF#583330.
+
+ ** the 'Subject:' header is now put in the ## section instead of the ::
+    section, so remailers should copy them into the final message.
+
+ ** Use Anon-To: instead of Request-Remailing-To
+
+ * fixed mc-gpg.el to cache passphrases by keyid instead of name; this will
+   help users who have multiple secret keys with the same name but different
+   passphrases. Closes Debian #161691.
+
+ * less noteworthy changes:
+
+ ** added copy of GPL, since mailcrypt is distributed separately from Emacs
+
+ ** Added unit test for anonymous remailer support. Encrypting through a
+    basic remailer chain can now be verified, if you have python and
+    py-gnupg installed.
+
+ ** docs: updated 'finger' addresses for remailer lists again, since they
+    keep moving
+
+
+Noteworthy changes in Mailcrypt version 3.5.7:
+
+ * Integration with the Mew mail client: added hooks to use in Mew summary,
+   draft, and message buffers. Note that Mew handles PGP-MIME (RFC3156,
+   "multipart/encrypted") messages by itself; this is just for traditional
+   armored "in-line" encryption.
+
+ * Gnus updates, now usable in summary buffer
+
+ * Less noteworthy changes:
+
+ ** Added a unit test framework. GnuPG decryption now has test coverage.
+
+ ** GnuPG updates
+
+ ** MH fix to handle latest versions of mh-e that use read-only message buffers
+
+ ** Don't use hardwired /tmp directory, might fix some problems on NT.
+
+
 Noteworthy changes in Mailcrypt version 3.5.6:
 
  * Fix to work with GnuPG-1.0.5.
  * Fixed a bug which broke encryption of 8-bit data and files (PGP 5).
 
  * Fixed the missing "timer.el" problem.  Now Mailcrypt should run
-   properly for XEmacs users.
+   properly for Xemacs users.
 
  * Eliminated some silly shell and perl scripts.
 
+Developers' Notes:
+
+I've added the beginnings of a unit test framework to MailCrypt. The only
+thing tested so far is GPG decryption. The armored keyrings and test cases
+are packaged as part of the distribution tarball, where a 'make check' can
+unpack them and then use them to run the tests. There are two keyrings: a
+full set (used to create the test cases), and an 'exported' set which has
+some of the secret keys removed (to test what happens when you try to
+decrypt a message that isn't addressed to you).
+
+To build MailCrypt from CVS:
+
+You will need GNU autoconf. The following sequence will create the
+distribution tarball.
+
+   autoconf
+   ./configure
+   make dist
+
+To rebuild the unit test keyrings and test cases:
+
+Do the following to create the keys:
+
+ ./configure
+ cd tests/gpg-keys
+  make new-rings
+   (now manually sign the appropriate keys following the hints emitted by
+    the script.. this part hasn't been automated yet)
+  make exported
+  make pack
+   (creates allrings.txt, the armored keyring file. This file is checked into
+    CVS)
+ cd ../..
+
+The test cases are regenerated as part of the development anytime the keys
+are changed or the testcase generator script is modified. To rebuild them,
+you will need the Python GnuPGInterface module, available at
+<http://sourceforge.net/projects/py-gnupg/>. After installing it, do the
+following:
+
+ cd tests
+ make gpg-testcases
+  (this unpacks allrings.txt, then runs a program which creates the GPG test
+   cases in gpg-testcases/* . These test cases are also checked into CVS)
+ cd ..
+
+
+Making a new release. This is my checklist for making a new official release.
+
+ During development:
+
+  ChangeLog gets updated for each CVS checkin.
+  NEWS gets updated with all changes since last release.
+
+ At release time:
+  build and test, get reports from beta testers, decide to make release
+  mailcrypt.el: bump mc-version
+  mailcrypt.texi: bump VERSION
+  ANNOUNCE gets updated with latest news.
+  Changelog gets note: '* mailcrypt: Release mailcrypt-N.N.N'
+  commit all docs changes
+  cvs tag release-N_N_N
+  make dist
+  copy resulting mailcrypt-N-N-N.tar.gz to tmp dir
+  sign .tar.gz, put in tmp dir
+  take latest portion of NEWS to use as sourceforge Release Notes file, tmpdir
+  take ChangeLog since last release for as sourceforge Changelog file, tmpdir
+  update .lsm file
+
+  upload .tar.gz, .sig, release notes, changelog to sourceforge download area
+  update http://mailcrypt.sourceforge.net
+   (update 'site' module, login to mailcrypt.sourceforge.net,
+    go to /home/groups/m/ma/mailcrypt/htdocs/ and do a cvs update)
+  announce on sourceforge news
+  announce on mailcrypt-announce@lists.sourceforge.net
+  announce on freshmeat
+  upload to sunsite? (now ibiblio.org)
+
 the best chance of being compatible. GPG is being developed entirely outside
 the USA because of that silly ITAR nonsense.
 
-The GPG home page is at <http://www.d.shuttle.de/isil/gnupg/>. The
-mailcrypt support for it (contained mostly in mc-gpg.el) is tested against
-GPG version 0.4.3, so you should use that version or a later one.
+The GPG home page is at <http://www.gnupg.org/>. The mailcrypt support for it
+(contained mostly in mc-gpg.el) is mostly thoroughly tested against GPG
+version 1.0.6, so you should use that version or a later one. However, it
+ought to work fairly well with version 0.9.3 or later.
 
 KNOWN PROBLEMS:
 
+WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
+
+Security Warnings for Mailcrypt
+
+  As usual, the weakest link in a cryptosystem is how it is used. As
+  far as we know, PGP and GPG are completely unbreakable, even with
+  the full resources of the NSA on your trail. However, there are many
+  other ways for your secrets to be found out--let the user beware.
+
+
+NT Users: Mailcrypt might leak your passphrase!
+
+  We have reports that Mailcrypt/PGP 5.0 works on NT. We've also had
+  reports that it doesn't work. So far, no volunteers have come
+  forward to make sure it works correctly on NT.
+
+  One report, though, you should be aware of. One person has tried
+  using Mailcrypt on Windows NT, with poor results. Much later, he
+  looked in a temp directory and FOUND HIS DECRYPTED MESSAGES, WITH
+  HIS PASSPHRASE TUCKED INSIDE.
+
+  This is certainly no joke. Many workstations carelessly share their
+  whole filesystems across the network. Many are shared by multiple
+  users. Temp directories are usually world-readable. This means that
+  someone might learn your passphrase if you use Mailcrypt carelessly
+  on an NT workstation.
+
+  Here is what you can do about it:
+
+  1. Volunteer to test Mailcrypt on NT, and fix this problem.
+
+  2. Try using GPG on NT instead of PGP; there is a good chance this
+  problem is not present with GPG. BUT TEST THIS CAREFULLY BEFORE
+  TRUSTING IT!
+
+  3. Only use Mailcrypt on a workstation over which you posess sole
+  physical control. Tightly restrict network file-sharing, and clean
+  your disk often with a secure wiping utility.
+
+
+Other Security Issues
+
+  Other security issues are standard concerns.
+
+  * Make sure that nobody can look over your shoulder when you're
+  typing your passphrase.
+
+  * Do not store decrypted messages in publically accessible
+  places.
+
+  * Do _securely_ erase any files you won't need again.
+
+  * Do _not_ run Mailcrypt remotely through a telnet connection; your
+  passphrase will travel across the network/Internet in the clear. If
+  you trust ssh, go ahead and run Mailcrypt over an ssh connection.
+
+  * Do _not_ store your keyrings on shared machines (including
+  mainframes) if you can help it. Secret keys are encrypted on your
+  keyring, but why tempt fate? Furthermore, storing keyrings on
+  mainframes increases the likelihood that you will end up
+  transmitting your passphrase via telnet.
+

File mailcrypt.el

 ;;}}}
 
 ;;{{{ User variables.
-(defconst mc-version "3.5.6")
-(defvar mc-temp-directory "/tmp"
+(defconst mc-version "3.5.8")
+(defvar mc-temp-directory 
+  (cond ((fboundp 'temp-directory) (temp-directory))
+	((boundp 'temporary-file-directory) temporary-file-directory)
+	("/tmp/"))
   "*Default temp directory to be used by Mailcrypt.")
 (defvar mc-default-scheme 'mc-scheme-pgp "*Default encryption scheme to use.")
 (defvar mc-passwd-timeout 60
     (rmail-summary-mode (decrypt . mc-rmail-summary-decrypt-message)
 			(verify . mc-rmail-summary-verify-signature)
 			(snarf . mc-rmail-summary-snarf-keys))
+    (mew-draft-mode (encrypt . mc-encrypt-message)
+                    (sign . mc-sign-message))
+    (mew-message-mode (decrypt . mc-mew-decrypt-message))
+    (mew-summary-mode (decrypt . mc-mew-summary-decrypt-message)
+                      (verify . mc-mew-summary-verify-signature)
+                      (snarf . mc-mew-summary-snarf-keys))
     (vm-mode (decrypt . mc-vm-decrypt-message)
 	     (verify . mc-vm-verify-signature)
 	     (snarf . mc-vm-snarf-keys))
     (if msg (message-or-box "%s" msg))
     retval))
 
+(defun mc-message-sigstatus (msg &optional attention)
+  "Emit a signature status line. If ATTENTION is non-nil, be noisy about it."
+  ;; this function exists to be overridden by the unit tests
+  (if attention (ding))
+  (message-or-box "%s" msg)
+)
+
 (defun mc-process-region (beg end passwd program args parser &optional buffer)
   (let ((obuf (current-buffer))
 	(process-connection-type nil)

File mailcrypt.texi

 @c %**start of header
 @setfilename mailcrypt.info
 @settitle @value{TITLE}
+@setchapternewpage off
+@c Entries for @command{install-info} to use
+@dircategory Emacs
 @direntry
-* Mailcrypt: (mailcrypt).      An EMACS Interface to PGP.
+* Mailcrypt: (mailcrypt).  An Emacs/PGP interface.
 @end direntry
-@c footnotestyle separate
-@c paragraphindent 2
 @c %**end of header
-@setchapternewpage off
 
 @syncodeindex ky cp
 @syncodeindex vr cp
 @syncodeindex fn cp
 
 @set TITLE Mailcrypt
-@set VERSION 3.5.6
+@set VERSION 3.5.8
 @set UPDATED August 29, 1998
 
 @ifinfo
 * Hooking into VM::             
 * Hooking into MH-E::           
 * Hooking into Gnus::           
+* Hooking into Mew::           
 
 General Use
 
                                   keyrings on the local system.
 * Finger Fetch::                Fetching a key through finger.
 * HTTP Fetch::                  Fetching a key off of the Web.
+* GnuPG Fetch::                 Using GnuPG's internal keyserver interface.
 
 Miscellaneous Configuration
 
 * Hooking into VM::             
 * Hooking into MH-E::           
 * Hooking into Gnus::           
+* Hooking into Mew::           
 @end menu
 
 @node Hooking into Rmail, Hooking into VM, Installation, Installation
 (add-hook 'mh-letter-mode-hook 'mc-install-write-mode)
 @end lisp
 
-@node Hooking into Gnus,  , Hooking into MH-E, Installation
+@node Hooking into Gnus, Hooking into Mew, Hooking into MH-E, Installation
 @subsection Hooking into Gnus
 
 To hook Mailcrypt into Gnus, use the following lines:
 (add-hook 'news-reply-mode-hook 'mc-install-write-mode)
 @end lisp
 
+@node Hooking into Mew,  , Hooking into Gnus, Installation
+@subsection Hooking into Mew
+
+To hook Mailcrypt into Mew, use the following lines:
+
+@lisp
+(add-hook 'mew-message-mode-hook 'mc-install-read-mode)
+(add-hook 'mew-summary-mode-hook 'mc-install-read-mode)
+(add-hook 'mew-draft-mode-hook 'mc-install-write-mode)
+@end lisp
+
+Note that Mew already has extensive support for MIME-encoded encrypted
+and/or signed messages (using the ``multipart/encrypted'' and
+``application/pgp-encrypted'' formats specified by RFC3156). Using
+MailCrypt within Mew is most useful for traditional ``inline'' armored
+encrypted/signed messages.
+
 @node Command Overview,  , Installation, Introduction
 @section Command Overview
 
 @enumerate
 
 @item
-Do @samp{finger rlist@@publius.net > ~/.remailers}.
-This will create a Levien-format list of remailers in the file
-@file{.remailers} in your home directory.  Mailcrypt will parse this the
-first time you access a remailer function.
+Do @samp{finger rlist@@mixmaster.shinn.net > ~/.remailers}. This
+will create a Levien-format list of remailers in the file
+@file{.remailers} in your home directory (see the variable
+@code{mc-levien-file-name}). Mailcrypt will parse this the first time
+you access a remailer function. @samp{rlist@@noisebox.remailer.org} is
+another good place to get this list.
 
 @item
 Look over the @file{.remailers} file and find the ones you want to use.
 
 @item
-Add their PGP public keys to your keyring.  You can @code{finger
-pgpkeys@@kiwi.cs.berkeley.edu} for a list of remailer public keys.  Note
-that Mailcrypt @emph{requires} that you have the public keys of all the
-remailers you want to use, and therefore that the remailers support PGP
-encryption.
+Add their PGP public keys to your keyring. You can @code{finger
+remailer-keys@@mixmaster.shinn.net} for an armored keyring full of
+remailer public keys. Note that Mailcrypt @emph{requires} that you
+have the public keys of all the remailers you want to use, and
+therefore that the remailers support PGP encryption.
 
 @end enumerate
 
 on its name.  The buffer will be rewritten for anonymous mailing through
 that remailer.
 
+Note that you can only select a single remailer when you rewrite the
+message. To send the message through multiple hops, either rewrite the
+message multiple times, or define a @emph{chain} of remailers that can
+be referred to like a single remailer. Remailer chains are described
+in the next section.
+
+The remailer list and keyrings can also be obtained via HTTP.
+@file{http://anon.efga.org/Remailers/Settings} and
+@file{http://mixmaster.shinn.net/stats/settings/index.html} have lists
+of URLs from which these can be retrieved.
+
+
 @node Remailer Chains, Response Blocks, Remailer Quick Start, Remailer Support
 @section Remailer Chains
 
 
 @item
 @vindex mc-levien-file-name
-Read and understand the @file{.remailers} file.  If the service at
-kiwi.cs.berkeley.edu is gone by the time you read this, track down a
-comparable service elsewhere.  (Ask around in
-@file{news:alt.privacy.anon-server} or, as a last resort,
-@file{news:alt.security.pgp}.)  Check the documentation (@kbd{C-h v})
-for the variable @code{mc-levien-file-name} for a description of Levien
-format.
+Read and understand the @file{.remailers} file.  Other sources for
+this list include @file{http://www.chez.com/frogadmin/MyCypSta1.txt}
+and @file{http://anon.efga.org/Remailers/rlist}.  If all of these
+servers have gone away by the time you read this, track down a
+comparable service elsewhere.  (Do a web search for ``anonymous
+remailer list'', ask around in @file{news:alt.privacy.anon-server}, or,
+as a last resort, @file{news:alt.security.pgp}.)  Check the
+documentation (@kbd{C-h v}) for the variable
+@code{mc-levien-file-name} for a description of Levien format.
+
+@item
+Mailcrypt needs to be able to encrypt a message to each remailer in
+the chain, so it needs access to their public keys, in a keyring
+usable by the currently selected backend.  Keyrings containing keys
+for all the well-known remailers are usually available from the same
+places as the remailer lists above:
+@file{http://www.chez.com/frogadmin/Keys/dsskeys.asc},
+@file{http://anon.efga.org/Remailers/TypeIList/pubring.asc}.
+
+@c TODO: With the GPG backend, you can take one of the .pkr or .gpg -format
+@c keyrings, save it to ~/remailer-pubring.pgp, and the remailer encryption
+@c functions will automatically add that keyring to the set used when working
+@c with remailers. This means you don't have to clutter your normal keyring
+@c with the remailer keys.
 
 @item
 The relevant remailer properties are @code{pgp} (required), @code{hash}
                                   keyrings on the local system.
 * Finger Fetch::                Fetching a key through finger.
 * HTTP Fetch::                  Fetching a key off of the Web.
+* GnuPG Fetch::                 Using GnuPG's internal keyserver interface.
 @end menu
 
 @node Keyring Fetch, Finger Fetch, Key Fetching, Key Fetching
 by fingering an address and parsing the output for a PGP public key
 block.
 
-@node  HTTP Fetch,  , Finger Fetch, Key Fetching
+@node HTTP Fetch, GnuPG Fetch, Finger Fetch, Key Fetching
 @section HTTP Fetch
 
 @findex mc-pgp-fetch-from-http
 Note that fetching from a key server can be somewhat slow, so be
 patient.  (At least it beats the tar out of the Email interface.)
 
+@node GnuPG Fetch,  , HTTP Fetch, Key Fetching
+@section GnuPG Fetch
+
+GnuPG happens to have a built-in HKP keyserver interface which is
+completely independent from MailCrypt's own key fetching support.  If
+your @file{.gnupg/options} file includes a line like:
+
+@samp{keyserver wwwkeys.pgp.net}
+
+then any operation that needs an otherwise-unavailable public key
+(which generally means signature verification) will automatically
+contact the keyserver and try to retrieve the key.  It sends the hex
+keyid to the server, not a string, so it could only be used at
+encryption time if you already know the keyid of your recipients.
+
+You can also tell GPG to explicitly request a key (by hex keyid) with
+@samp{--recv-keys}, or to send your own key with @samp{--send-keys}.
+Check the GnuPG manual for details.
+
+
 @node Miscellaneous Configuration, Tips, Key Fetching, Top
 @chapter Miscellaneous Configuration
 
 (defvar mc-gpg-path "gpg" "*The GPG executable.")
 (defvar mc-gpg-display-snarf-output nil
   "*If t, pop up the GPG output window when snarfing keys.")
+(defvar mc-gpg-always-fetch 'never
+  "*If t, always fetch missing keys. If 'never, never fetch. If nil,
+ask the user.")
 (defvar mc-gpg-alternate-keyring nil
   "*Public keyring to use instead of default.")
 (defvar mc-gpg-comment
-   (format "Processed by Mailcrypt %s and Gnu Privacy Guard <http://www.gnupg.org/>" mc-version)
+   (format "Processed by Mailcrypt %s <http://mailcrypt.sourceforge.net/>"
+	   mc-version)
   "*Comment field to appear in ASCII armor output.  If nil, let GPG use its 
 default.")
 (defconst mc-gpg-msg-begin-line "^-----BEGIN PGP MESSAGE-----\r?$"
   "Text for start of GPG public key.")
 (defconst mc-gpg-key-end-line "^-----END PGP PUBLIC KEY BLOCK-----\r?$"
   "Text for end of GPG public key.")
-(defconst mc-gpg-extra-args nil
+(defvar mc-gpg-extra-args nil
   "Extra arguments to pass to all invocations of gpg. Used during debugging to
 set --homedir, to use special test keys instead of the developer's normal
 keyring.")
-(defconst mc-gpg-debug-buffer nil
+(defvar mc-gpg-debug-buffer nil
   "A buffer for debugging messages. If nil, no debugging messages are logged.
 BEWARE! Sensitive data (including your passphrase) is put here. Set this with:
  (setq mc-gpg-debug-buffer (get-buffer-create \"mc debug\"))")
       (delete-file stderr-tempfilename)
       (delete-file status-tempfilename)
       ;; kill off temporary buffers unless we're debugging
-      (if (not mc-gpg-debug-buffer)
+      (if (or (not (boundp 'mc-gpg-debug-buffer))
+	      (not mc-gpg-debug-buffer))
 	  (progn
 	    (if (get-buffer " *mailcrypt stdout temp")
 		(kill-buffer " *mailcrypt stdout temp"))
 		      (setq args (append mc-gpg-extra-args args)))
 		  (mc-gpg-debug-print 
 		   (format "lookup: args are %s" args))
-		  (apply 'call-process mc-gpg-path nil buffer nil args)
+		  (let ((coding-system-for-read 
+			 (if (and (fboundp 'coding-system-p)
+				  (coding-system-p 'utf-8))
+			     'utf-8 nil)))
+		    (apply 'call-process mc-gpg-path nil buffer nil args))
 		  (set-buffer buffer)
 		  (goto-char (point-min))
 		  (if (re-search-forward key-regexp nil t)
 	  )
       )
 
-    ; if we're supposed to encrypt for the user too, we need to know their key
+    ; if we're supposed to encrypt for the user too, we need their key
+    ;; FIXME: we only need their public key, not the secret one. Some users
+    ;; (the author included) keep their secret keys offline unless needed
+    ;; (but the public ones are still available).. the --list-secret-keys
+    ;; done by mc-gpg-lookup-key will fail in this situation. Change
+    ;; mc-gpg-lookup-key to have a way to look for public keys too.
     (if (and recipients mc-encrypt-for-me)
 	(setq recipients (cons (cdr (or key
 					(setq key (mc-gpg-lookup-key 
     (if recipients
 	(setq args (append (apply 'append 
 				  (mapcar '(lambda (x) 
-					     (list "--remote-user" 
+					     (list "--recipient" 
 						   (concat "\"" x "\""))) 
 					  recipients))
 			   args)))
 	  ;; key is nil if CONVENTIONAL, (string . hexid) otherwise
 	  (setq passwd
 		(if key
-		    (mc-activate-passwd (car key)
+		    (mc-activate-passwd (cdr key)
 					(format 
 					 "GPG passphrase for %s (%s): "
 					 (car key) (cdr key)))
 	 ((atom sig) ;; don't have the signature key
 	  (progn
 	    ;; offer to fetch the key, then what? run again? must we undo 1st?
-	    (message (format "cannot check signature from keyid %s" sig))
+	    (mc-message-sigstatus
+             (format "cannot check signature from keyid %s" sig))
 	    (if (and (not (eq mc-gpg-always-fetch 'never))
 		     (or mc-gpg-always-fetch
 			 (y-or-n-p
 	    ))
 	 ((nth 0 sig) ;; good signature
 	  (progn
-	    (message (mc-gpg-format-sigline 
-		      t (nth 1 sig) (nth 2 sig) (nth 3 sig)))
+	    (mc-message-sigstatus (mc-gpg-format-sigline 
+				   t (nth 1 sig) (nth 2 sig) (nth 3 sig)))
 	    '(t . t)
 	    ))
 	 (t ;; bad signature
 	  (progn
-	    (ding)
-	    (message (mc-gpg-format-sigline 
-		      nil (nth 1 sig) (nth 2 sig) (nth 3 sig)))
+	    (mc-message-sigstatus (mc-gpg-format-sigline 
+				   nil (nth 1 sig) (nth 2 sig) (nth 3 sig))
+				  t ; get their attention
+				  )
 	    '(t . nil)
 	    ))
        )))
     (setq key (mc-gpg-lookup-key (or id mc-gpg-user-id) 'sign))
     (setq passwd
 	  (mc-activate-passwd
-	   (car key)
+	   (cdr key)
 	   (format "GPG passphrase for %s (%s): " (car key) (cdr key))))
     (setq args
 	  (list

File mc-remail.el

 
 PROPERTIES is a space-separated set of strings.
 
-This format is named after Raphael Levien, who maintains a list of
-active remailers.  Do \"finger rlist@publius.net\"
-for the latest copy of his list.")
+This format is named after Raphael Levien, who maintained a list of
+active remailers. Do \"finger rlist@noisebox.remailer.org\" or
+\"finger rlist@mixmaster.shinn.net\" for the latest copy of the
+remailer list.")
 
 (defvar mc-remailer-user-chains nil
   "An alist of remailer chains defined by the user.
 when you are prompted for your pseudonym.")
 
 (defvar mc-remailer-preserved-headers
-  '("References" "Followup-to" "In-reply-to")
+  '("References" "Followup-to" "In-reply-to" "Subject")
   "*Header fields which are preserved as hashmark headers when rewriting.
 
 This is a list of strings naming the preserved headers.  Note that
-\"Subject\", \"Newsgroups\", and \"To\" are handled specially and
-should not be included in this list.")
+\"Newsgroups\" and \"To\" are handled specially and should not be included in
+this list.")
 
 ;;}}}
 ;;{{{ Handling Levien format remailer lists
 	    (if (mc-get-fields "From" colon-header)
 		"Send-To"
 	      (cond
-	       ((member "eric" props) "Anon-Send-To")
-	       ((member "cpunk" props) "Request-Remailing-To")
+	       ((member "cpunk" props) "Anon-To")
 	       (t (error "Remailer %s is not type-1" addr)))))
       (mc-replace-field to-field to colon-header)
       (mc-nuke-field "Reply-to" main-header))))
      (function (lambda (hook) (funcall hook remailer)))
      (mc-remailer-pre-encrypt-hooks remailer))
 
-    ;; Move "Subject" lines down.
-    (goto-char (car (mc-find-colon-header t)))
-    (mapcar
-     (function (lambda (f) (insert (car f) ":" (cdr f))))
-     (mc-get-fields "Subject" main-header t))
-
     (if pause
 	(let ((cursor-in-echo-area t))
 	  (message "SPC to encrypt for %s : " addr)

File mc-setversion.el

 ;;}}}
 
 (defvar mc-default-scheme 'mc-scheme-pgp
-  "*Set the default encryption scheme for Malicrypt to use. Defaults
+  "*Set the default encryption scheme for Mailcrypt to use. Defaults
 to pgp 2.6 for backward compatibility.")
 
 (defun mc-setversion (&optional version)

File mc-toplev.el

   (autoload 'gnus-summary-edit-article "gnus-sum")
   (autoload 'gnus-summary-edit-article-postpone "gnus-sum")
   (autoload 'gnus-summary-edit-article-done "gnus-sum")
+
   ;; MH-E
-  (condition-case nil (require 'mh-e) (error nil)))
+  (condition-case nil (require 'mh-e) (error nil))
+
+  ;; Mew
+  (condition-case nil (require 'mew) (error nil))
+  (autoload 'mew-summary-display "mew-summary")
+  (autoload 'mew-buffer-message "mew")
+
+)
 
 (eval-and-compile
   (condition-case nil (require 'mailalias) (error nil)))
       (mh-show msg)
       (save-excursion
         (set-buffer mh-show-buffer)
- 	  (if (setq decrypt-okay (car (mc-decrypt-message)))
-	      (progn
-		(goto-char (point-min))
-		(set-buffer-modified-p nil))
-            (message "Decryption failed.")))
+        (let ((read-only buffer-read-only))
+          (unwind-protect
+              (progn
+                (setq buffer-read-only nil)
+                (if (setq decrypt-okay (car (mc-decrypt-message)))
+                    (progn
+                      (goto-char (point-min))
+                      (set-buffer-modified-p nil))
+                  (message "Decryption failed.")))
+            (setq buffer-read-only read-only)
+            )))
       (if (not decrypt-okay)
 	  (progn
 	    (mh-invalidate-show-buffer)
 
 ;;}}}
 
+;;{{{ mew
+;; decrypt, verify, snarf, encrypt, sign
+;; in summary mode, decrypt/verify/snarf must switch to correct buffer first
+;; in correct buffer, generic functions are probably sufficient.
+;;  mew doesn't have any labels to be added (though I really wish it did)
+;;  could have a "replace encrypted with decrypted" hook for decrypt
+
+;; autoloads:
+;;  mew-message-mode
+;;   (add-hook 'mew-message-mode-hook 'mc-install-read-mode)
+;;  mew-summary-mode
+;;   (add-hook 'mew-summary-mode-hook 'mc-install-read-mode)
+;;  mew-draft-mode
+;;   (add-hook 'mew-draft-mode-hook 'mc-install-write-mode)
+
+(defun mc-mew-summary-decrypt-message()
+  "*Decrypt the current message"
+  (interactive)
+  (if (not (eq major-mode 'mew-summary-mode))
+      (error
+       "mc-mew-summary-decrypt-message called in inappropriate buffer"))
+  (save-excursion
+    (mew-summary-display t)
+    (set-buffer (mew-buffer-message))
+    (mc-decrypt)
+))
+
+(defun mc-mew-summary-verify-signature()
+  "*Verify the signature in the current message."
+  (interactive)
+  (if (not (eq major-mode 'mew-summary-mode))
+      (error
+       "mc-mew-summary-verify-signature called in inappropriate buffer"))
+  (save-excursion
+    (mew-summary-display t)
+    (set-buffer (mew-buffer-message))
+    (mc-verify)
+))
+
+(defun mc-mew-summary-snarf-keys()
+  "*Add keys from the current message to the public keyring."
+  (interactive)
+  (if (not (eq major-mode 'mew-summary-mode))
+      (error
+       "mc-mew-summary-snarf-keys called in inappropriate buffer"))
+  (save-excursion
+    (mew-summary-display t)
+    (set-buffer (mew-buffer-message))
+    (mc-snarf)
+))
+
+(defun mc-mew-decrypt-message ()
+  "*Decrypt the contents of this message."
+  ;; This is a hack to deal with the fact that mew-message buffers are
+  ;; generally read-only. For now, there is no option to replace the
+  ;; encrypted message in-place; it simply disappears when you move to a
+  ;; different message.
+  (interactive)
+  (let ((read-only buffer-read-only))
+    (unwind-protect
+        (save-excursion
+          (setq buffer-read-only nil)
+          (mc-decrypt-message)
+          )
+      (setq buffer-read-only read-only)
+      )
+))
+
 ;;}}}
+
+;;}}}