protected static String CreateStringToSign(String canonicalRequest, SignerRequestParamsEx signerParams)
        {
            byte[]        hhhhh = ComputeHash(canonicalRequest);
            string        hex   = AWSSDKUtils.ToHex(hhhhh, true);
            StringBuilder stringToSignBuilder = new StringBuilder("SDK-HMAC-SHA256");

            stringToSignBuilder.Append("\n")
            .Append(signerParams.GetFormattedSigningDateTime())
            .Append("\n")
            .Append(signerParams.GetScope())
            .Append("\n")
            .Append(hex);
            String stringToSign = stringToSignBuilder.ToString();

            return(stringToSign);
        }
        public override void Sign(IRequest request, ICredentials credentials)
        {
            var sanitizedCredentials = this.SanitizeCredentials(credentials);
            var signerParams         = new SignerRequestParamsEx(request, this.regionName, this.serviceName, "SDK-HMAC-SHA256");

            this.AddHostHeader(request);
            request.Headers.Add("X-Sdk-Date", signerParams.GetFormattedSigningDateTime());

            String contentSha256 = this.CalculateContentHash(request);

            if ("required".Equals(request.Headers["x-sdk-content-sha256"]))
            {
                request.Headers.Add("x-sdk-content-sha256", contentSha256);
            }

            var metrics = new RequestMetrics();

            SignHttp(request, metrics, sanitizedCredentials.GetAccessKeyId(), sanitizedCredentials.GetSecretKey(), signerParams);
        }