public async Task CreateSignature() { var signer = new AwsSigner(); var config = Helpers.CreateExampleConfig(); var request = Helpers.CreateExampleRequest(); const string expected = "5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7"; var dateTime = DateTimeOffset.Parse("2015-08-30T12:36:00Z"); var signingKey = signer.CreateSigningKey(config.Secret, dateTime, config.Region, config.Service); var signString = await signer.CreateSignString(config.Region, config.Service, request, dateTime); var result = signer.CreateSignature(signingKey, signString); Assert.AreEqual(expected, result, "Create signature failed"); }
public async Task CreateAuthorizationHeader() { var signer = new AwsSigner(); var config = Helpers.CreateExampleConfig(); var request = Helpers.CreateExampleRequest(); var dateTime = DateTimeOffset.Parse("2015-08-30T12:36:00Z"); var signedHeaders = signer.BuildSignedHeaders(signer.BuildCanonicalHeaders(request)); const string expected = "Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7"; var signature = await signer.CreateSignature(config, request, dateTime); var result = signer.CreateAuthorizationHeader(config.AccessId, dateTime, config.Region, config.Service, signedHeaders, signature); Assert.AreEqual(expected, result, "Authorization string creation failed"); }
public async Task SignRequest() { var signer = new AwsSigner(); var config = Helpers.CreateExampleConfig(); var expectedRequest = Helpers.CreateExampleRequest(); var request = Helpers.CreateExampleRequest(); //Remove the X-Amz-Date header since the authorize method should do this request.Headers.Remove("X-Amz-Date"); var expectedDateTime = DateTimeOffset.Parse("2015-08-30T12:36:00Z"); await AwsSigner.SignRequest(config, request, expectedDateTime); var signature = await signer.CreateSignature(config, expectedRequest, expectedDateTime); var expectedScheme = "AWS4-HMAC-SHA256"; var expectedContent = $"Credential=AKIDEXAMPLE/{expectedDateTime:yyyyMMdd}/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={signature}"; Assert.AreEqual(expectedScheme, request.Headers.Authorization.Scheme, "Authorization scheme does not match"); Assert.AreEqual(expectedContent, request.Headers.Authorization.Parameter, "Authorization content does not match"); }