### DESCRIPTION

The SHA_ and SHA1_ functions calculate a 160-bit cryptographic checksum (digest) for any number of input bytes. A cryptographic checksum is a one-way hash function; that is, it is computationally impractical to find the input corresponding to a particular output. This net result is a "fingerprint" of the input-data, which does not disclose the actual input. * SHA* (or * SHA-0*) is the original Secure Hash Algorithm specified in * FIPS* 160. It was quickly proven insecure, and has been superseded by * SHA-1*. * SHA-0* is included for compatibility purposes only.

The ` SHA1_Init`, ` SHA1_Update`, and ` SHA1_Final` functions are the core functions. Allocate an

.Vt SHA_CTX , initialize it with ` SHA1_Init`, run over the data with ` SHA1_Update`, and finally extract the result using ` SHA1_Final`.

` SHA1_End` is a wrapper for ` SHA1_Final` which converts the return value to a 41-character (including the terminating ’\0’) * ASCII* string which represents the 160 bits in hexadecimal.

` SHA1_File` calculates the digest of a file, and uses ` SHA1_End` to return the result. If the file cannot be opened, a null pointer is returned. ` SHA1_FileChunk` is similar to ` SHA1_File`, but it only calculates the digest over a byte-range of the file specified, starting at * offset* and spanning * length* bytes. If the * length* parameter is specified as 0, or more than the length of the remaining part of the file, ` SHA1_FileChunk` calculates the digest from * offset* to the end of file. ` SHA1_Data` calculates the digest of a chunk of data in memory, and uses ` SHA1_End` to return the result.