protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner, bool useSigV4Setting, IRequest request, IClientConfig config) { if (UseV4Signing(useSigV4Setting, request, config)) { return(AWS4SignerInstance); } return(defaultSigner); }
internal WebRequestState(IRequest request, ResponseUnmarshaller unmarshaller, AbstractAWSSigner signer) { this.Request = request; this.Unmarshaller = unmarshaller; this.Signer = signer; this._stopWatch = Stopwatch.StartNew(); this._stopWatch.Start(); this.Metrics = new RequestMetrics(); }
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; }
protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner, bool useSigV4Setting, ClientConfig config) { bool usev4Signing = UseV4Signing(useSigV4Setting, config); if (usev4Signing) { return(AWS4SignerInstance); } else { return(defaultSigner); } }
public override void Sign(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey) { if (string.IsNullOrEmpty(awsAccessKeyId)) { throw new ArgumentOutOfRangeException("awsAccessKeyId", "The AWS Access Key ID cannot be NULL or a Zero length string"); } string formattedTimestampRFC = AWSSDKUtils.GetFormattedTimestampRFC822(0); request.Headers.Add("X-Amz-Date", formattedTimestampRFC); string str = AbstractAWSSigner.ComputeHash(formattedTimestampRFC, awsSecretAccessKey, SigningAlgorithm.HmacSHA1); request.Headers.Add("Authorization", "AWS " + awsAccessKeyId + ":" + str); }
// Constructor internal AsyncResult(IRequest request, AsyncCallback callback, object state, bool completeSynchronized, AbstractAWSSigner signer, ResponseUnmarshaller unmarshaller) { this.Request = request; this.Callback = callback; this.State = state; this.CompletedSynchronously = completeSynchronized; this.Signer = signer; this.Unmarshaller = unmarshaller; this.RequestName = request.OriginalRequest.GetType().Name; this._lockObj = new object(); this._stopWatch = Stopwatch.StartNew(); this._stopWatch.Start(); }
protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner, bool useSigV4Setting, IRequest request, IClientConfig config) { if (request.SignatureVersion == SignatureVersion.SigV4a) { return(AWS4aSignerCRTWrapperInstance); } else if (UseV4Signing(useSigV4Setting, request, config)) { return(AWS4SignerInstance); } else { return(defaultSigner); } }
public override void Sign(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey) { AbstractAWSSigner abstractAWSSigner = SelectSigner(request, clientConfig); if (abstractAWSSigner is AWS4Signer) { abstractAWSSigner.Sign(request, clientConfig, metrics, awsAccessKeyId, awsSecretAccessKey); } else if (UseAws3Https) { SignHttps(request, clientConfig, metrics, awsAccessKeyId, awsSecretAccessKey); } else { SignHttp(request, metrics, awsAccessKeyId, awsSecretAccessKey); } }
public override void Sign(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey) { if (string.IsNullOrEmpty(awsAccessKeyId)) { throw new ArgumentOutOfRangeException("awsAccessKeyId", "The AWS Access Key ID cannot be NULL or a Zero length string"); } request.Parameters["AWSAccessKeyId"] = awsAccessKeyId; request.Parameters["SignatureVersion"] = clientConfig.SignatureVersion; request.Parameters["SignatureMethod"] = clientConfig.SignatureMethod.ToString(); request.Parameters["Timestamp"] = AWSSDKUtils.FormattedCurrentTimestampISO8601; request.Parameters.Remove("Signature"); string text = AWSSDKUtils.CalculateStringToSignV2(request.Parameters, request.Endpoint.AbsoluteUri); metrics.AddProperty(Metric.StringToSign, text); string value = AbstractAWSSigner.ComputeHash(text, awsSecretAccessKey, clientConfig.SignatureMethod); request.Parameters["Signature"] = value; }
private static void SignHttps(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey) { string text = Guid.NewGuid().ToString(); string formattedCurrentTimestampRFC = AWSSDKUtils.FormattedCurrentTimestampRFC822; string text2 = formattedCurrentTimestampRFC + text; metrics.AddProperty(Metric.StringToSign, text2); string str = AbstractAWSSigner.ComputeHash(text2, awsSecretAccessKey, clientConfig.SignatureMethod); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("AWS3-HTTPS").Append(" "); stringBuilder.Append("AWSAccessKeyId=" + awsAccessKeyId + ","); stringBuilder.Append("Algorithm=" + clientConfig.SignatureMethod.ToString() + ","); stringBuilder.Append("SignedHeaders=x-amz-date;x-amz-nonce,"); stringBuilder.Append("Signature=" + str); request.Headers["X-Amzn-Authorization"] = stringBuilder.ToString(); request.Headers["x-amz-nonce"] = text; request.Headers["X-Amz-Date"] = formattedCurrentTimestampRFC; }
protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner,bool useSigV4Setting, IRequest request, ClientConfig config) { bool usev4Signing = UseV4Signing(useSigV4Setting, request, config); if (usev4Signing) return AWS4SignerInstance; else return defaultSigner; }