using System.Security.Cryptography;
public static void Main()
string uri = string.Format("/api/carrier/order/{0}/status", 148);
string url = string.Format("https://printea.getprintbox.com{0}",uri);
string json = "{\"statusId\":4}";
string apiKey = "7iP5hPz18T.U5EY0M74H_2on9FT,6lDF";
string time = string.Format("{0:s}-{1}", DateTime.Now, "06:00");
string elHash = sha256(json);
string text = string.Format("{0}\ntime:{1}\nrequestUri:{2}\n{3}", "POST",time, uri ,elHash);
var aux = hmacSHA256(text, apiKey);
string signature = System.Convert.ToBase64String(aux);
Console.WriteLine(signature);
public static string sha256(string text)
using (SHA256 sha256Hash = SHA256.Create())
byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(text));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
builder.Append(bytes[i].ToString("x2"));
return builder.ToString();
public static byte[] hmacSHA256(string text, string apiKey)
var encoding = new ASCIIEncoding();
byte[] textByte = encoding.GetBytes(text);
byte[] apiKeyByte = encoding.GetBytes(apiKey);
var hash = new HMACSHA256(apiKeyByte);
return hash.ComputeHash(textByte);