Digest::SHA version 3.0
=======================

The Digest::SHA module provides a Perl interface to all varieties
of the Secure Hash Algorithm specified in the current NIST Secure
Hash Standard (FIPS PUB 180-2).  In other words, the module supports
SHA-1, SHA-256, SHA-384, and SHA-512.  Fuctions are also included
to compute keyed SHA hashes using the HMAC algorithm.

The inteface conforms to the conventions and guidelines specified
in the CPAN Digest:: module, and provides many additional functions
to handle bit-oriented data and the persistent storage of intermediate
SHA states.  The core of Digest::SHA is written in C for speed.

Whereas most message digest packages are restricted to byte-oriented
data, the full SHA standard calls for bit-oriented inputs as well.
The Digest::SHA module accepts both types of input, and allows
digest calculations to be performed directly, or iteratively in
stages.

The underlying C code is designed to be portable, and requires no
special libraries beyond those found with typical compilers.
However, if your compiler can't handle 64-bit integral types (i.e.
long long), the functions associated with the SHA-384 and SHA-512
transforms will return null values.

Prior to version 2.2, the SHA algorithm code mapped as closely as
possible to the NIST specification in the interest of establishing
correctness.  Subsequent versions of this module have begun to
focus on performance optimization, particularly with regard to the
heavily-used SHA-1 transform.  Informal benchmarks indicate that
the version 2.2 code is roughly 20-30% faster than its predecessor
for SHA-1 operations.  The goal is to achieve the fastest possible
C implementation without any sacrifice in portability.  The author
welcomes any comments or suggestions for further enhancements.

The tests subdirectory (t/*.t) contains an extensive set of SHA
vectors compiled from various sources.  Of particular interest are
the NIST vectors, which examine a large variety of bit-strings and
byte-strings (see the "t/nist/COPYRIGHT" file for details).  Also
useful are the bit-vectors supplied by Jim Gillogly and Francois
Grieu, which check the behavior of implementations for input strings
that exceed 2^32 bits in length.

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

DEPENDENCIES

   None.

COPYRIGHT AND LICENCE

Copyright (C) 2003 Mark Shelor

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
