Skip to content

Commit cb42e55

Browse files
authored
Merge pull request #63 from janireu/master
Signing with InvariantCulture, so different calendars produce good ou…
2 parents ab20398 + c32800d commit cb42e55

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Diagnostics;
3+
using System.Globalization;
34
using System.Text;
5+
using System.Threading;
46
using Amazon.Runtime;
57
using Elasticsearch.Net.Aws;
68
using NUnit.Framework;
@@ -101,6 +103,31 @@ public void SignRequest_should_apply_signature_to_request()
101103
Trace.WriteLine("Token: " + token);
102104
}
103105

106+
[Test]
107+
public void SignRequest_should_apply_signature_to_request_right_culture()
108+
{
109+
Thread.CurrentThread.CurrentCulture = new CultureInfo("th");
110+
111+
var creds = new SessionAWSCredentials("ExampleKey", "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", "token1")
112+
.GetCredentials();
113+
SignV4Util.SignRequest(_sampleRequest, _sampleBody, creds, "us-east-1", "iam");
114+
115+
var amzDateValue = _sampleRequest.Headers.XAmzDate;
116+
Assert.False(String.IsNullOrEmpty(amzDateValue));
117+
var amzDates = amzDateValue.Split(',');
118+
Assert.AreEqual(2, amzDates.Length);
119+
Assert.True(amzDates[1].StartsWith(DateTime.UtcNow.Year.ToString()));
120+
Trace.WriteLine("X-Amz-Date: " + amzDateValue);
121+
122+
var auth = _sampleRequest.Headers.Authorization;
123+
Assert.False(String.IsNullOrEmpty(auth));
124+
Trace.WriteLine("Authorize: " + auth);
125+
126+
var token = _sampleRequest.Headers.XAmzSecurityToken;
127+
Assert.False(String.IsNullOrEmpty(token));
128+
Trace.WriteLine("Token: " + token);
129+
}
130+
104131
[Test]
105132
public void GetCanonicalQueryString_should_match_sample()
106133
{

src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/SignV4Util.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Collections.Specialized;
55
using System.Diagnostics;
6+
using System.Globalization;
67
using System.Linq;
78
using System.Security.Cryptography;
89
using System.Text;
@@ -18,8 +19,8 @@ internal static class SignV4Util
1819
public static void SignRequest(IRequest request, byte[] body, ImmutableCredentials credentials, string region, string service)
1920
{
2021
var date = DateTime.UtcNow;
21-
var dateStamp = date.ToString("yyyyMMdd");
22-
var amzDate = date.ToString("yyyyMMddTHHmmssZ");
22+
var dateStamp = date.ToString("yyyyMMdd", CultureInfo.InvariantCulture);
23+
var amzDate = date.ToString("yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);
2324
request.Headers.XAmzDate = amzDate;
2425

2526
var signingKey = GetSigningKey(credentials.SecretKey, dateStamp, region, service);

0 commit comments

Comments
 (0)