Visible to Intel only — GUID: GUID-8CF420E8-97A9-4A1B-B575-2D30E08AC26F
Visible to Intel only — GUID: GUID-8CF420E8-97A9-4A1B-B575-2D30E08AC26F
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 is NULL. |
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;
}