Beispiel #1
0
            public AwsSigningConfigNative(AwsSigningConfig config)
            {
                Algorithm              = config.Algorithm;
                SignatureType          = config.SignatureType;
                Region                 = config.Region;
                Service                = config.Service;
                MillisecondsSinceEpoch = MillisecondsSinceEpoch = (long)(config.Timestamp.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;

                Credentials creds = config.Credentials;

                if (creds != null)
                {
                    AccessKeyId = creds.AccessKeyId != null?System.Text.Encoding.UTF8.GetString(creds.AccessKeyId) : null;

                    SecretAccessKey = creds.SecretAccessKey != null?System.Text.Encoding.UTF8.GetString(creds.SecretAccessKey) : null;

                    SessionToken = creds.SessionToken != null?System.Text.Encoding.UTF8.GetString(creds.SessionToken) : null;
                }
                else
                {
                    AccessKeyId     = null;
                    SecretAccessKey = null;
                    SessionToken    = null;
                }

                ShouldSignHeader       = config.ShouldSignHeader;
                UseDoubleUriEncode     = config.UseDoubleUriEncode;
                ShouldNormalizeUriPath = config.ShouldNormalizeUriPath;
                OmitSessionToken       = config.OmitSessionToken;
                SignedBodyValue        = config.SignedBodyValue;
                SignedBodyHeader       = config.SignedBodyHeader;
                ExpirationInSeconds    = config.ExpirationInSeconds;
            }
Beispiel #2
0
        /// <summary>
        /// Helper function to set up an Aws.Crt.Auth.SigningConfig
        /// </summary>
        /// <param name="signatureType">Signature type</param>
        /// <param name="region">Signing region</param>
        /// <param name="service">Service to sign the request for</param>
        /// <param name="signedAt">Timestamp to sign at</param>
        /// <param name="credentials">The AWS credentials for the account making the service call</param>
        /// <returns>Prepared CRT signing configuration</returns>
        public AwsSigningConfig PrepareCRTSigningConfig(AwsSignatureType signatureType, string region, string service, DateTime signedAt, ImmutableCredentials credentials)
        {
            var signingConfig = new AwsSigningConfig
            {
                Algorithm        = AwsSigningAlgorithm.SIGV4A,
                SignedBodyHeader = AwsSignedBodyHeaderType.X_AMZ_CONTENT_SHA256,
                SignatureType    = signatureType,
                Region           = region,
                Service          = service,
                Timestamp        = new DateTimeOffset(signedAt),
                Credentials      = new Credentials(credentials.AccessKey, credentials.SecretKey, credentials.Token)
            };

            if (service == "s3")
            {
                signingConfig.UseDoubleUriEncode     = false;
                signingConfig.ShouldNormalizeUriPath = false;
            }
            else
            {
                signingConfig.UseDoubleUriEncode     = true;
                signingConfig.ShouldNormalizeUriPath = true;
            }

            return(signingConfig);
        }
Beispiel #3
0
 /// <summary>
 /// Helper function to set up an Aws.Crt.Auth.SigningConfig
 /// </summary>
 /// <param name="signatureType">Signature type</param>
 /// <param name="headerSigningResult">Signing result for the request's headers</param>
 /// <returns>Prepared CRT signing configuration</returns>
 public AwsSigningConfig PrepareCRTSigningConfig(AwsSignatureType signatureType, AWS4aSigningResult headerSigningResult)
 {
     return(PrepareCRTSigningConfig(signatureType,
                                    headerSigningResult.RegionSet,
                                    headerSigningResult.Service,
                                    headerSigningResult.DateTime,
                                    headerSigningResult.Credentials));
 }