Revision history for Perl extension Digest::SHA. 5.85 Wed Jun 26 04:05:26 MST 2013 - workaround for repeated calls to shaclose (ref. Bug #86295) -- need to explicitly reset internal pointer to NULL ref. shaclose() in SHA.xs - corrected typos in shasum script -- ref. Bug #85430 5.84 Sat Mar 9 17:36:08 MST 2013 - untweaked Makefile.PL to remove dependencies of SHA.c -- dependencies were breaking builds on VMS -- retaining dependencies provides too little benefit for cost of portable workaround 5.83 Mon Mar 4 08:12:00 MST 2013 - removed code for standalone C operation (no longer used) -- eliminates need for external symbols -- consolidates SHA and HMAC code -- reduces size of object files -- thanks to Marc Lehmann for suggestions - tweaked Makefile.PL to show dependencies of SHA.c 5.82 Thu Jan 24 04:54:12 MST 2013 - introduced workaround to SvPVbyte bug in Perl 5.6 -- module behavior now consistent under all Perls 5.6+ -- ref: new test script t/unicode.t -- SHA routines now always croak on wide chars (5.6+) - removed "static" message schedules from C code -- default "auto" is now just as fast -- thread-safe option (-t) no longer necessary -- still allowed, but ignored -- simplifies source and header files -- eliminates SHA_STO_CLASS and SHA_THREAD_SAFE -- ref. Bug #82784 -- thanks to Steve Hay for initial patch - provided documentation to describe Unicode handling -- ref: Bug #82378 - updated documentation of NIST statement on SHA-1 5.81 Mon Jan 14 05:17:08 MST 2013 - corrected load subroutine (SHA.pm) to prevent double-free -- Bug #82655: Security issue - segfault -- thanks to Victor Efimov and Nicholas Clark for technical expertise and suggestions 5.80 Mon Dec 10 14:15:26 MST 2012 - obtained noticeable speedup on Intel/gcc -- by setting -O1 and -fomit-frame-pointer -- SHA-1 about 63% faster, SHA-2 improves 11-20% 5.74 Sat Nov 24 03:10:18 MST 2012 - handle wide-string input by converting to bytes first -- viz. use SvPVbyte instead of SvPV in SHA.xs -- thanks to Eric Brine for summary and code 5.73 Wed Oct 31 04:32:44 MST 2012 - provided workaround for DEC compiler bug (ref. Makefile.PL) 5.72 Mon Sep 24 15:22:08 MST 2012 - adjusted module installation directory for later Perls -- As of 5.11 Perl searches 'site' first, so use that -- ref. INSTALLDIRS in Makefile.PL -- thanks to Robert Sedlacek for patch 5.71 Wed Feb 29 04:06:10 MST 2012 - prevented $! from getting clobbered in _bail() routine -- thanks to Zefram for patch - added example of BITS mode usage to shasum documentation 5.70 Wed Dec 14 02:32:10 MST 2011 - added BITS mode to addfile method and shasum -- partial-byte inputs now possible via files/STDIN -- allows shasum to check all 8074 NIST Msg vectors -- previously required special programming 5.63 Tue Nov 8 02:36:42 MST 2011 - added code to allow very large data inputs all at once -- previously limited to several hundred MB at a time -- many thanks to Thomas Drugeon for his elegant patch - removed outdated reference URLs from several test scripts -- these URLs aren't essential, and often go stale -- thanks to Leon Brocard for spotting this -- ref. rt.cpan.org #68740 5.62 Sat May 14 04:00:34 MST 2011 - removed unnecessary loading of MIME::Base64 module -- thanks to dolmen for pointing this out 5.61 Wed Mar 9 05:26:36 MST 2011 - corrected bug in 'algorithm' method - fixed -x option in Makefile.PL -- not often used since it deliberately excludes all 64-bit SHA transforms - addressed minor documentation oversights 5.60 Thu Mar 3 05:26:42 MST 2011 - added new SHA-512/224 and SHA-512/256 transforms -- ref. NIST Draft FIPS 180-4 (February 2011) - simplified shasum by removing duplicative text - improved efficiency of Addfile -- expensive -T test now occurs only in portable mode 5.50 Tue Dec 14 06:20:08 MST 2010 - adopted convention that '-' always means STDIN -- actual filename '-' accessed as './-' -- accords with behavior of sha1sum/md5sum - corrected undefined subroutine oversight in shasum -- inadvertent migration of _bail() from SHA.pm 5.49 Sun Dec 12 07:22:04 MST 2010 - modified Addfile to accept all POSIX filenames -- standard allows all characters except NUL and '/' - updated shasum to more closely mimic sha1sum/md5sum -- added "backslash processing" to handle newlines and backslashes in filenames -- now accepts all POSIX filenames via Addfile -- thanks to Sean Burke for identifying edge cases 5.48 Mon Jan 4 16:32:52 MST 2010 - fixed "shasum -a0" option (ref. rt.cpan.org #53319) -- incorrectly accepted 0 as a valid algorithm -- thanks to Zefram for patch - updated URL for NIST test vectors -- ref. files t/nistbit.t, t/nistbyte.t -- thanks to Leon Brocard for patch 5.47 Wed Apr 30 04:00:54 MST 2008 - modified Makefile.PL to install in core for Perls >= 5.10 -- thanks to Jerry Hedden for patch - changed from #include <> to #include "" in SHA.xs -- some platforms not able to find SHA source files -- thanks to Alexandr Ciornii for testing - moved .pm file to appropriate lib directory - minor addition to META.yml 5.46 Wed Apr 9 05:04:00 MST 2008 - modified Addfile to recognize leading and trailing whitespace in filenames (ref. rt.cpan.org #34690) - minor C source code modification (ref. hmac.c) - use const in sha.c for clean builds with -Wwrite-strings -- thanks to Robin Barker for patch 5.45 Tue Jun 26 02:36:00 MST 2007 - extended portability to earlier Perls -- works on Perl 5.003 and later -- thanks to Jim Doble for testing on legacy platforms - updated META.yml to conform to current META spec (1.3) - minor documentation fixes 5.44 Sat Oct 14 00:42:44 MST 2006 - removed SIGNATURE file from distribution -- spurious errors from CPANPLUS can break build - eliminated ppport.h header file -- significantly reduces size of distribution - modified C functions in src/hmac.c to use ANSI prototypes -- thanks to Jarkko Hietaniemi for patch 5.43 Sat Aug 5 02:36:18 MST 2006 - undid Perl Best Practice of favoring 3-argument "open" -- 3-arg version uses different semantics for "-" causing bugs in addfile and shasum - modified underlying C functions to use ANSI prototypes -- requested by Steve Hay (ref. Smoke [5.9.4] 28630) -- K&R style was causing numerous warnings from Borland compiler 5.42 Mon Jul 24 04:04:40 MST 2006 - minor code changes suggested by Perl::Critic -- e.g. no bareword filehandles, no 2-argument open's - updated public key (ref. B538C51C) -- previous one (0AF563FE) expired July 2, 2006 - added documentation to warn that Base64 digests are NOT padded -- padding must be done by user if interoperability with other software is required 5.41 Sat Jun 3 01:50:46 MST 2006 - corrected addfile -- process $file argument as a filehandle unless passed as a SCALAR (which indicates a file name) 5.40 Fri Jun 2 04:00:30 MST 2006 - modified addfile to accept indirect filehandles -- ref. rt.cpan.org #19627 and #19641 5.39 Sun May 28 03:22:24 MST 2006 - modified shasum to warn rather than die for file errors -- to follow conventions of GNU sha1sum/md5sum 5.38 Thu May 25 02:02:02 MST 2006 - added new capabilities to the "addfile" method -- now able to accept file names as well as handles -- includes mode for portable digest calculation -- thanks to Adam Kennedy for emails and ideas ref. File::LocalizeNewlines - used expanded addfile interface to simplify shasum (sumfile) -- regex a tad less general than 5.37, but handles all known newline variants in UNIX/Windows/MacOS - enhanced WARNING messages from shasum checkfile processing -- to mimic behavior of md5sum 5.37 Mon May 8 04:30:09 MST 2006 - modified shasum to avoid file slurping (ref. sub sumfile) - improved error handling of checksum files in shasum -- to better mimic the behavior of md5sum - refined line-break regex in shasum (ref. sub sumfile) -- catches multiple CR's preceding LF thanks to Gisle Aas for suggested patch - changed loop vars to signed int's in shadump (ref. src/sha.c) -- to prevent type mismatch warnings 5.36 Mon May 8 01:38:36 MST 2006 - fixed the "portable" option in shasum -- normalize line-breaks in text files only 5.35 Thu May 4 16:54:42 MST 2006 - added "portable" option to shasum -- to make digests match across Windows/Unix/MacOS - enabled bundling of shasum command line options -- to mimic behavior of md5sum - removed \r's from text files in t/nist directory -- resolves SIGNATURE clashes (rt.cpan.org #18983) - changed suffix on SHA64_MAX (src/sha.h) to ULL -- eliminates gcc warnings (rt.cpan.org #18988) - specified minimum Perl version for module and Makefile.PL -- closes rt.cpan.org #18984 5.34 Thu Feb 2 18:55:40 MST 2006 - removed Unix-style pathnames in test scripts -- causing problems on OpenVMS -- thanks to Steve Peters for patch - included latest version of Perl Portability header (ppport.h) - added PERL_CORE check to test scripts -- allows module to be built into Perl distribution 5.32 Fri Dec 2 02:32:20 MST 2005 - added POD section to shasum script -- thanks to Gunnar Wolf for patch - made minor code changes to silence compiler warnings -- resulting from signed/unsigned integer mixing - inserted code in test scripts for POD checking -- to recover gracefully if Test::More isn't installed 5.31 Mon Sep 5 00:52:42 MST 2005 - added standard tests for pod and pod-coverage checking - inserted subtest to check for failure when using unrecognized SHA algorithm 5.30 Sat Aug 20 16:46:08 MST 2005 - updated docs with recent NIST statement on SHA-1 -- advises use of larger and stronger hash functions (i.e. SHA-224/256/384/512) for new developments 5.29 Sun Aug 14 04:48:34 MST 2005 - added explicit casts in "shaload" routine (ref. "ldvals") -- thanks to E. Allen Smith for pointing out SGI compiler warnings on IPxx-irix platforms - updated docs with cautionary note about SHA-1 5.28 Wed Nov 10 15:33:20 MST 2004 - provided more flexible formatting of SHA state files -- entries may now contain embedded whitespace for improved readability - minor code cleanups 5.27 Sun Oct 24 02:54:00 MST 2004 - minor code cleanups -- reduces size of dump files for SHA-1/224/256 5.26 Thu Oct 7 14:52:00 MST 2004 - streamlined distribution -- reduced NIST vector tests from 200 to 20 -- former number was overkill -- distro now downloads and builds more quickly - rewrote SYNOPSIS sections in pod file - made additional tweaks to t/8-shasum.t for portability - cleaned up test scripts 5.25 Sun Sep 12 18:48:00 MST 2004 - removed non-essential test script -- t/8-shasum.t causes problems on sparc64-linux - reverted to using eval "require $module" in shasum 5.24 Sun Sep 12 02:50:18 MST 2004 - modified shasum to use barewords in "require" statements -- ref. perl.cpan.testers (157305) 5.23 Thu Sep 9 23:06:18 MST 2004 - corrected bug in test script -- use blib when invoking perl as an external command in t/8-shasum.t 5.22 Tue Sep 7 19:12:40 MST 2004 - broadened SHA-384/512 support -- to compilers with no ULLONG_MAX in limits.h -- e.g IBM C (xlC 6.0.0) on AIX 4.3.3 -- thanks to Chris Carey for suggestions and technical expertise - improved use of static storage class in transforms -- detection of Intel arch. now done in Makefile.PL -- NB: static not used if compiling for thread safety - minor changes to documentation 5.21 Mon Aug 23 04:02:00 MST 2004 - removed 64-bit constant expressions from #if statements -- ref. src/sha.h (lines 55, 58, and 61) -- even if compiler supports long long's, preprocessor may use long's when evaluating expressions - improved test script for "shasum" (t/8-shasum.t) -- exercises check file option (-c) 5.20 Sun Aug 15 04:24:48 MST 2004 - introduced "shasum" script -- mimics the usage and behavior of "md5sum" -- adds "-a" option to select SHA algorithm -- for help, just type "shasum -h" 5.10 Fri Aug 6 02:04:38 MST 2004 - simplified module documentation -- made it consistent with Digest::SHA::PurePerl docs 5.03 Sat Jul 31 00:00:48 MST 2004 - corrected HMAC-SHA-384/512 bug (cpan #7181, Adam Woodbury) -- code was using hardwired blocksize for SHA-1/256 -- ref. src/hmac.c, src/hmac.h 5.02 Thu Jul 29 02:48:00 MST 2004 - updated documentation and "dump-load.t" test script -- to be consistent with Digest::SHA::PurePerl - included a SIGNATURE file -- for stronger authentication of module contents -- ref. Module::Signature on CPAN - corrected embarrassing misspelling in docs -- apologies to Gisle Aas 5.01 Fri May 21 13:08:12 MST 2004 - check for undefined SHA handle when calling "shaclose()" -- prevents intermittent cleanup errors during global object destruction 5.00 Fri May 14 04:45:00 MST 2004 - minor documentation fixes - restored classical style of version numbering (X.YZ) -- previous X.Y.Z style caused installation difficulties when using CPANPLUS 4.3.3 Wed May 5 00:30:40 MST 2004 - fixed bug in "strto64()" function -- caused problems in state files with CR/LF pairs -- thanks to Martin Thurn for testing support 4.3.2 Wed Apr 28 03:56:00 MST 2004 - added Makefile.PL options -- thread-safety: -t -- exclude 384/512 support: -x -- e.g. perl Makefile.PL -t - temporarily suppress dump/load tests for SHA-384/512 -- pending clarification of problem on sun4u sparc 4.3.1 Thu Mar 4 02:54:00 MST 2004 - removed unused functions from XS file -- reduces size of compiled objects - simplified implementation of Digest::SHA object -- now a blessed SHAPtr ref instead of blessed array ref -- results in slight speed-up of OO operations - streamlined underlying C source -- used macros to consolidate repetitive code - rewrote test scripts to depend on Test rather than Test::More -- allows module to be checked in minimal Perl environments - added compilation option for thread-safety -- overrides use of static arrays 4.3.0 Sat Feb 7 02:58:00 MST 2004 - included SHA-384/512 support if using Microsoft C/C++ -- uses MSVC's __int64 in place of "long long" - enhanced portability and efficiency on diverse platforms -- automatically sets up optimal types for 32/64-bit ops - improved test scripts for better reporting -- many thanks to Alex Muntada for helpful suggestions 4.2.2 Sat Jan 31 17:10:20 MST 2004 - repaired 32-bit SHA operations for 8-byte longs 4.2.1 Sat Jan 24 00:56:54 MST 2004 - modified I/O and memory management in underlying C code -- uses Perl libraries when compiled as CPAN module -- otherwise defaults to ANSI C libraries -- bypasses problems in MSWin multi-threaded Perls -- avoids "Free to wrong pool" error -- special thanks to Robert Gilmour and Brian Gladman for technical guidance and testing 4.2.0 Sat Dec 27 16:08:00 MST 2003 - added support for recently-announced SHA-224 algorithm -- ref. FIPS 180-2 Change Notice 1 -- also includes HMAC-SHA-224 4.1.0 Thu Dec 25 00:58:00 MST 2003 - repaired "nist-vectors" test scripts for MSWin32 portability -- use binmode for data files 4.0.9 Wed Dec 24 02:58:22 MST 2003 - use canonical file specs in test scripts -- enhances portability across different OSes - modify type declarations of objects in XS file -- re-declare as (SV *) and cast to (AV *) SvRV(self) -- in response to AVPtr problem on MSWin32 4.0.8 Thu Dec 18 23:32:00 MST 2003 - inherits from Digest::base if installed -- also checks for MIME::Base64 -- still fully-functional if neither are installed - added buffer overflow protection in underlying C code -- ref. shahex() and shabase64() routines -- prior code appeared impossible to exploit, but ... -- better safe than sorry -- does not impact runtime efficiency - minor code cleanup 4.0.7 Sat Dec 13 00:48:24 MST 2003 - check for undefined SHA handle when calling "shaclose()" -- was causing cleanup err during global destruction 4.0.6 Thu Dec 11 02:18:00 MST 2003 - more optimization and streamlining -- a bit faster on non-big-endians (e.g. Intel) - rewrote time-critical functions and methods in XS - removed unused C functions from source files 4.0.5 Sat Dec 6 00:02:24 MST 2003 - performance optimizations -- rewrote "add" method in XS -- unrolled loops in sha256 transform 4.0.4 Thu Dec 4 00:07:00 MST 2003 - made Digest::SHA into a self-contained module -- no longer depends on Digest::base -- more convenient for users -- no need to install Digest:: module 4.0.3 Wed Dec 3 00:01:20 MST 2003 - Digest::SHA now a subclass of Digest::base -- inherits hexdigest/b64digest/addfile methods - added "hashsize" method - removed old "shaopen()/shawrite()/..." legacy code -- in favor of standard, streamlined OO interface - renamed test vector files from NIST -- prevents problems on 8+3 filesystems - added test for Dave Ireland's SHA-256 vector 4.0.0 Sat Nov 29 21:14:09 MST 2003 - major streamlining of interface (hence, major version change) -- coordinated with Gisle Aas and J. Duque -- goal is to produce a single SHA module -- adheres to OO and functional styles of Digest:: -- greatly reduces the number of interface functions -- old functions still supported -- use Digest::SHA ':legacy' -- will be deprecated in near future - rewrote all test scripts to match new interface -- very easy to modify all 281 tests -- old interface maps cleanly to new one 3.0 Wed Nov 26 05:02:34 MST 2003 - added functions that conform to Digest:: interface -- both functional and OO styles -- byte-oriented data only -- continue to support original interface as well -- necessary for bit-oriented data - supplied formal test vectors for HMAC-SHA-256 -- from draft-ietf-ipsec-ciph-sha-256-01.txt - included tests for all OO methods 2.4 Sat Nov 22 17:10:22 MST 2003 - code cleanup -- "sha.c" now completely free of #ifdef's - modularized all 64-bit (long long) code - improved readability of header files - simplified logic of "fixdump" utility 2.3 Wed Nov 19 03:54:31 MST 2003 - minor optimizations and code cleanup -- improved maintainability by reducing #ifdef's -- sha1 transform code now easier to follow - streamlined shadump/shaload file format -- eliminated special "HQ" entry -- state now held in "H" for all transforms -- supplied "fixdump" utility to convert old format - SHA-384/512 functions now return NULL for no 64-bit operations -- previously they were undefined -- no longer necessary to use eval's to test for presence 2.2 Sun Nov 16 01:54:00 MST 2003 - optimized the performance of the SHA-1 transform -- around 20-30% faster than previous version -- achieved by loop unrolling and assignment consolidation - enhanced shaload/shadump to allow interaction with stdin/stdout -- "$filename" argument now optional 2.1 Sun Nov 9 03:28:04 MST 2003 - simplified data input routines -- length argument now optional for byte data (special thanks to Jeffrey Friedl for this idea) -- interface still compatible with earlier versions -- changes will not affect existing client code - streamlined underlying C code for easier maintenance - provided additional tests for persistent data 2.0 Sat Nov 1 03:55:36 MST 2003 - added functions for HMAC-SHA-1/256/384/512 (FIPS PUB 198) - shadump/shaload files now compatible between 32/64-bit machines 1.01 Sat Oct 25 02:44:55 MST 2003 - package now downloads and installs much faster - reduced distribution size by 80% -- pruned extensive NIST vectors to a useful subset -- still possible to test all vectors if desired --- see "t/nist/COPYRIGHT" file for details - added routines to provide persistent storage of SHA states -- shadump() and shaload() - reduced runtime of large bitstring tests (gillogly-hard) -- illustrates usefulness of shadump()/shaload() 1.0 Sat Oct 18 17:35:07 MST 2003 - documentation fixes - code cleanup: no more compiler warnings from gcc -Wall - added code to allow reading of intermediate digest state -- shahex() prior to shafinish() returns current state 0.9 Thu Oct 9 20:43:54 MST 2003 - version updated to reflect portability check and passing of all tests (1401) 0.01 Wed Oct 8 22:28:05 2003 - original version; created by h2xs 1.22 with options -x -A -n Digest::SHA sha.h