Creates a keyed-hash HMAC in byte format from byte data.
VB6/VBA
Debug.Print "Testing HMAC_Bytes ..." Dim abData() As Byte Dim abKey() As Byte Dim nDataLen As Long Dim nKeyLen As Long Dim abDigest() As Byte Dim nDigLen As Long Dim nRet As Long Dim i As Long ' Test case 4 from RFC 2202 and RFC 4231 ' key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819 ' key_len 25 ' data = 0xcd repeated 50 times ' data_len = 50 nKeyLen = 25 ReDim abKey(nKeyLen - 1) For i = 0 To nKeyLen - 1 abKey(i) = CByte(i + 1) Next Debug.Print "Key=" & cnvHexStrFromBytes(abKey) nDataLen = 50 ReDim abData(nDataLen - 1) For i = 0 To nDataLen - 1 abData(i) = &HCD Next ' Compute default HMAC (HMAC-SHA-1) nDigLen = PKI_SHA1_BYTES ReDim abDigest(nDigLen - 1) nRet = HMAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, PKI_HASH_SHA1) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-SHA-1 =" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "4c9007f4026250c6bc8414f9bf50c86c2d7235da" ' Compute HMAC-MD5 nDigLen = PKI_MD5_BYTES ReDim abDigest(nDigLen - 1) nRet = HMAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, PKI_HASH_MD5) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-MD5 =" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "697eaf0aca3a3aea3a75164746ffaa79" ' Compute HMAC-SHA-256 nDigLen = PKI_SHA256_BYTES ReDim abDigest(nDigLen - 1) nRet = HMAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, PKI_HASH_SHA256) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-SHA-256=" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b"
Output
Testing HMAC_Bytes ... Key=0102030405060708090A0B0C0D0E0F10111213141516171819 HMAC-SHA-1 =4C9007F4026250C6BC8414F9BF50C86C2D7235DA CORRECT =4c9007f4026250c6bc8414f9bf50c86c2d7235da HMAC-MD5 =697EAF0ACA3A3AEA3A75164746FFAA79 CORRECT =697eaf0aca3a3aea3a75164746ffaa79 HMAC-SHA-256=82558A389A443C0EA4CC819899F2083A85F0FAA3E578F8077A2E3FF46729665B CORRECT =82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b
VB.NET
Console.WriteLine("Testing HMAC_Bytes ...")
Dim abData() As Byte
Dim abKey() As Byte
Dim nDataLen As Integer
Dim nKeyLen As Integer
Dim abDigest() As Byte
Dim i As Integer
' Test case 4 from RFC 2202 and RFC 4231
' key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819
' key_len 25
' data = 0xcd repeated 50 times
' data_len = 50
nKeyLen = 25
ReDim abKey(nKeyLen - 1)
For i = 0 To nKeyLen - 1
abKey(i) = CByte(i + 1)
Next
Console.WriteLine("Key=" & Cnv.ToHex(abKey))
nDataLen = 50
ReDim abData(nDataLen - 1)
For i = 0 To nDataLen - 1
abData(i) = &HCD
Next
' Compute default HMAC (HMAC-SHA-1)
abDigest = Hmac.BytesFromBytes(abData, abKey, HashAlgorithm.Sha1)
If abDigest.Length = 0 Then Exit Sub ' ERROR
Console.WriteLine("HMAC-SHA-1 =" & Cnv.ToHex(abDigest))
Console.WriteLine("CORRECT =" & "4c9007f4026250c6bc8414f9bf50c86c2d7235da")
' Compute HMAC-MD5
abDigest = Hmac.BytesFromBytes(abData, abKey, HashAlgorithm.Md5)
If abDigest.Length = 0 Then Exit Sub ' ERROR
Console.WriteLine("HMAC-MD5 =" & Cnv.ToHex(abDigest))
Console.WriteLine("CORRECT =" & "697eaf0aca3a3aea3a75164746ffaa79")
' Compute HMAC-SHA-256
abDigest = Hmac.BytesFromBytes(abData, abKey, HashAlgorithm.Sha256)
If abDigest.Length = 0 Then Exit Sub ' ERROR
Console.WriteLine("HMAC-SHA-256=" & Cnv.ToHex(abDigest))
Console.WriteLine("CORRECT =" & "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b")
[Contents]