Contents 

QuickHash Library
QuickHash Library Overview
QuickHash Library Applications
QuickHash Library Installation
Register QuickHash Library
MD2
CMD2 ( C++ Interface )
CMD2 class members
MD2 API ( QuickHash API )
MD2 API Functions
MD2 ( QuickHash Type Library )
MD4
CMD4 ( C++ Interface )
CMD4 class members
MD4 API ( QuickHash API )
MD4 API Functions
MD4 ( QuickHash Type Library )
MD5
CMD5 ( C++ Interface )
CMD5 class members
MD5 API ( QuickHash API )
MD5 API Functions
MD5 ( QuickHash Type Library )
SHA-1
CSHA1 ( C++ Interface )
CSHA1 class members
SHA1 API ( QuickHash API )
SHA1 API Functions
SHA1 ( QuickHash Type Library )
SHA-2 (256)
CSHA256 ( C++ Interface )
CSHA256 class members
SHA256 API ( QuickHash API )
SHA256 API Functions
SHA256 ( QuickHash Type Library )
SHA-2 (384)
CSHA384 ( C++ Interface )
CSHA384 class members
SHA384 API ( QuickHash API )
SHA384 API Functions
SHA384 ( QuickHash Type Library )
SHA-2 (512)
CSHA512 ( C++ Interface )
CSHA512 class members
SHA512 API ( QuickHash API )
SHA512 API Functions
SHA512 ( QuickHash Type Library )
RIPEMD-128
CRIPEMD128 ( C++ Interface )
CRIPEMD128 ( C++ Interface )
RIPEMD128 API ( QuickHash API )
RIPEMD128 API Functions
RIPEMD128 ( QuickHash Type Library )
RIPEMD-160
CRIPEMD160 ( C++ Interface )
CRIPEMD160 ( C++ Interface )
RIPEMD160 API ( QuickHash API )
RIPEMD160 API Functions
RIPEMD160 ( QuickHash Type Library )
RIPEMD-256
CRIPEMD256 ( C++ Interface )
CRIPEMD256 ( C++ Interface )
RIPEMD256 API ( QuickHash API )
RIPEMD256 API Functions
RIPEMD256 ( QuickHash Type Library )
RIPEMD-320
CRIPEMD320 ( C++ Interface )
CRIPEMD320 ( C++ Interface )
RIPEMD320 API ( QuickHash API )
RIPEMD320 API Functions
RIPEMD320 ( QuickHash Type Library )
PANAMA
CPanama ( C++ Interface )
CPanama class members
PANAMA API ( QuickHash API )
PANAMA API Functions
PANAMA ( QuickHash Type Library )
TIGER
CTiger
CTiger class members
TIGER API ( QuickHash API )
TIGER API Functions
TIGER ( QuickHash Type Library )
CRC16
CCRC16 ( C++ Interface )
CCRC16 class members
CRC16 API ( QuickHash API )
CRC16 API Functions
CRC16 ( QuickHash Type Library )
CRC16C
CCRC16C ( C++ Interface )
CCRC16C class members
CRC16C API ( QuickHash API )
CRC16C API Functions
CRC16C ( QuickHash Type Library )
CRC32
CCRC32 ( C++ Interface )
CCRC32 class members
CRC32 API ( QuickHash API )
CRC32 API Functions
CRC32 ( QuickHash Type Library )
ADLER32
CAdler32 ( C++ Interface )
CAdler32 class members
ADLER32 API ( QuickHash API )
ADLER32 API Functions
ADLER32 ( QuickHash Type Library )
HMAC
CHMAC ( C++ Interface )
CHMAC class members
HMAC API ( QuickHash API )
HMAC API Functions
HMAC ( QuickHash Type Library )
QuickHash Type Library
Type Library Overview
Type Library Functions
Type Library Constants
Type Library Types
Type Library Error Codes
QuickHash Library Run-Time Dynamic Linking
Function Indicies in QuickHash.dll
License Agreement
Samples

SlavaSoft QuickHash Library Online Help

Prev Page Next Page
QuickHash Library API

SL_HMAC_Calculate

int SL_HASHCALL SL_HMAC_Calculate( unsigned int nAlgID, void* pDest, const void* pSrc, unsigned int nSrcLength, const void* pKey, unsigned int nKeyLength );

Return value

Nonzero if calculation is successful, otherwise 0. In particular, this function returns 0 when nAlgID is invalid.

Parameters

nAlgID

    [in] The ID of the hash algorithm selected for calculations. For example, nAlgID has to be set to SLC_SHA1_ALGID when you need to calculate the HMAC using SHA-1 hash algorithm.

    All supported hash algorithms with their corresponding IDs are listed in Table1.

 pDest

    [out] Pointer to the memory buffer that will receive the HMAC.

 pSrc

    [in] Pointer to the continuous memory block for which to calculate the HMAC.

 nSrcLength

    [in] Length in bytes of the memory block. 

 pKey

    [in] Pointer to the key which represents a continuous memory block.

 nKeyLength

    [in] Length in bytes of the key.

Remarks

Calculates the HMAC for the memory block pointed by pSrc using the key pointed by pKey. The HMAC is retrieved in the memory buffer pointed by pDest. The size of the memory buffer pointed by pDest must be at least DIGESTSIZE bytes. DIGESTSIZE is a predefined constant that specifies the size of the HMAC for a specific hash algorithm. For example, you have to allocate at least SLC_SHA1_DIGESTSIZE bytes for the memory buffer pointed by pDest if you need to calculate the HMAC using SHA-1 hash algorithm.

All supported hash algorithms with their corresponding DIGESTSIZEs are listed in Table1.

Table1. Supported hash algorithms, their IDs and DIGESTSIZEs.

Algorithm Name Algorithm ID Algorithm DIGESTSIZE
MD4 SLC_MD4_ALGID SLC_MD4_DIGESTSIZE
MD5 SLC_MD5_ALGID SLC_MD5_DIGESTSIZE
SHA-1 SLC_SHA1_ALGID SLC_SHA1_DIGESTSIZE
SHA-256 SLC_SHA256_ALGID SLC_SHA256_DIGESTSIZE
SHA-512 SLC_SHA512_ALGID SLC_SHA512_DIGESTSIZE
SHA-384 SLC_SHA384_ALGID SLC_SHA384_DIGESTSIZE
RIPEMD128 SLC_RIPEMD128_ALGID SLC_RIPEMD128_DIGESTSIZE
RIPEMD160 SLC_RIPEMD160_ALGID SLC_RIPEMD160_DIGESTSIZE
RIPEMD256 SLC_RIPEMD256_ALGID SLC_RIPEMD256_DIGESTSIZE
RIPEMD320 SLC_RIPEMD320_ALGID SLC_RIPEMD320_DIGESTSIZE
PANAMA SLC_PANAMA_ALGID SLC_PANAMA_DIGESTSIZE
TIGER SLC_TIGER_ALGID SLC_TIGER_DIGESTSIZE

Example

int main()
{
    char string[] = "Test String";
    char key[] = "Test Password";

    unsigned char hmac[ SLC_SHA384_DIGESTSIZE ];

    /*****Calculate the HMAC using SHA-384 hash algorithm*****/

    SL_HMAC_Calculate( SLC_SHA384_ALGID, hmac, string, strlen( string ), 
                                               key, strlen( key ) );

    /*****Use the HMAC****************************************/
    /*...*/

    return 0;
}

 

 

HMAC API Overview   |   HMAC API_Functions   |   Useful Links   |   HashCalc

 

See Also    SL_HMAC_CalculateHex, SL_HMAC_CalculateStr, SL_HMAC_CalculateStrHex


 

 

Send Feedback to SlavaSoft Inc. Tell a friend about QuickHash Library