SHA1() computes the SHA-1 message digest of the n
bytes at d and places it in md (which must have space for
SHA_DIGEST_LENGTH == 20 bytes of output). If md is NULL, the digest
is placed in a static array. Note: setting md to NULL is not thread safe.

The following functions may be used if the message is not completely
stored in memory:

SHA1_Init() initializes a SHA_CTX structure.

SHA1_Update() can be called repeatedly with chunks of the message to
be hashed (len bytes at data).

SHA1_Final() places the message digest in md, which must have space
for SHA_DIGEST_LENGTH == 20 bytes of output, and erases the SHA_CTX.

The SHA224, SHA256, SHA384 and SHA512 families of functions operate in the
same way as for the SHA1 functions. Note that SHA224 and SHA256 use a
SHA256_CTX object instead of SHA_CTX. SHA384 and SHA512 use SHA512_CTX.
The buffer md must have space for the output from the SHA variant being used
(defined by SHA224_DIGEST_LENGTH, SHA256_DIGEST_LENGTH, SHA384_DIGEST_LENGTH and
SHA512_DIGEST_LENGTH). Also note that, as for the SHA1() function above, the
SHA224(), SHA256(), SHA384() and SHA512() functions are not thread safe if
md is NULL.

The predecessor of SHA-1, SHA, is also implemented, but it should be
used only when backward compatibility is required.