private static void SignHttp(IRequest request, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey)
{
SigningAlgorithm algorithm = SigningAlgorithm.HmacSHA256;
string text = Guid.NewGuid().ToString();
string formattedCurrentTimestampRFC = AWSSDKUtils.FormattedCurrentTimestampRFC822;
bool flag = IsHttpsRequest(request);
flag = false;
request.Headers["Date"] = formattedCurrentTimestampRFC;
request.Headers["X-Amz-Date"] = formattedCurrentTimestampRFC;
request.Headers.Remove("X-Amzn-Authorization");
string text2 = request.Endpoint.Host;
if (!request.Endpoint.IsDefaultPort)
{
text2 = text2 + ":" + request.Endpoint.Port;
}
request.Headers["host"] = text2;
byte[] array = null;
string text3;
if (flag)
{
request.Headers["x-amz-nonce"] = text;
text3 = formattedCurrentTimestampRFC + text;
array = Encoding.UTF8.GetBytes(text3);
}
else
{
Uri endpoint = request.Endpoint;
if (!string.IsNullOrEmpty(request.ResourcePath))
{
endpoint = new Uri(request.Endpoint, request.ResourcePath);
}
text3 = request.HttpMethod + "\n" + GetCanonicalizedResourcePath(endpoint) + "\n" + GetCanonicalizedQueryString(request.Parameters) + "\n" + GetCanonicalizedHeadersForStringToSign(request) + "\n" + GetRequestPayload(request);
array = CryptoUtilFactory.CryptoInstance.ComputeSHA256Hash(Encoding.UTF8.GetBytes(text3));
}
metrics.AddProperty(Metric.StringToSign, text3);
string str = AbstractAWSSigner.ComputeHash(array, awsSecretAccessKey, algorithm);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(flag ? "AWS3-HTTPS" : "AWS3");
stringBuilder.Append(" ");
stringBuilder.Append("AWSAccessKeyId=" + awsAccessKeyId + ",");
stringBuilder.Append("Algorithm=" + algorithm.ToString() + ",");
if (!flag)
{
stringBuilder.Append(GetSignedHeadersComponent(request) + ",");
}
stringBuilder.Append("Signature=" + str);
string value = stringBuilder.ToString();
request.Headers["X-Amzn-Authorization"] = value;
}