Creates a keyed message authentication code (MAC) as a byte array from byte data.
VB6/VBA
Debug.Print "Testing MAC_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 = API_SHA1_BYTES ReDim abDigest(nDigLen - 1) nRet = MAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, API_HASH_SHA1) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-SHA-1 =" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "4c9007f4026250c6bc8414f9bf50c86c2d7235da" ' Compute HMAC-MD5 nDigLen = API_MD5_BYTES ReDim abDigest(nDigLen - 1) nRet = MAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, API_HASH_MD5) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-MD5 =" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "697eaf0aca3a3aea3a75164746ffaa79" ' Compute HMAC-SHA-256 nDigLen = API_SHA256_BYTES ReDim abDigest(nDigLen - 1) nRet = MAC_Bytes(abDigest(0), nDigLen, abData(0), nDataLen, abKey(0), nKeyLen, API_HASH_SHA256) If nRet <= 0 Then Exit Sub ' ERROR Debug.Print "HMAC-SHA-256=" & cnvHexStrFromBytes(abDigest) Debug.Print "CORRECT =" & "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b"
Output
Testing MAC_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 MAC_Bytes ...") Dim abData() As Byte Dim abKey() As Byte Dim nDataLen As Integer Dim nKeyLen As Integer Dim abDigest() As Byte ''Dim nDigLen As Integer ''Dim nRet As Integer 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) ''nDigLen = API_SHA1_BYTES ''ReDim abDigest(nDigLen - 1) abDigest = Mac.BytesFromBytes(abData, abKey, MacAlgorithm.HmacSha1) If abDigest.Length <= 0 Then Exit Sub ' ERROR Console.WriteLine("HMAC-SHA-1 =" & Cnv.ToHex(abDigest)) Console.WriteLine("CORRECT =" & "4c9007f4026250c6bc8414f9bf50c86c2d7235da") ' Compute HMAC-MD5 ''nDigLen = API_MD5_BYTES ''ReDim abDigest(nDigLen - 1) abDigest = Mac.BytesFromBytes(abData, abKey, MacAlgorithm.HmacMd5) If abDigest.Length <= 0 Then Exit Sub ' ERROR Console.WriteLine("HMAC-MD5 =" & Cnv.ToHex(abDigest)) Console.WriteLine("CORRECT =" & "697eaf0aca3a3aea3a75164746ffaa79") ' Compute HMAC-SHA-256 ''nDigLen = API_SHA256_BYTES ''ReDim abDigest(nDigLen - 1) abDigest = Mac.BytesFromBytes(abData, abKey, MacAlgorithm.HmacSha256) If abDigest.Length <= 0 Then Exit Sub ' ERROR Console.WriteLine("HMAC-SHA-256=" & Cnv.ToHex(abDigest)) Console.WriteLine("CORRECT =" & "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b")
[Contents]