SHA1MessageDigest
SHA1MessageDigest
Computes SHA-1 digest value of the input message.
Syntax
IppStatus ippsSHA1MessageDigest(const Ipp8u *
pMsg
, int
len
, Ipp8u *
pMD
);
Include Files
ippcp.h
Parameters
- pMsg
- Pointer to the input message.
- len
- Message length in octets.
- pMD
- Pointer to the resultant digest.
Description
The function uses the selected hash algorithm to compute the digest value of the entire (non-streaming) input message.
Return Values
- ippStsNoErr
- Indicates no error. Any other value indicates an error or warning.
- ippStsNullPtrErr
- Indicates an error condition if any of the specified pointers isNULL.
- ippStsLengthErr
- Indicates an error condition if the input data stream length is less than zero.
Example
The code example below shows SHA1 digest of a message.
// Compute two SHA1 digests of a message: // 1-st will correspond of 1/2 message // 2-nd will correspond of whole message void SHA1_sample(void){ // get size of the SHA1 context int ctxSize; ippsSHA1GetSize(&ctxSize); // allocate the SHA1 context IppsSHA1State* pCtx = (IppsSHA1State*)( new Ipp8u [ctxSize] ); // and initialize the context ippsSHA1Init(pCtx); // define a message Ipp8u msg[] = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; int n; // update digest using a piece of message for(n=0; n<(sizeof(msg)-1)/2; n++) ippsSHA1Update(msg+n, 1, pCtx); // clone the SHA1 context IppsSHA1State* pCtx2 = (IppsSHA1State*)( new Ipp8u [ctxSize] ); ippsSHA1Init(pCtx2); ippsSHA1Duplicate(pCtx, pCtx2); // finalize and extract digest of a half message Ipp8u digest[20]; ippsSHA1Final(digest, pCtx); // update digest using the SHA1 clone context ippsSHA1Update(msg+n, sizeof(msg)-1-n, pCtx2); // finalize and extract digest of a whole message Ipp8u digest2[20]; ippsSHA1Final(digest2, pCtx2); delete [] (Ipp8u*)pCtx; delete [] (Ipp8u*)pCtx2; }