using System.Security.Cryptography;
public static void Main()
Console.WriteLine("Hello World");
string requestContentBase64String = string.Empty;
string APPId = "4d53bce03ec34c0a911182d4c228ee6c";
string APIKey = "A93reRTUJHsCuQSHR+L3GxqOJyDmQpCgps102ciuabc=";
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - epochStart;
string requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString();
string requestUri = HttpUtility.UrlEncode("https://hrcdev.crothall.com/HRCAjax/DOM/StateEngineWebSite/StateEngineWebService.asmx");
string nonce = Guid.NewGuid().ToString("N");
string methodType = "POST";
string methodToExecute = "ListBuildingsByFacilityId";
nonce = "42ee5e72c3cf4f3691c7d4da0279b04a";
requestTimeStamp = "1467673877";
Console.WriteLine("Nonce : " + nonce);
Console.WriteLine("RequestTimeStamp : " + requestTimeStamp);
string key = String.Format("{0}{1}{2}{3}{4}{5}", APPId, methodType, requestUri, requestTimeStamp, nonce, methodToExecute);
var encoding = new System.Text.ASCIIEncoding();
byte[] content = encoding.GetBytes(key);
byte[] requestContentHash = md5.ComputeHash(content);
requestContentBase64String = Convert.ToBase64String(requestContentHash);
Console.WriteLine("requestContentBase64String : " + requestContentBase64String);
string signatureRawData = String.Format("{0}{1}{2}{3}{4}{5}", APPId, methodType, requestUri, requestTimeStamp, nonce, requestContentBase64String);
var secretKeyByteArray = Convert.FromBase64String(APIKey);
byte[] signature = Encoding.UTF8.GetBytes(signatureRawData);
using (HMACSHA256 hmac = new HMACSHA256(secretKeyByteArray))
byte[] signatureBytes = hmac.ComputeHash(signature);
string requestSignatureBase64String = Convert.ToBase64String(signatureBytes);
Console.WriteLine("Token : " + requestSignatureBase64String);
Console.WriteLine("Token Pass Format -> " + string.Format("{0}:{1}:{2}:{3}:{4}:{5}", APPId, requestSignatureBase64String, nonce, requestTimeStamp, methodType, requestUri));