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; }
/// <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); }
/// <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)); }