| The SHA (Secure Hash Algorithm) library. |
| SHA is a message digest algorithm that can be used to condense an arbitrary |
| length message down to a 20 byte hash. The functions all need to be passed |
| a SHA_CTX which is used to hold the SHA context during multiple SHA_Update() |
| function calls. The normal method of use for this library is as follows |
| This library contains both SHA and SHA-1 digest algorithms. SHA-1 is |
| an update to SHA (which should really be called SHA-0 now) which |
| tweaks the algorithm slightly. The SHA-1 algorithm is used by simply |
| using SHA1_Init(), SHA1_Update(), SHA1_Final() and SHA1() instead of the |
| SHA*() calls |
| |
| SHA_Init(...); |
| SHA_Update(...); |
| ... |
| SHA_Update(...); |
| SHA_Final(...); |
| |
| This library requires the inclusion of 'sha.h'. |
| |
| The functions are as follows: |
| |
| void SHA_Init( |
| SHA_CTX *c); |
| This function needs to be called to initiate a SHA_CTX structure for |
| use. |
| |
| void SHA_Update( |
| SHA_CTX *c; |
| unsigned char *data; |
| unsigned long len); |
| This updates the message digest context being generated with 'len' |
| bytes from the 'data' pointer. The number of bytes can be any |
| length. |
| |
| void SHA_Final( |
| unsigned char *md; |
| SHA_CTX *c; |
| This function is called when a message digest of the data digested |
| with SHA_Update() is wanted. The message digest is put in the 'md' |
| array and is SHA_DIGEST_LENGTH (20) bytes long. |
| |
| unsigned char *SHA( |
| unsigned char *d; |
| unsigned long n; |
| unsigned char *md; |
| This function performs a SHA_Init(), followed by a SHA_Update() |
| followed by a SHA_Final() (using a local SHA_CTX). |
| The resulting digest is put into 'md' if it is not NULL. |
| Regardless of the value of 'md', the message |
| digest is returned from the function. If 'md' was NULL, the message |
| digest returned is being stored in a static structure. |
| |