windows-nt/Source/XPSP1/NT/net/ias/protocol/radius/hashhmac.cpp
2020-09-26 16:20:57 +08:00

141 lines
3.3 KiB
C++

//#--------------------------------------------------------------
//
// File: hashhmac.cpp
//
// Synopsis: Implementation of CHashHmacMD5 class methods
//
//
// History: 1/28/98 MKarki Created
//
// Copyright (C) 1997-98 Microsoft Corporation
// All rights reserved.
//
//----------------------------------------------------------------
#include "radcommon.h"
#include "hashhmac.h"
#include <md5.h>
#include <hmac.h>
//++--------------------------------------------------------------
//
// Function: CHashHmacMD5
//
// Synopsis: This is CHashHmacMD5 class constructor
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 1/28/98
//
//----------------------------------------------------------------
CHashHmacMD5::CHashHmacMD5()
{
} // end of CHashHmacMD5 constructor
//++--------------------------------------------------------------
//
// Function: ~CHashHmacMD5
//
// Synopsis: This is ~CHashHmacMD5 class constructor
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 10/2/97
//
//----------------------------------------------------------------
CHashHmacMD5::~CHashHmacMD5()
{
} // end of CHashHmacMD5 destructor
//++--------------------------------------------------------------
//
// Function: HashIt
//
// Synopsis: This is HashIt CHashHmacMD5 class public method used
// carry out hashing of the buffers provided
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 1/28/97
//
//----------------------------------------------------------------
BOOL
CHashHmacMD5::HashIt (
PBYTE pbyAuthenticator,
PBYTE pSharedSecret = NULL,
DWORD dwSharedSecretSize = 0,
PBYTE pBuffer1 = NULL,
DWORD dwSize1 = 0,
PBYTE pBuffer2 = NULL,
DWORD dwSize2 = 0,
PBYTE pBuffer3 = NULL,
DWORD dwSize3 = 0,
PBYTE pBuffer4 = NULL,
DWORD dwSize4 = 0,
PBYTE pBuffer5 = NULL,
DWORD dwSize5 = 0
)
{
BOOL bRetVal = FALSE;
HMACMD5_CTX Context;
__try
{
if (NULL == pbyAuthenticator)
__leave;
HMACMD5Init (&Context, pSharedSecret, dwSharedSecretSize);
if ((NULL != pBuffer1) && (0 != dwSize1))
{
HMACMD5Update (&Context, pBuffer1, dwSize1);
}
if ((NULL != pBuffer2) && (0 != dwSize2))
{
HMACMD5Update (&Context, pBuffer2, dwSize2);
}
if ((NULL != pBuffer3) && (0 != dwSize3))
{
HMACMD5Update (&Context, pBuffer3, dwSize3);
}
if ((NULL != pBuffer4) && (0 != dwSize4))
{
HMACMD5Update ( &Context, pBuffer4, dwSize4);
}
if ((NULL != pBuffer5) && (0 != dwSize5))
{
HMACMD5Update ( &Context, pBuffer5, dwSize5);
}
HMACMD5Final (&Context, pbyAuthenticator);
//
// done the hashing
//
bRetVal = TRUE;
}
__finally
{
//
// nothing here for now
//
}
return (bRetVal);
} // end of CHmacHashMD5::HashIt method