Imports System.Security.Cryptography
Dim apiKey As String = "V0QVQwt8wDEl650VSlt6BSl0cNJ8uSQmrxZm5dTViiHi"
Dim apiSecret As String = "q08bxpYKS6XdE4QfiPiNAi5aMMfPnzIV15CaA80FQe0y"
Console.WriteLine("API Key Length: " & apiKey.Length)
Console.WriteLine("API Secret Length: " & apiSecret.Length)
Dim baseUrl As String = "https://davincilockdev.com/api/facilities"
Dim nonce As String = Guid.NewGuid().ToString()
Dim timeStamp As Integer = CType((DateTime.UtcNow - New DateTime(1970, 1, 1)).TotalSeconds, Integer)
Dim method As String = "GET"
Dim stringToSign As String = apiKey + "+" + method + "+" + Uri.EscapeDataString(baseUrl).ToLower() + "+" + timeStamp.ToString() + "+" + nonce + "+"
Dim keyBytes As Byte() = Convert.FromBase64String(apiSecret)
Dim stringBytes As Byte() = Encoding.UTF8.GetBytes(stringToSign)
Dim hmac As New HMACSHA512(keyBytes)
Dim hashBytes As Byte() = hmac.ComputeHash(stringBytes)
Dim base64Hash As String = Convert.ToBase64String(hashBytes)
Dim authHeader As String = String.Format("dvl {0}:{1}:{2}:{3}", apiKey, base64Hash, nonce, timeStamp)
Dim request As HttpWebRequest = CType(WebRequest.Create(baseUrl), HttpWebRequest)
request.Headers.Add("Authorization", authHeader)
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim reader As New System.IO.StreamReader(responseStream)
Dim responseBody As String = reader.ReadToEnd()
Console.WriteLine("Response: " + responseBody)
Console.WriteLine("Error: " + ex.Message)