Extended Library Functions sha1(3EXT)
NAME
sha1, SHA1Init, SHA1Update, SHA1Final - SHA1 digest func-
tionsSYNOPSIS
cc [ flag ... ] file ... -lmd [ library ... ]
#include
void SHA1Init(SHA1_CTX *context);
void SHA1Update(SHA1_CTX *context, unsigned char *input,
unsigned int inlen);void SHA1Final(unsigned char *output, SHA1_CTX *context);
DESCRIPTION
The SHA1 functions implement the SHA1 message-digest algo-
rithm. The algorithm takes as input a message of arbitrarylength and produces a 160-bit "fingerprint" or "message dig-
est" as output. The SHA1 message-digest algorithm is
intended for digital signature applications in which large files are "compressed" in a secure manner before beingencrypted with a private (secret) key under a public-key
cryptosystem such as RSA.SHA1Init(), SHA1Update(), SHA1Final()
The SHA1Init(), SHA1Update(), and SHA1Final() functions
allow a SHA1 digest to be computed over multiple messageblocks. Between blocks, the state of the SHA1 computa-
tion is held in an SHA1 context structure allocated by the caller. A complete digest computation consists of calls to SHA1 functions in the following order: one callto SHA1Init(), one or more calls to SHA1Update(), and
one call to SHA1Final().The SHA1Init() function initializes the SHA1 context
structure pointed to by context. The SHA1Update() function computes a partial SHA1 digeston the inlen-byte message block pointed to by input, and
updates the SHA1 context structure pointed to by context accordingly.The SHA1Final() function generates the final SHA1 dig-
est, using the SHA1 context structure pointed to by con-
text. The 16-bit SHA1 digest is written to output. After
a call to SHA1Final(), the state of the context struc-
ture is undefined. It must be reinitialized withSunOS 5.11 Last change: 13 Nov 2007 1
Extended Library Functions sha1(3EXT)SHA1Init() before it can be used again.
SECURITY The SHA1 algorithm is also believed to have some weaknesses.Migration to one of the SHA2 algorithms-including SHA256,
SHA386 or SHA512-is highly recommended when compatibility
with data formats and on wire protocols is permitted.RETURN VALUES
These functions do not return a value.EXAMPLES
Example 1 Authenticate a message found in multiple buffersThe following is a sample function that authenticates a mes-
sage found in multiple buffers. The calling function pro-
vides an authentication buffer to contain the result of the SHA1 digest.#include
#include
#include
intAuthenticateMsg(unsigned char *auth_buffer, struct iovec
*messageIov, unsigned int num_buffers)
{SHA1_CTX sha1_context;
unsigned int i;SHA1Init(&sha1_context);
for(i=0; i
{ SHA1Update(&sha1_context, messageIov->iov_base,
messageIov->iov_len);
messageIov += sizeof(struct iovec); }SHA1Final(auth_buffer, &sha1_context);
return 0; }ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 13 Nov 2007 2
Extended Library Functions sha1(3EXT)____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
SEE ALSO
sha2(3EXT), libmd(3LIB) RFC 1374SunOS 5.11 Last change: 13 Nov 2007 3