using System.Security.Cryptography;
using System.Net.Http.Headers;
using System.Threading.Tasks;
public static void Main()
var ClientId = "feb56dac-795b-4b98-89ce-53af2de61e60";
var ClientSecret = "Lm05o23OdrPv71pEWajeJYWhQb2XdsfTELORo4NiewE=";
var secretKeyByteArray = Convert.FromBase64String(ClientSecret);
var requestUri = System.Web.HttpUtility.UrlEncode("http://entapistaging.shieldpay.com/v2/currencies");
var requestTimeStamp = GetTimeStamp();
var nonce = Guid.NewGuid().ToString("N");
var bodyHash = string.Empty;
var signatureRawData = String.Format("{0}{1}{2}{3}{4}{5}", ClientId, "GET", requestUri, requestTimeStamp, nonce, bodyHash);
Console.WriteLine(signatureRawData);
var mac = Convert.ToBase64String(ComputeHash(Encoding.UTF8.GetBytes(signatureRawData), secretKeyByteArray));
var authHeaderValue = string.Format("organizationid={0},timestamp={1},nonce={2},bodyhash={3},mac={4}", ClientId, requestTimeStamp, nonce, bodyHash, mac);
Console.WriteLine(authHeaderValue);
var authHeaderValueArray = Encoding.ASCII.GetBytes(authHeaderValue);
var authHeader = Convert.ToBase64String(authHeaderValueArray);
Console.WriteLine("authorization " + authHeader);
HttpRequestMessage request = new HttpRequestMessage();
request.Headers.Authorization = new AuthenticationHeaderValue("authorization", authHeader);
private static byte[] ComputeHash(byte[] buffer, byte[] secretKeyByteArray)
using (HMACSHA256 hmactobody = new HMACSHA256(secretKeyByteArray))
return hmactobody.ComputeHash(buffer);
private static string GetTimeStamp()
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - epochStart;
return Convert.ToUInt64(timeSpan.TotalSeconds).ToString();