CryptoSys API examples VB6 to VB.NET

MAC_Bytes

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]

[HOME]   [NEXT: MAC_HexFromBytes...]

Copyright © 2009-20 D.I. Management Services Pty Ltd. All rights reserved.