Need CryptCreateHash version of the HMACSHA1.ComputeHash .net function.

Here is the VB.net sample I am working with:

   Public Function aws_GetSignature _
       (ByVal Operation As String, ByVal TimeStamp As _
       DateTime) As String
   
       Dim strSig_Raw As String
       Dim strSig_UTF8 As Byte()
       Dim strSignature As String
       Dim objUTF8Encoder As UTF8Encoding
       Dim objHMACSHA1 As HMACSHA1
   
       strSig_Raw = "AmazonS3" & Operation & _
          aws_GetISOTimestamp(TimeStamp)
   
       objUTF8Encoder = New UTF8Encoding()
       strSig_UTF8 = objUTF8Encoder.GetBytes(strSig_Raw)
   
       objHMACSHA1 = New HMACSHA1( _
          objUTF8Encoder.GetBytes(m_strSecretAccessKey))
       strSignature = Convert.ToBase64String _
          (objHMACSHA1.ComputeHash( _
          objUTF8Encoder.GetBytes( _
          strSig_Raw.ToCharArray())))
   
       Return strSignature
   
   End Function

I have the ISOTimestamp, UTF-8 encoding, and base 64 functions working but need help with the HMACSHA1.ComputeHash function. How can I implement the HMACSHA1 function in VB6 using the CryptCreateHash Windows SDK function?

Kevin
LVL 81
zorvek (Kevin Jones)ConsultantAsked:
Who is Participating?
 
DanRollinsConnect With a Mentor Commented:
Here's how I do it in C++ (I do add a bit of error checking...)


HCRYPTPROV  m_hProv;
HCRYPTHASH  m_hHash;
HCRYPTKEY   m_hKey;
 
char* pszKey="someSecretKeyText";
m_fOK= CryptAcquireContext(&m_hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT );
m_fOK= CryptCreateHash(m_hProv, CALG_MD5, 0, 0, &m_hHash);
m_fOK= CryptHashData( m_hHash, (BYTE*)pszKey, strlen(pszKey), 0);
m_fOK= CryptDeriveKey( m_hProv, CALG_RC4, m_hHash, CRYPT_EXPORTABLE, &m_hKey);
 
... then later:
m_fOK= CryptEncrypt(m_hKey, 0, TRUE, 0, pData, dwDataLen, *dwDataLen);

Open in new window

0
 
zorvek (Kevin Jones)ConsultantAuthor Commented:
Dan, thanks for the response. It's a pretty tough problem with I never got working. But one of my coworkers found some code that appears to use the same API calls and successfully creates a hash. I just need to dissect it and figure out what they did that I did not do. Kevin
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.