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));
 }