hashcash-0.32 - 09-Apr-2004 - Adam Back <adam@cypherspace.org>

	* documentation fixes

	* change multiple regexp behavior; previous algorithm only allowed
	  higher overrides; need to support both higher and lower
	  overrides.  This also required introducing -o option to join
	  regexps which are set intersections where otherwise risk of
	  uninteded override occuring and mail being rejected as spent or
	  insufficent bits.  Now revert to lexical order most specific
	  regexp first.

	* wrote test script test.sh

	* fix a few minor bugs uncovered by above test script

	* -c now means check date

	* allow -n etc with -X

	* introduced -b relative to default way of specifying bits
	
	* -b is no optional, if want token fully checked, but can give -b
	  default; or new relative to default -b +0.
	
	
hashcash-0.31 - 01-Apr-2004 - Adam Back <adam@cypherspace.org>

	* final 0.x version (v0 format) release before 1.x version (v1
	  format) (bug fixes / maintenance only afterwards on 0.x version)
	
	* remove -O3 from Makefile, use -O instead as fails on HPUX or
	  sun.
 
	* fix some out of date usage stuff in hashcash man page.

	* disable timing loop unless timing needed

	* fix multiple reciept bug in -cX/-cx reported by Junior Ang
	  <junior@chrysant.com>.  If you receive a mail multiple times
	  because you are on the receipt list multiple times, there will
	  be multiple hashcash headers for you.  In this case it is
	  necessary to examine the first matching, non-spent stamp.  The
	  bug was previous versions stopped on the first matching stamp
	  and then failed because it was spent.  Need to keep going and
	  check later also matching stamps until find one which is not
	  spent.

	* rationalize command line args further.  No implied -m , more
	  things that are awkward to implement but not that useful are
	  disallowed.

	* change purge operation to use read-write operations in the same
	  sdb file rather than creating a temporary file.  This makes
	  locking easier and is also aesthetically nicer.

	* add flock(2) database file write locking, and change creation
	  logic to use open(2) to avoid creation db race-condition also.

	* make resource string case insensitive by default to match email
	  semantics; add -C option to force case sensitivity if desired
	  (email addresses are converted to and stored in lower case, so
	  you have to both mint and verify with case sensitivity turned on
	  to make use of case sensitivity)

	* support minting multiple resources with multiple command line
	  args.  Also if no resources given on command line, read
	  resources from stdin.
	
	* support supplying multiple email addresses, for people who want
	  to accept as multiple addresses.

	* support multiple resources on purging also.

	* support multiple tokens with check mode as cmd line args, if
	  none given as args, read tokens from stdin; if -X/-x read from
	  cmd line args, then from stdin as email (matching stamp headers
	  skipping stamp headers)
 	
	* rename default simple database to hashcash.sdb (.sdb extension),
	  to distinguish from planned support for better database.
	
	* fix bug in PPUTS didn't match PPRINTF

	* fixup -l, -w, -n so they support multiple tokens also
	
	* made use of -b optional (get the default on mint & check)

	* added "-b default" to specify default number of bits with -s
	  (otherwise no way to measure the default speed without
	  specifying the number of bits -- and when this can change over
	  time it would be inconvenient for scripting to have to
	  separately obtain this)
	
	* added support for wildcard email addresses with '*' wildcard
	  marker.  '*' before '@' does not match '@', '*' after '@' does
	  not match '.'.  And both email addresses must contain @ sign and
	  same number of '.' separated sub domains as wildcard address.
	  Wildcard matching is the new default.  Use -S to get plain
	  string match.  Can turn back on with -W.

	* increased size of random string to reduce chance of collisions
	  between users.  Now negligible chance of collision with typical
	  token sizes.
	
	* added support for regexps.  Can work from POSIX library or BSD
	  regexp library.  Use -E to get regexps.  Input is always in
	  POSIX syntax (specials are not quoted to have special action;
	  are quoted to have plain meaning).  If using BSD library still
	  give input in POSIX syntax, it's converted to BSD internally.
	
	* implement highest matching semantics.  Ensures that eg -c -b10
	  *@bar.invalid -b15 adam@bar.invalid will not accept a 10 bit
	  token for adam@bar.invalid.  (This is done by sorting resources
	  highest bits required first and accepting only the first highest
	  matching resource.)
	
	* change arg parsing so -b, -e, -g, -z, -E, -W, -S, apply to the
	  following resources and tokens, and can be changed for later
	  resources/tokens with tokens and args interspersed.  Means you
	  have to give these args before the resource/token or you will
	  get defaults.
	
hashcash-0.30 - 04-Mar-2004 - Adam Back <adam@cypherspace.org>

	* make -cX check multiple X-Hashcash lines until it finds the
	  right one.  Bug reported by Kyle Hasselbacher <kyle@toehold.com>.

hashcash-0.29 - 04-Mar-2004 - Adam Back <adam@cypherspace.org>

	* fix prototype mismatch of function hashcash_check in
	  hashcash.h vs libhc.c which caused compile failure on
	  openBSD and freeBSD

	* change to make it compile on MAC OSX (need to recognize OSX
	  and treat as unix like for headers to include)

	* change to make it compile on solaris 9 (and POSIX / SVR
          systems in general).  Turns out putenv(3) is more portable
	  than setenv(3) / unsetenv(3)

	* update sha1 man page to name it sha1-hashcash to avoid collision
	  with openssl sha1(1).  By default with openssl there is not
	  actually any program named sha1, rather sha1 is a subprogram of
	  openssl invoked "openssl sha1".  However I think it may still be
	  possible to compile that as a separate program or symlink sha1 to
	  openssl to get that.

	* update sha1 man pages to refer to the other common sha1
	  implementations.

	* update LICENSE request

hashcash-0.28 - 18-Sep-2003 - Adam Back <adam@cypherspace.org>

	* fix bug with timezone handling reported by Joris Bontje
	  <jbontje@suespammers.org> (turns out utctime function is
	  redundant and wrong; time(2) gives time in UTCTime (doh)).
	  Reason for confusion is ctime is in local time, so converts
	  UTC time into local time even if you don't want that.  But
	  c-library time handling functions are really not designed
          for converting back from local to UTCTime when represented
          as a time_t.  Changed a bunch of time related stuff to fix
	  this up.

	* add -g flag for grace period suggested by Marc Lehmann
	  <pcg@goof.com> to avoid undue rejection of hashcash stamps
	  because of clock skew (or timezone / daylight savings time
	  off by one errors).  Default for email is 2 days (48 hours)
	  fast or slow.

	* change validity period default to 28 days; previous default
	  was forever which did not match recommended email default

	* add -z flag to explicitly specify the width in chars of the
	  time field.  This flag deprecates and overrides the -m -e
	  way to implicitly specify date field width.  As before the
	  default is 6 chars (date only in YYMMDD).

hashcash-0.27 - 11-Sep-2003 - Adam Back <adam@cypherspace.org>

	* add space char after 'X-Hashcash:' header that you get with
	  -X option

	* add LICENSE file

hashcash-0.26 - 26-Jun-2003 - Adam Back <adam@cypherspace.org>

	* accidentally folded in some non-standard VERBOSE output I was
	  playing with.  This change makes it really standard output
	  comparable to FIPS 180-1 appendices.

	* added a version number -- use -V to display it.  Also -v
	  (lowercase) by itself with no other arguments displays the
	  version umber also.

	* bug fix for quiet output (when not going to a pipe, still
	  need to see output!)

	* update everything to point at http://www.hashcash.org now we
	  have the domain courtesy of it's previous owner Ashish
	  Gulhati <agul@cpan.org> (at no charge -- he declined my
	  offer to pay for it and instead gave it to me!)

	* made a man page for sha1 utility also.

	* add -X option which is a shorthand version of -x 'X-Hashcash:'

	* remove leading and trailing blanks from hashcash tokens to
	  make them more robustly survive email transit.

hashcash-0.25 - 15-May-2003 - Adam Back <adam@cypherspace.org>

	* fix VERBOSE trace output of sha1 implementation to match FIPS
	  180-1 standard test vector examples (Note: this no impact on the
	  result, just allows direct comparison to the test vectors in
	  180-1).  The FIPS 180-1 VERBOSE output got broken when I unrolled
	  the rotates in the round function.

	* remove the automatic turning on of quiet mode if the output
	  is a pipe per note from Simon Josefsson <jas@extundo.com> about
	  how that can be inconvenient for scripting

hashcash-0.24 - 15-Mar-2003 - Adam Back <adam@cypherspace.org>

	* fix minor error which made hashcash_expected_tries a tiny
	  amount less efficient than realised

hashcash-0.23 - 15-Mar-2003 - Adam Back <adam@cypherspace.org>

	* fix error in libhc would always fail in hashcash_check
	  reported by Alan Barclay <gorilla@elaine.furryape.com>; note this
	  bug does not affect the hashcash command line tool as it does not
	  use this API

	* minor Makefile changes

hashcash-0.22 - 16-Aug-2002 - Adam Back <adam@cypherspace.org>

	* fix uninitialized counter string in hashcash_per_sec, bug
          reported by Mathias Langer

hashcash-0.21 - 15-Aug-2002 - Adam Back <adam@cypherspace.org>

	* fix compile warnings with VC++ 6. 

hashcash-0.20 - 13-Aug-2002 - Adam Back <adam@cypherspace.org>

	* change format to include version number
	* change collision to be on 0^k string instead of on
	  SHA1(date:resource)

hashcash-0.19 - 25-Apr-2002 - Adam Back <adam@cypherspace.org>

	* fix bug reported that minting always returns failure
	* fix erroneous logic involving validation of validity periods

hashcash-0.18 - 23-Mar-2002 - Adam Back <adam@cypherspace.org>

	* fix token parsing to allow resource names with :s
	  in them (eg. urls etc)
	* change hashcash_mint API a bit
	* add programming APIs for all other functions except
	  double spend db, and move library code to libhc.c

hashcash-0.17 - 23-Mar-2002 - Adam Back <adam@cypherspace.org>

	* add programming API for hashcash_mint
	* separate hashcash tool program from hashcash library code
	* remove trailing 'Z' option for times -- adds no value

hashcash-0.16 - 15-Mar-2002 - Adam Back <adam@cypherspace.org>

	* minor clean up stuff:
	* allow longer collision strings for compatibility with future
	  versions
	* reject collision strings with non-printable and non ascii
          chars (< ascii(32) and > ascii(127)
	* make install now installs man page
	* fix VMS compile warning
	* fix bad portability assumption about time_t being signed
	* simple VMS scripting build script

hashcash-0.15 - 14-Mar-2002 - Adam Back <adam@cypherspace.org>

	* deal with unix, DOS, and mac lf endings (rather than just unix)
	* fix bug reported by Doc.Cypher <doc_cypher@redneck.gacracker.org>
	* modifications to compile under VC++ 6.0 on win32
	* add -i feature

hashcash-0.14 - 13-Mar-2002 - Adam Back <adam@cypherspace.org>

	* revamped flags and arguments
	* lots of new options and features
	* more safe error reporting (avoid risk of false positives)
	* fix all warnings
	* make compile on machines with 64 bit longs
	* make compile on IRIX
	* make Makefile more portable
	* more reliable timing strategy
	* remove separate endian.c -- put endian stuff in libsha1.c
	* create man page
	* update documentation
	* re-implement SDB simple database to have a more standard
	  interface to facilitate plugging in gdb etc
	* import random number interface to /dev/urandom

hashcash-0.13 - 03-Mar-2002 - Adam Back <adam@cypherspace.org>

 	* fix bug introduced in 0.12
	* update documentation

hashcash-0.12 - 03-Mar-2002 - Adam Back <adam@cypherspace.org>

	* add option to verify resource name given on command line
          matches resource name in collision
	* also more compatible with 0.10 command line as a result
     	* add option to print resource name parsed from collision

hashcash-0.11 - 02-Mar-2002 - Adam Back <adam@cypherspace.org>

  	* fix buffer overflow reported by Max Greenius
	* add -v mode suggested by Michael Shinn
	* add interactive mode instead of usage as default, another
	  suggestion from Michael Shinn
	* add explicit -h for usage
	* add -q mode for even quieter output (batch like mode)
	* add -x option to take collision to verify from stdin
	* update the documentation in readme.txt to reflect
	  new format and options
	* add install target to makefile to install binaries
	  for hashcash and sha1 in /usr/local/bin, another
	  suggestion from Michael Shinn

hashcash-0.10 - 20-Feb-2002 - Michael Shinn <mike@shinn.net>

	* change output format slightly to make it easier
	  to recognize the collision amongst the verbose output

hashcash-0.09 - 25-May-2001 - Adam Back <adam@cypherspace.org>
	
	* clean up sha1.h
	* add simple makefile
	* fix bug in endian.h with linux redhat62
	* change format to use : delimiters
	* changed old version numers to be two digit
	* standardised on bsd indentation
	
hashcash-0.08 - 28-Feb-2000 - Adam Back <adam@cypherspace.org>

	* support for openSSL sha1 (-DOPENSSL)

hashcash-0.07 - 08-Dec-1997 - Adam Back <adam@cypherspace.org>
	
	* bug fix in SHA1 code

hashcash-0.06 - 07-May-1997 - Andy Dustman <andy@CCMSD.chem.uga.edu>

	* bug fix + SPARSE compile option for library use

hashcash-0.05 - 07-Mar-1997 - Adam Back <adam@cypherspace.org>

	* made mods as suggested by Andy Dustman <andy@CCMSD.chem.uga.edu>
	  to avoid collision collisions on larger collision lengths
	  previous method was bugged

hashcash-0.04 - 31-Mar-1997 - Adam Back <adam@cypherspace.org>

	* no description

hashcash-0.03 - 30-Mar-1997 - Adam Back <adam@cypherspace.org>

	* put in fast SHA1, and other mods giving a 4x speedup
	* plus a few bug fixes

hashcash-0.02 - 28-Mar-1997 - Chris Kuethe <ckuethe@gpu.srv.ualberta.ca>

	* added minimal macintosh support (Think C)

hashcash-0.01 - 27-Mar-1997 - Adam Back <adam@cypherspace.org>

	* first version
