QuickHash Library C++ Interface


void Final( unsigned char* pDest );



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


Call this member function to retrieve the HMAC from the CHMAC object. The HMAC is retrieved in the memory buffer pointed by pDest. The size of the memory buffer pointed by pDest must be at least CHMAC<T>::DIGESTSIZE bytes. For example, the size of the memory buffer pointed by pDest must be at least CHMAC<CMD5>::DIGESTSIZE bytes, if the HMAC is calculated using the MD5 hash algorithm. 

After the Final method is performed, the CHMAC object is initialized for new calculations, as it would be constructed again. To initialize the CHMAC object with another key, call the Init method.


#include <fstream>
#include <QuickHash.h>

using namespace std;
using namespace QuickHash;

const unsigned int BUFF_SIZE = 1024;

int main()
    fstream file( "c:\\test.txt", ios::in | ios::binary );

    if( !file )
        return 1;

    unsigned char buff[ BUFF_SIZE ];
    unsigned char hmac[ CHMAC<CSHA1>::DIGESTSIZE ]; 

    char key[] = "My Password";

    //Instantiate a CHMAC object that uses SHA1 hash algorithm

    CHMAC<CSHA1> hm( (const unsigned char*)key, strlen( key ) );

    //Calculate the HMAC incrementally block by block using Update

    while( !file.eof() )
        file.read( ( char* )buff, BUFF_SIZE );
        hm.Update( buff, file.gcount() );

    //Do final changes and get the HMAC

    hm.Final( hmac );

    //Use the HMAC


    return 0;



CHMAC Overview   |   Class Members   |   Useful Links   |   HashCalc


See Also    CHMAC::FinalHex, CHMAC::Update, CHMAC::Init



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