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