CryptoSys API examples VB6 to VB.NET

GCM_Encrypt (2)

Provides authenticated encryption using the Galois/Counter Mode (GCM) of operation with the AES algorithm (AES-GCM).

VB6/VBA

Debug.Print "Testing GCM_Encrypt ..."
Dim abKey() As Byte
Dim abAAD() As Byte
Dim abIV() As Byte
Dim abTag() As Byte
Dim nKeyLen As Long
Dim nAadLen As Long
Dim nIvLen As Long
Dim nTagLen As Long
Dim nRet As Long
' Source: http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00321.html
' KEY feffe9928665731c6d6a8f9467308308
' IV  cafebabefacedbaddecaf888
' AAD feedfacedeadbeeffeedfacedeadbeef
' TAG 54df474f4e71a9ef8a09bf30da7b1a92
abKey = cnvBytesFromHexStr("feffe9928665731c6d6a8f9467308308")
abIV = cnvBytesFromHexStr("cafebabefacedbaddecaf888")
abAAD = cnvBytesFromHexStr("feedfacedeadbeeffeedfacedeadbeef")
nKeyLen = UBound(abKey) + 1
nIvLen = UBound(abIV) + 1
nAadLen = UBound(abAAD) + 1

Debug.Print "KEY " & cnvHexStrFromBytes(abKey)
Debug.Print "IV  " & cnvHexStrFromBytes(abIV)
Debug.Print "AAD " & cnvHexStrFromBytes(abAAD)

' Dimension output array
nTagLen = API_MAX_GMAC_BYTES
ReDim abTag(nTagLen - 1)

' GMAC := Encrypt with no CT output or PT input. GMAC value is in tag.
nRet = GCM_Encrypt(0, 0, abTag(0), nTagLen, 0, 0, _
    abKey(0), nKeyLen, abIV(0), nIvLen, abAAD(0), nAadLen, 0)
Debug.Print "TAG " & cnvHexStrFromBytes(abTag)
Debug.Print "OK  " & "54df474f4e71a9ef8a09bf30da7b1a92"

Output

Testing GCM_Encrypt ...
KEY FEFFE9928665731C6D6A8F9467308308
IV  CAFEBABEFACEDBADDECAF888
AAD FEEDFACEDEADBEEFFEEDFACEDEADBEEF
TAG 54DF474F4E71A9EF8A09BF30DA7B1A92
OK  54df474f4e71a9ef8a09bf30da7b1a92

VB.NET

Console.WriteLine("Testing GCM_Encrypt ...")
Dim abKey() As Byte
Dim abAAD() As Byte
Dim abIV() As Byte
Dim abTag() As Byte
''Dim nKeyLen As Integer
''Dim nAadLen As Integer
''Dim nIvLen As Integer
''Dim nTagLen As Integer
''Dim nRet As Integer
' Source: http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00321.html
' KEY feffe9928665731c6d6a8f9467308308
' IV  cafebabefacedbaddecaf888
' AAD feedfacedeadbeeffeedfacedeadbeef
' TAG 54df474f4e71a9ef8a09bf30da7b1a92
abKey = Cnv.FromHex("feffe9928665731c6d6a8f9467308308")
abIV = Cnv.FromHex("cafebabefacedbaddecaf888")
abAAD = Cnv.FromHex("feedfacedeadbeeffeedfacedeadbeef")
''nKeyLen = UBound(abKey) + 1
''nIvLen = UBound(abIV) + 1
''nAadLen = UBound(abAAD) + 1

Console.WriteLine("KEY " & Cnv.ToHex(abKey))
Console.WriteLine("IV  " & Cnv.ToHex(abIV))
Console.WriteLine("AAD " & Cnv.ToHex(abAAD))

' Dimension output array
''nTagLen = API_MAX_GMAC_BYTES
''ReDim abTag(nTagLen - 1)
abTag = New Byte(15) {}

' GMAC := Encrypt with no CT output or PT input. GMAC value is in tag.
abTag = Gcm.Gmac(abKey, abIV, abAAD)
Console.WriteLine("TAG " & Cnv.ToHex(abTag))
Console.WriteLine("OK  " & "54df474f4e71a9ef8a09bf30da7b1a92")

[Contents]

[HOME]   [NEXT: GCM_InitKey...]

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