Is a keyed-hash function that provides message authentication using the HMAC algorithm and the SHA-1 hash function, passing its arguments in hexadecimal format.
Public Declare Function SHA1_HmacHex Lib "diCryptoSys.dll"
(ByVal strDigest As String, ByVal strHexData As String,
ByVal strHexKey As String) As Long
nRet = SHA1_Hmac(strDigest, strHexData, strHexKey)
long __stdcall SHA1_HmacHex(char *szDigest, const char *sHexText, const char *sHexKey);
If successful, the return value is 0; otherwise it returns a non-zero error code.
Sha1.Hmac Method (String, String)
sha1.HmacHex
Public Function HmacHex(ByVal strHexText As String, ByVal strHexKey As String) As String
See sha1.HmacHex.
The string variable szDigest must be at least 40 (API_MAX_SHA1_CHARS) characters long (41 in a C program). szData and szKey are expected to be an even number of characters long, i.e. representing complete byte values. Any trailing odd character will be ignored.
'Example from Wei Dai's Crypto++ test vectors 'fipstest.cpp - written and placed in the public domain by Wei Dai 'From http://trolocsis.com/crypto++/fipstest_8cpp-source.html 'MAC_KnownAnswerTest<HMAC<SHA> >( '"303132333435363738393a3b3c3d3e3f40414243", '"Sample #2", '"0922d3405faa3d194f82a45830737d5cc6c75d24"); Dim nRet As Long Dim strDigest As String * 40 Dim strMessage As String Dim sHexMsg As String Dim sCorrect As String sCorrect = "0922d3405faa3d194f82a45830737d5cc6c75d24" ' Convert data to hex format sHexMsg = cnvHexStrFromString("Sample #2") nRet = SHA1_HmacHex(strDigest, sHexMsg, "303132333435363738393a3b3c3d3e3f40414243") Debug.Print "Digest =" & strDigest Debug.Print "Correct=" & sCorrect Debug.Assert (strDigest = sCorrect)
This should result in output as follows:
Digest =0922d3405faa3d194f82a45830737d5cc6c75d24 Correct=0922d3405faa3d194f82a45830737d5cc6c75d24