Esempio n. 1
0
 protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner, bool useSigV4Setting, IRequest request, IClientConfig config)
 {
     if (UseV4Signing(useSigV4Setting, request, config))
     {
         return(AWS4SignerInstance);
     }
     return(defaultSigner);
 }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        // 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();
        }
Esempio n. 7
0
 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);
     }
 }
Esempio n. 8
0
        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);
            }
        }
Esempio n. 9
0
        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;
        }
Esempio n. 10
0
        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;
        }
Esempio n. 11
0
        protected AbstractAWSSigner SelectSigner(AbstractAWSSigner defaultSigner,bool useSigV4Setting, 
            IRequest request, ClientConfig config)
        {
            bool usev4Signing = UseV4Signing(useSigV4Setting, request, config);

            if (usev4Signing)
                return AWS4SignerInstance;
            else
                return defaultSigner;
        }