public string Sign(SignatureContext context) { var hmac = new HMACSHA1(); var secret = context.Secret.UrlEncode(); if (secret == null) secret = Guid.NewGuid().ToString(); hmac.Key = context.Encoding.GetBytes(secret); var source = new StringBuilder(); if (context.SortedQuery != null) { // append path foreach (var key in context.SortedQuery.AllKeys) { source.Append(key); source.Append(context.SortedQuery[key]); } } var buffer = context.Encoding.GetBytes(source.ToString()); var signBytes = hmac.ComputeHash(buffer); var sb = new StringBuilder(); foreach (byte b in signBytes) { sb.Append(b.ToString("x2")); } return sb.ToString(); }
static string GetMd5Hash(SignatureContext context, MD5 md5Hash, string input) { // Convert the input string to a byte array and compute the hash. var data = md5Hash.ComputeHash(context.Encoding.GetBytes(input)); // Create a new Stringbuilder to collect the bytes // and create a string. var sb = new StringBuilder(); // Loop through each byte of the hashed data // and format each one as a hexadecimal string. for (int i = 0; i < data.Length; i++) { sb.Append(data[i].ToString("x2")); } // Return the hexadecimal string. return sb.ToString(); }
public string Sign(SignatureContext context) { var ret = string.Empty; var source = new StringBuilder(); source.Append(context.Secret); if (context.SortedQuery != null) { foreach (var key in context.SortedQuery.AllKeys) { source.Append(key); source.Append(context.SortedQuery[key]); } } using (MD5 md5Hash = MD5.Create()) { ret = GetMd5Hash(context, md5Hash, source.ToString()); } return ret; }
public string Sign(SignatureContext context) { return this.Signature.Sign(context); }
public string Sign(SignatureContext context) { return(this.Signature.Sign(context)); }