// Set up request
var publicKey = "123";
var privateKey = "123";
var domain = "portal.example.com";
var scheme = "https";
var uri = "/api/stuff/v1/asd/1234/visitors?from=20160301&to=20160303";
var contentType = "application/json";
var postContent = ""; // always empty string for Company API
var date = DateTime.UtcNow;
var dateString = date.ToString("r");
// Build request signature
var message = contentType + "\n" + domain + "\n" + uri + "\n" + dateString + "\n" + postContent + "\n";
// Encode request signature
var hmc = "";
var encoding = new ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(privateKey);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
hmc = BitConverter.ToString(hashmessage).Replace("-", "").ToLower();
}