Stratosphere.Block.S3.S3Service.SignRequest C# (CSharp) Method

SignRequest() private method

private SignRequest ( string containerName, string blockName, string contentMD5, string contentType, string method, string>.IEnumerable headers ) : string
containerName string
blockName string
contentMD5 string
contentType string
method string
headers string>.IEnumerable
return string
        private string SignRequest(string containerName, string blockName, string contentMD5, string contentType, string method, IEnumerable<KeyValuePair<string, string>> headers)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(method);
            builder.Append("\n");
            builder.Append(contentMD5);
            builder.Append("\n");
            builder.Append(contentType);
            builder.Append("\n\n");

            foreach (KeyValuePair<string, string> header in headers.OrderBy(h => h.Key))
            {
                builder.Append(header.Key.ToLowerInvariant());
                builder.Append(":");
                builder.Append(header.Value);
                builder.Append("\n");
            }

            builder.Append("/");

            if (!string.IsNullOrEmpty(containerName))
            {
                builder.Append(containerName);
                builder.Append("/");
                builder.Append(blockName);
            }

            byte[] signatureBytes;

            using (HMACSHA1 algorithm = new HMACSHA1(Encoding.UTF8.GetBytes(_serviceSecret)))
            {
                signatureBytes = algorithm.ComputeHash(Encoding.UTF8.GetBytes(builder.ToString()));
            }

            builder = new StringBuilder("AWS ");
            builder.Append(_serviceId);
            builder.Append(':');
            builder.Append(Convert.ToBase64String(signatureBytes));

            return builder.ToString();
        }