private void GetAuthStuf(Uri endpointUri, string method, SortedList <string, string> query, IDictionary <string, string> headers, string bodyHash, out string stringedQuery, bool signedInQuery, out string signature, out string headerNames, out string credential) { DateTime utcNow = DateTime.UtcNow; string str1 = utcNow.ToString("yyyyMMddTHHmmssZ", (IFormatProvider)CultureInfo.InvariantCulture); string datestr = utcNow.ToString("yyyyMMdd"); string str2 = string.Format("{0}/{1}/{2}/{3}", (object)datestr, (object)this.region, (object)this.service, (object)"aws4_request"); string str3 = endpointUri.Host; if (!endpointUri.IsDefaultPort) { str3 = str3 + ":" + (object)endpointUri.Port; } headers.Add("Host", str3); if (!signedInQuery) { headers.Add("x-amz-date", str1); } headerNames = this.CanonicalizeHeaderNames(headers); credential = string.Format("{0}/{1}", (object)this.awsAccessKeyId, (object)str2); if (signedInQuery) { query.Add("X-Amz-Algorithm", "AWS4-HMAC-SHA256"); query.Add("X-Amz-Credential", credential); query.Add("X-Amz-SignedHeaders", headerNames); query.Add("X-Amz-Date", str1); } stringedQuery = query == null || query.Count < 1 ? string.Empty : string.Join("&", query.OrderBy <KeyValuePair <string, string>, string>((Func <KeyValuePair <string, string>, string>)(kv => kv.Key), (IComparer <string>)StringComparer.Ordinal).Select <KeyValuePair <string, string>, string>((Func <KeyValuePair <string, string>, string>)(kv => string.Format("{0}={1}", (object)kv.Key, (object)V4Connection.UrlEncode(kv.Value, false))))); byte[] canonicalRequestHash = this.getCanonicalRequestHash(endpointUri, method, stringedQuery, headerNames, this.CanonicalizeHeaders(headers), bodyHash); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("{0}\n{1}\n{2}\n", (object)"AWS4-HMAC-SHA256", (object)str1, (object)str2); stringBuilder.Append(V4Connection.ToHexString(canonicalRequestHash, true)); signature = V4Connection.ToHexString(this.getSigningKey(datestr, stringBuilder.ToString()), true); }
private string GetContentHash(Stream contentStream) { contentStream.Position = 0L; using (HashAlgorithm hashAlgorithm = HashAlgorithm.Create("SHA-256")) return(V4Connection.ToHexString(hashAlgorithm.ComputeHash(contentStream), true)); }