public void ShouldGetDefaultConfiguration() { // Arrange HmacConfigurationManager configurationManager = new HmacConfigurationManager(); HmacConfiguration expectedConfiguration = new HmacConfiguration { Name = configurationManager.DefaultConfigurationKey, UserHeaderName = "X-Auth-User", AuthorizationScheme = "HMAC", SignatureDataSeparator = "\n", SignatureEncoding = "UTF-8", HmacAlgorithm = "HMACSHA512", MaxRequestAge = TimeSpan.FromMinutes(5), SignRequestUri = true, ValidateContentMd5 = true, Headers = null }; // Act IHmacConfiguration defaultConfigByKey = configurationManager.Get(configurationManager.DefaultConfigurationKey); IHmacConfiguration defaultConfig = configurationManager.GetDefault(); // Assert AssertConfiguration(expectedConfiguration, defaultConfigByKey); AssertConfiguration(expectedConfiguration, defaultConfig); }
public void ShouldConfigureFromFile() { // Arrange HmacConfigurationManager configurationManager = new HmacConfigurationManager(); HmacConfiguration expectedConfiguration = new HmacConfiguration { Name = "TestConfiguration", UserHeaderName = "X-Test-User", AuthorizationScheme = "TEST", SignatureDataSeparator = "_", SignatureEncoding = "UTF-32", HmacAlgorithm = "HMACSHA256", MaxRequestAge = TimeSpan.FromMinutes(2), SignRequestUri = false, ValidateContentMd5 = true, Headers = new List <string> { "X-Test-Header-1", "X-Test-Header-2" } }; // Act configurationManager.ConfigureFromFile("Hmac.config"); IHmacConfiguration configuration = configurationManager.Get(expectedConfiguration.Name); // Assert AssertConfiguration(expectedConfiguration, configuration); }
public void SignatureFailureTest() { var context = _workContext.WithTag(_tag); var testHeaders = new List <KeyValuePair <string, IEnumerable <string> > > { new KeyValuePair <string, IEnumerable <string> >("Content-Type", new string[] { "application/x-www-form-urlencoded", "charset=utf-8" }), new KeyValuePair <string, IEnumerable <string> >("Content-MD5", new string[] { "kdskflosifm3938dldasksdfjdf" }), new KeyValuePair <string, IEnumerable <string> >("Api-Cv", new string[] { "dkdfjdie.1" }), new KeyValuePair <string, IEnumerable <string> >("Api-Key", new string[] { "3asfvesef" }), new KeyValuePair <string, IEnumerable <string> >("Api-duplicate", new string[] { "false" }), }; var uri = new Uri("http://*****:*****@domain.com"; IHmacConfiguration hmacConfiguration = new HmacConfiguration(); var hmac = new HmacSignature(hmacConfiguration); string signature = hmac.CreateSignature(context, credential, apiKey, method, uri, testHeaders); signature = signature.Remove(credential.Length + 5, 2); hmac.ValidateSignature(context, signature, apiKey, method, uri, testHeaders).Should().BeFalse(); }
public void ShouldCreateCanonicalizedUriString() { // Arrange IHmacConfiguration configuration = new HmacConfiguration { SignatureEncoding = "UTF-8" }; HmacSigner signer = new HmacSigner(configuration, _keyRepository); const string uriString = " HTTP://WWW.EXAMPLE.DOMAIN/Test?Key=Value "; const string expectedUriString = "http://www.example.domain:80/Test?Key=Value"; const string uriString2 = " httpS://WWW.EXAMPLE.DOMAIN:3000/Test?Key=Value "; const string expectedUriString2 = "https://www.example.domain:3000/Test?Key=Value"; const string uriString3 = " TEST://WWW.EXAMPLE.DOMAIN/Test?Key=Value "; const string expectedUriString3 = "test://www.example.domain:-1/Test?Key=Value"; const string relativeUriString = "/Test?Key=Value"; Uri relativeUri = new Uri(relativeUriString, UriKind.Relative); // Act string result1 = signer.CreateCanonicalizedUriString(uriString); string result2 = signer.CreateCanonicalizedUriString(uriString2); string result3 = signer.CreateCanonicalizedUriString(uriString3); string result4 = signer.CreateCanonicalizedUriString(relativeUri); // Assert Assert.AreEqual(expectedUriString, result1); Assert.AreEqual(expectedUriString2, result2); Assert.AreEqual(expectedUriString3, result3); Assert.AreEqual(relativeUriString, result4); }
public void Configuration(IAppBuilder app) { var config = new HttpConfiguration(); config.MapHttpAttributeRoutes(); HmacConfiguration .Create() .WithApiKey("123456") .WithScope("MyApp") .Configure(); app.UseWebApi(config); }
public void ShouldCreateBase64Md5Hash() { // Arrange IHmacConfiguration configuration = new HmacConfiguration { SignatureEncoding = "UTF-8" }; HmacSigner signer = new HmacSigner(configuration, _keyRepository); // Act string base64Md5HashFromString = signer.CreateBase64Md5Hash(Body, Encoding.UTF8); string base64Md5HashFromBytes = signer.CreateBase64Md5Hash(_bodyBytes); string base64Md5HashFromStream = signer.CreateBase64Md5Hash(_bodyStream); // Assert Assert.IsNotNull(base64Md5HashFromString); Assert.AreEqual(_base64Md5Hash, base64Md5HashFromString); Assert.IsNotNull(base64Md5HashFromBytes); Assert.AreEqual(_base64Md5Hash, base64Md5HashFromBytes); Assert.IsNotNull(base64Md5HashFromStream); Assert.AreEqual(_base64Md5Hash, base64Md5HashFromStream); }
public void ShouldCreateCanonicalizedHeaderString() { // Arrange IHmacConfiguration configuration = new HmacConfiguration { SignatureEncoding = "UTF-8", SignatureDataSeparator = "\n" }; HmacSigner signer = new HmacSigner(configuration, _keyRepository); NameValueCollection headers = new NameValueCollection { { " X-Test-Header-1 ", " Value2 " }, { " X-Test-Header-1 ", " Value4" }, { "X-Test-Header-2", "value3" }, { " x-test-headeR-1 ", "Value1" } }; const string expectedHeaderString = "x-test-header-1:Value2,Value4,Value1\nx-test-header-2:value3"; // Act string headerString = signer.CreateCanonicalizedHeadersString(headers); // Assert Assert.IsNotNull(headerString); Assert.AreEqual(expectedHeaderString, headerString); }
public void ShouldCreateMd5Hash() { // Arrange IHmacConfiguration configuration = new HmacConfiguration { SignatureEncoding = "UTF-8" }; HmacSigner signer = new HmacSigner(configuration, _keyRepository); // Act byte[] md5HashFromString = signer.CreateMd5Hash(Body, Encoding.UTF8); byte[] md5HashFromBytes = signer.CreateMd5Hash(_bodyBytes); byte[] md5HashFromStrean = signer.CreateMd5Hash(_bodyStream); // Assert Assert.IsNotNull(md5HashFromString); Assert.AreEqual(_md5Hash.Length, md5HashFromString.Length); Assert.IsTrue(_md5Hash.SequenceEqual(md5HashFromString)); Assert.IsNotNull(md5HashFromBytes); Assert.AreEqual(_md5Hash.Length, md5HashFromBytes.Length); Assert.IsTrue(_md5Hash.SequenceEqual(md5HashFromBytes)); Assert.IsNotNull(md5HashFromStrean); Assert.AreEqual(_md5Hash.Length, md5HashFromStrean.Length); Assert.IsTrue(_md5Hash.SequenceEqual(md5HashFromStrean)); }