hashcash-0.33 - 13-Apr-2004 - Adam Back * allow wild card without @ sign if there is no @ sign in pattern * fix bug reported by Ken Takusagawa where for collisions taking > 2^31 bits of work it reported -ve number of tries * put /dev/urandom macro for MAC from Jonathan Morton so we use /dev/urandom on MAC * TODO: check logic in find_collision see if it really does tries work (rather than tries-1) hashcash-0.32 - 09-Apr-2004 - Adam Back * 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 * 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 . 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 * make -cX check multiple X-Hashcash lines until it finds the right one. Bug reported by Kyle Hasselbacher . hashcash-0.29 - 04-Mar-2004 - Adam Back * 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 * fix bug with timezone handling reported by Joris Bontje (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 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 * add space char after 'X-Hashcash:' header that you get with -X option * add LICENSE file hashcash-0.26 - 26-Jun-2003 - Adam Back * 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 (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 * 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 about how that can be inconvenient for scripting hashcash-0.24 - 15-Mar-2003 - Adam Back * fix minor error which made hashcash_expected_tries a tiny amount less efficient than realised hashcash-0.23 - 15-Mar-2003 - Adam Back * fix error in libhc would always fail in hashcash_check reported by Alan Barclay ; 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 * fix uninitialized counter string in hashcash_per_sec, bug reported by Mathias Langer hashcash-0.21 - 15-Aug-2002 - Adam Back * fix compile warnings with VC++ 6. hashcash-0.20 - 13-Aug-2002 - Adam Back * 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 * fix bug reported that minting always returns failure * fix erroneous logic involving validation of validity periods hashcash-0.18 - 23-Mar-2002 - Adam Back * 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 * 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 * 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 * deal with unix, DOS, and mac lf endings (rather than just unix) * fix bug reported by Doc.Cypher * modifications to compile under VC++ 6.0 on win32 * add -i feature hashcash-0.14 - 13-Mar-2002 - Adam Back * 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 * fix bug introduced in 0.12 * update documentation hashcash-0.12 - 03-Mar-2002 - Adam Back * 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 * 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 * change output format slightly to make it easier to recognize the collision amongst the verbose output hashcash-0.09 - 25-May-2001 - Adam Back * 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 * support for openSSL sha1 (-DOPENSSL) hashcash-0.07 - 08-Dec-1997 - Adam Back * bug fix in SHA1 code hashcash-0.06 - 07-May-1997 - Andy Dustman * bug fix + SPARSE compile option for library use hashcash-0.05 - 07-Mar-1997 - Adam Back * made mods as suggested by Andy Dustman to avoid collision collisions on larger collision lengths previous method was bugged hashcash-0.04 - 31-Mar-1997 - Adam Back * no description hashcash-0.03 - 30-Mar-1997 - Adam Back * put in fast SHA1, and other mods giving a 4x speedup * plus a few bug fixes hashcash-0.02 - 28-Mar-1997 - Chris Kuethe * added minimal macintosh support (Think C) hashcash-0.01 - 27-Mar-1997 - Adam Back * first version