grape_api_signature 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.consolerc +3 -0
  3. data/.gitignore +23 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +21 -0
  6. data/.rubocop_todo.yml +0 -0
  7. data/.travis.yml +6 -0
  8. data/.versions.conf +4 -0
  9. data/Gemfile +13 -0
  10. data/LICENSE.txt +22 -0
  11. data/README.md +146 -0
  12. data/Rakefile +14 -0
  13. data/app/assets/javascripts/aws-signature.js.coffee +177 -0
  14. data/grape_api_signature.gemspec +54 -0
  15. data/lib/grape_api_signature/authorization.rb +79 -0
  16. data/lib/grape_api_signature/aws_auth_parser.rb +57 -0
  17. data/lib/grape_api_signature/aws_authorization.rb +40 -0
  18. data/lib/grape_api_signature/aws_digester.rb +27 -0
  19. data/lib/grape_api_signature/aws_request.rb +63 -0
  20. data/lib/grape_api_signature/aws_signer.rb +76 -0
  21. data/lib/grape_api_signature/middleware/auth.rb +105 -0
  22. data/lib/grape_api_signature/middleware/grape_auth.rb +44 -0
  23. data/lib/grape_api_signature/rails/engine.rb +6 -0
  24. data/lib/grape_api_signature/rspec.rb +49 -0
  25. data/lib/grape_api_signature/version.rb +3 -0
  26. data/lib/grape_api_signature.rb +21 -0
  27. data/spec/acceptance/.gitkeep +0 -0
  28. data/spec/acceptance/lib/grape_api_signature/aws_request_spec.rb +39 -0
  29. data/spec/acceptance/lib/grape_api_signature/aws_signer_spec.rb +54 -0
  30. data/spec/acceptance/lib/grape_api_signature/middleware/auth_spec.rb +60 -0
  31. data/spec/acceptance/lib/grape_api_signature/middleware/grape_auth_spec.rb +83 -0
  32. data/spec/acceptance/support/.keep +0 -0
  33. data/spec/acceptance/support/api.rb +5 -0
  34. data/spec/acceptance/support/aws_helper.rb +30 -0
  35. data/spec/acceptance/support/feature.rb +31 -0
  36. data/spec/acceptance_spec_helper.rb +3 -0
  37. data/spec/fixtures/aws4_test_suite/fail/get-header-key-duplicate.authz +1 -0
  38. data/spec/fixtures/aws4_test_suite/fail/get-header-key-duplicate.creq +9 -0
  39. data/spec/fixtures/aws4_test_suite/fail/get-header-key-duplicate.req +7 -0
  40. data/spec/fixtures/aws4_test_suite/fail/get-header-key-duplicate.sreq +8 -0
  41. data/spec/fixtures/aws4_test_suite/fail/get-header-key-duplicate.sts +4 -0
  42. data/spec/fixtures/aws4_test_suite/fail/get-header-value-multiline.req +7 -0
  43. data/spec/fixtures/aws4_test_suite/fail/get-header-value-order.authz +1 -0
  44. data/spec/fixtures/aws4_test_suite/fail/get-header-value-order.creq +9 -0
  45. data/spec/fixtures/aws4_test_suite/fail/get-header-value-order.req +8 -0
  46. data/spec/fixtures/aws4_test_suite/fail/get-header-value-order.sreq +9 -0
  47. data/spec/fixtures/aws4_test_suite/fail/get-header-value-order.sts +4 -0
  48. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-nonunreserved.authz +1 -0
  49. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-nonunreserved.creq +8 -0
  50. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-nonunreserved.req +4 -0
  51. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-nonunreserved.sreq +5 -0
  52. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-nonunreserved.sts +4 -0
  53. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-space.authz +1 -0
  54. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-space.creq +8 -0
  55. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-space.req +4 -0
  56. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-space.sreq +5 -0
  57. data/spec/fixtures/aws4_test_suite/fail/post-vanilla-query-space.sts +4 -0
  58. data/spec/fixtures/aws4_test_suite/pass/get-header-value-trim.authz +1 -0
  59. data/spec/fixtures/aws4_test_suite/pass/get-header-value-trim.creq +9 -0
  60. data/spec/fixtures/aws4_test_suite/pass/get-header-value-trim.req +5 -0
  61. data/spec/fixtures/aws4_test_suite/pass/get-header-value-trim.sreq +6 -0
  62. data/spec/fixtures/aws4_test_suite/pass/get-header-value-trim.sts +4 -0
  63. data/spec/fixtures/aws4_test_suite/pass/get-relative-relative.authz +1 -0
  64. data/spec/fixtures/aws4_test_suite/pass/get-relative-relative.creq +8 -0
  65. data/spec/fixtures/aws4_test_suite/pass/get-relative-relative.req +4 -0
  66. data/spec/fixtures/aws4_test_suite/pass/get-relative-relative.sreq +5 -0
  67. data/spec/fixtures/aws4_test_suite/pass/get-relative-relative.sts +4 -0
  68. data/spec/fixtures/aws4_test_suite/pass/get-relative.authz +1 -0
  69. data/spec/fixtures/aws4_test_suite/pass/get-relative.creq +8 -0
  70. data/spec/fixtures/aws4_test_suite/pass/get-relative.req +4 -0
  71. data/spec/fixtures/aws4_test_suite/pass/get-relative.sreq +5 -0
  72. data/spec/fixtures/aws4_test_suite/pass/get-relative.sts +4 -0
  73. data/spec/fixtures/aws4_test_suite/pass/get-slash-dot-slash.authz +1 -0
  74. data/spec/fixtures/aws4_test_suite/pass/get-slash-dot-slash.creq +8 -0
  75. data/spec/fixtures/aws4_test_suite/pass/get-slash-dot-slash.req +4 -0
  76. data/spec/fixtures/aws4_test_suite/pass/get-slash-dot-slash.sreq +5 -0
  77. data/spec/fixtures/aws4_test_suite/pass/get-slash-dot-slash.sts +4 -0
  78. data/spec/fixtures/aws4_test_suite/pass/get-slash-pointless-dot.authz +1 -0
  79. data/spec/fixtures/aws4_test_suite/pass/get-slash-pointless-dot.creq +8 -0
  80. data/spec/fixtures/aws4_test_suite/pass/get-slash-pointless-dot.req +4 -0
  81. data/spec/fixtures/aws4_test_suite/pass/get-slash-pointless-dot.sreq +5 -0
  82. data/spec/fixtures/aws4_test_suite/pass/get-slash-pointless-dot.sts +4 -0
  83. data/spec/fixtures/aws4_test_suite/pass/get-slash.authz +1 -0
  84. data/spec/fixtures/aws4_test_suite/pass/get-slash.creq +8 -0
  85. data/spec/fixtures/aws4_test_suite/pass/get-slash.req +4 -0
  86. data/spec/fixtures/aws4_test_suite/pass/get-slash.sreq +5 -0
  87. data/spec/fixtures/aws4_test_suite/pass/get-slash.sts +4 -0
  88. data/spec/fixtures/aws4_test_suite/pass/get-slashes.authz +1 -0
  89. data/spec/fixtures/aws4_test_suite/pass/get-slashes.creq +8 -0
  90. data/spec/fixtures/aws4_test_suite/pass/get-slashes.req +4 -0
  91. data/spec/fixtures/aws4_test_suite/pass/get-slashes.sreq +5 -0
  92. data/spec/fixtures/aws4_test_suite/pass/get-slashes.sts +4 -0
  93. data/spec/fixtures/aws4_test_suite/pass/get-space.authz +1 -0
  94. data/spec/fixtures/aws4_test_suite/pass/get-space.creq +8 -0
  95. data/spec/fixtures/aws4_test_suite/pass/get-space.req +4 -0
  96. data/spec/fixtures/aws4_test_suite/pass/get-space.sreq +5 -0
  97. data/spec/fixtures/aws4_test_suite/pass/get-space.sts +4 -0
  98. data/spec/fixtures/aws4_test_suite/pass/get-unreserved.authz +1 -0
  99. data/spec/fixtures/aws4_test_suite/pass/get-unreserved.creq +8 -0
  100. data/spec/fixtures/aws4_test_suite/pass/get-unreserved.req +4 -0
  101. data/spec/fixtures/aws4_test_suite/pass/get-unreserved.sreq +5 -0
  102. data/spec/fixtures/aws4_test_suite/pass/get-unreserved.sts +4 -0
  103. data/spec/fixtures/aws4_test_suite/pass/get-utf8.authz +1 -0
  104. data/spec/fixtures/aws4_test_suite/pass/get-utf8.creq +8 -0
  105. data/spec/fixtures/aws4_test_suite/pass/get-utf8.req +4 -0
  106. data/spec/fixtures/aws4_test_suite/pass/get-utf8.sreq +5 -0
  107. data/spec/fixtures/aws4_test_suite/pass/get-utf8.sts +4 -0
  108. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-empty-query-key.authz +1 -0
  109. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-empty-query-key.creq +8 -0
  110. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-empty-query-key.req +4 -0
  111. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-empty-query-key.sreq +5 -0
  112. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-empty-query-key.sts +4 -0
  113. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key-case.authz +1 -0
  114. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key-case.creq +8 -0
  115. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key-case.req +4 -0
  116. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key-case.sreq +5 -0
  117. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key-case.sts +4 -0
  118. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key.authz +1 -0
  119. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key.creq +8 -0
  120. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key.req +4 -0
  121. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key.sreq +5 -0
  122. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-key.sts +4 -0
  123. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-value.authz +1 -0
  124. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-value.creq +8 -0
  125. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-value.req +4 -0
  126. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-value.sreq +5 -0
  127. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-order-value.sts +4 -0
  128. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-unreserved.authz +1 -0
  129. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-unreserved.creq +8 -0
  130. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-unreserved.req +4 -0
  131. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-unreserved.sreq +5 -0
  132. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query-unreserved.sts +4 -0
  133. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query.authz +1 -0
  134. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query.creq +8 -0
  135. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query.req +4 -0
  136. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query.sreq +5 -0
  137. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-query.sts +4 -0
  138. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-ut8-query.authz +1 -0
  139. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-ut8-query.creq +8 -0
  140. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-ut8-query.req +4 -0
  141. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-ut8-query.sreq +5 -0
  142. data/spec/fixtures/aws4_test_suite/pass/get-vanilla-ut8-query.sts +4 -0
  143. data/spec/fixtures/aws4_test_suite/pass/get-vanilla.authz +1 -0
  144. data/spec/fixtures/aws4_test_suite/pass/get-vanilla.creq +8 -0
  145. data/spec/fixtures/aws4_test_suite/pass/get-vanilla.req +4 -0
  146. data/spec/fixtures/aws4_test_suite/pass/get-vanilla.sreq +5 -0
  147. data/spec/fixtures/aws4_test_suite/pass/get-vanilla.sts +4 -0
  148. data/spec/fixtures/aws4_test_suite/pass/post-header-key-case.authz +1 -0
  149. data/spec/fixtures/aws4_test_suite/pass/post-header-key-case.creq +8 -0
  150. data/spec/fixtures/aws4_test_suite/pass/post-header-key-case.req +4 -0
  151. data/spec/fixtures/aws4_test_suite/pass/post-header-key-case.sreq +5 -0
  152. data/spec/fixtures/aws4_test_suite/pass/post-header-key-case.sts +4 -0
  153. data/spec/fixtures/aws4_test_suite/pass/post-header-key-sort.authz +1 -0
  154. data/spec/fixtures/aws4_test_suite/pass/post-header-key-sort.creq +9 -0
  155. data/spec/fixtures/aws4_test_suite/pass/post-header-key-sort.req +5 -0
  156. data/spec/fixtures/aws4_test_suite/pass/post-header-key-sort.sreq +6 -0
  157. data/spec/fixtures/aws4_test_suite/pass/post-header-key-sort.sts +4 -0
  158. data/spec/fixtures/aws4_test_suite/pass/post-header-value-case.authz +1 -0
  159. data/spec/fixtures/aws4_test_suite/pass/post-header-value-case.creq +9 -0
  160. data/spec/fixtures/aws4_test_suite/pass/post-header-value-case.req +5 -0
  161. data/spec/fixtures/aws4_test_suite/pass/post-header-value-case.sreq +6 -0
  162. data/spec/fixtures/aws4_test_suite/pass/post-header-value-case.sts +4 -0
  163. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-empty-query-value.authz +1 -0
  164. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-empty-query-value.creq +8 -0
  165. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-empty-query-value.req +4 -0
  166. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-empty-query-value.sreq +5 -0
  167. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-empty-query-value.sts +4 -0
  168. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-query.authz +1 -0
  169. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-query.creq +8 -0
  170. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-query.req +4 -0
  171. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-query.sreq +5 -0
  172. data/spec/fixtures/aws4_test_suite/pass/post-vanilla-query.sts +4 -0
  173. data/spec/fixtures/aws4_test_suite/pass/post-vanilla.authz +1 -0
  174. data/spec/fixtures/aws4_test_suite/pass/post-vanilla.creq +8 -0
  175. data/spec/fixtures/aws4_test_suite/pass/post-vanilla.req +4 -0
  176. data/spec/fixtures/aws4_test_suite/pass/post-vanilla.sreq +5 -0
  177. data/spec/fixtures/aws4_test_suite/pass/post-vanilla.sts +4 -0
  178. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded-parameters.authz +1 -0
  179. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded-parameters.creq +9 -0
  180. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded-parameters.req +6 -0
  181. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded-parameters.sreq +7 -0
  182. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded-parameters.sts +4 -0
  183. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded.authz +1 -0
  184. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded.creq +9 -0
  185. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded.req +6 -0
  186. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded.sreq +7 -0
  187. data/spec/fixtures/aws4_test_suite/pass/post-x-www-form-urlencoded.sts +4 -0
  188. data/spec/integration/.gitkeep +0 -0
  189. data/spec/integration/support/.keep +0 -0
  190. data/spec/integration_spec_helper.rb +3 -0
  191. data/spec/spec_helper.rb +45 -0
  192. data/spec/support/.gitkeep +0 -0
  193. data/spec/unit/.gitkeep +0 -0
  194. data/spec/unit/lib/grape_api_signature/authorization_spec.rb +79 -0
  195. data/spec/unit/lib/grape_api_signature/aws_auth_parser_spec.rb +25 -0
  196. data/spec/unit/support/.keep +0 -0
  197. data/spec/unit_spec_helper.rb +3 -0
  198. data/vendor/assets/javascripts/hmac-sha256.js +18 -0
  199. metadata +692 -0
@@ -0,0 +1,31 @@
1
+ #
2
+ # taken from https://github.com/jnicklas/capybara/blob/master/lib/capybara/rspec/features.rb
3
+ #
4
+ module Capybara
5
+ module Features
6
+ def self.included(base)
7
+ base.instance_eval do
8
+ # rubocop:disable Alias
9
+ alias :background :before
10
+ alias :scenario :it
11
+ alias :xscenario :xit
12
+ alias :given :let
13
+ alias :given! :let!
14
+ alias :feature :describe
15
+ # rubocop:enable Alias
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ def self.feature(*args, &block)
22
+ options = args.last.is_a?(Hash) ? args.pop : {}
23
+ options[:capybara_feature] = true
24
+ options[:type] = :feature
25
+ options[:caller] ||= caller
26
+ args.push(options)
27
+
28
+ describe(*args, &block)
29
+ end
30
+
31
+ RSpec.configuration.include Capybara::Features, capybara_feature: true
@@ -0,0 +1,3 @@
1
+ require 'spec_helper'
2
+
3
+ Dir[File.join(File.expand_path(__dir__), 'acceptance/support/**/*.rb')].each { |f| require f }
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;zoo, Signature=54afcaaf45b331f81cd2edb974f7b824ff4dd594cbbaa945ed636b48477368ed
@@ -0,0 +1,9 @@
1
+ POST
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+ zoo:foobar,zoobar,zoobar
7
+
8
+ date;host;zoo
9
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,7 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ ZOO:zoobar
5
+ zoo:foobar
6
+ zoo:zoobar
7
+
@@ -0,0 +1,8 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ ZOO:zoobar
5
+ zoo:foobar
6
+ zoo:zoobar
7
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;zoo, Signature=54afcaaf45b331f81cd2edb974f7b824ff4dd594cbbaa945ed636b48477368ed
8
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 3c52f0eaae2b61329c0a332e3fa15842a37bc5812cf4d80eb64784308850e313
@@ -0,0 +1,7 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ p:a
5
+ b
6
+ c
7
+
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;p, Signature=d2973954263943b11624a11d1c963ca81fb274169c7868b2858c04f083199e3d
@@ -0,0 +1,9 @@
1
+ POST
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+ p:a,a,p,z
7
+
8
+ date;host;p
9
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,8 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ p:z
5
+ p:a
6
+ p:p
7
+ p:a
8
+
@@ -0,0 +1,9 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ p:z
5
+ p:a
6
+ p:p
7
+ p:a
8
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;p, Signature=d2973954263943b11624a11d1c963ca81fb274169c7868b2858c04f083199e3d
9
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 94c0389fefe0988cbbedc8606f0ca0b485b48da010d09fc844b45b697c8924fe
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=28675d93ac1d686ab9988d6617661da4dffe7ba848a2285cb75eac6512e861f9
@@ -0,0 +1,8 @@
1
+ POST
2
+ /
3
+ %20=%2F%2C%3F%3E%3C%60%22%3B%3A%5C%7C%5D%5B%7B%7D&%40%23%24%25%5E=
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ POST /?@#$%^&+=/,?><`";:\|][{} =@#$%^&+=/,?><`";:\|][{} http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ POST /?@#$%^&+=/,?><`";:\|][{} =@#$%^&+=/,?><`";:\|][{} http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=28675d93ac1d686ab9988d6617661da4dffe7ba848a2285cb75eac6512e861f9
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ eb3f16b23b20c91e1b5d6f3cd1c1f8c32a6ddcae6024e44bcfa980fbf8561f6c
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b7eb653abe5f846e7eee4d1dba33b15419dc424aaf215d49b1240732b10cc4ca
@@ -0,0 +1,8 @@
1
+ POST
2
+ /
3
+ f=
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ POST /?f oo=b ar http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ POST /?f oo=b ar http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b7eb653abe5f846e7eee4d1dba33b15419dc424aaf215d49b1240732b10cc4ca
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 0d5f8ed88e9cd0a2a093e1719fff945e3718d30a6b240b9de994cdf9442c89f5
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;p, Signature=debf546796015d6f6ded8626f5ce98597c33b47b9164cf6b17b4642036fcb592
@@ -0,0 +1,9 @@
1
+ POST
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+ p:phfft
7
+
8
+ date;host;p
9
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,5 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ p: phfft
5
+
@@ -0,0 +1,6 @@
1
+ POST / http/1.1
2
+ DATE:Mon, 09 Sep 2011 23:36:00 GMT
3
+ host:host.foo.com
4
+ p: phfft
5
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host;p, Signature=debf546796015d6f6ded8626f5ce98597c33b47b9164cf6b17b4642036fcb592
6
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ dddd1902add08da1ac94782b05f9278c08dc7468db178a84f8950d93b30b1f35
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /foo/bar/../.. http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /foo/bar/../.. http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 366b91fb121d72a00f46bbe8d395f53a102b06dfb7e79636515208ed3fa606b1
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /foo/.. http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /foo/.. http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 366b91fb121d72a00f46bbe8d395f53a102b06dfb7e79636515208ed3fa606b1
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /./ http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /./ http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 366b91fb121d72a00f46bbe8d395f53a102b06dfb7e79636515208ed3fa606b1
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=910e4d6c9abafaf87898e1eb4c929135782ea25bb0279703146455745391e63a
@@ -0,0 +1,8 @@
1
+ GET
2
+ /foo
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /./foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /./foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=910e4d6c9abafaf87898e1eb4c929135782ea25bb0279703146455745391e63a
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 8021a97572ee460f87ca67f4e8c0db763216d84715f5424a843a5312a3321e2d
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET // http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET // http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 366b91fb121d72a00f46bbe8d395f53a102b06dfb7e79636515208ed3fa606b1
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b00392262853cfe3201e47ccf945601079e9b8a7f51ee4c3d9ee4f187aa9bf19
@@ -0,0 +1,8 @@
1
+ GET
2
+ /foo/
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET //foo// http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET //foo// http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=b00392262853cfe3201e47ccf945601079e9b8a7f51ee4c3d9ee4f187aa9bf19
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 6bb4476ee8745730c9cb79f33a0c70baa6d8af29c0077fa12e4e8f1dd17e7098
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=f309cfbd10197a230c42dd17dbf5cca8a0722564cb40a872d25623cfa758e374
@@ -0,0 +1,8 @@
1
+ GET
2
+ /%20/foo
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /%20/foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /%20/foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=f309cfbd10197a230c42dd17dbf5cca8a0722564cb40a872d25623cfa758e374
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 69c45fb9fe3fd76442b5086e50b2e9fec8298358da957b293ef26e506fdfb54b
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=830cc36d03f0f84e6ee4953fbe701c1c8b71a0372c63af9255aa364dd183281e
@@ -0,0 +1,8 @@
1
+ GET
2
+ /-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=830cc36d03f0f84e6ee4953fbe701c1c8b71a0372c63af9255aa364dd183281e
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ df63ee3247c0356c696a3b21f8d8490b01fa9cd5bc6550ef5ef5f4636b7b8901
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=8d6634c189aa8c75c2e51e106b6b5121bed103fdb351f7d7d4381c738823af74
@@ -0,0 +1,8 @@
1
+ GET
2
+ /%E1%88%B4
3
+
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /%E1%88%B4 http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /%E1%88%B4 http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=8d6634c189aa8c75c2e51e106b6b5121bed103fdb351f7d7d4381c738823af74
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 27ba31df5dbc6e063d8f87d62eb07143f7f271c5330a917840586ac1c85b6f6b
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=56c054473fd260c13e4e7393eb203662195f5d4a1fada5314b8b52b23f985e9f
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+ foo=bar
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /?foo=bar http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /?foo=bar http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=56c054473fd260c13e4e7393eb203662195f5d4a1fada5314b8b52b23f985e9f
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 0846c2945b0832deb7a463c66af5c4f8bd54ec28c438e67a214445b157c9ddf8
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=be7148d34ebccdc6423b19085378aa0bee970bdc61d144bd1a8c48c33079ab09
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+ foo=Zoo&foo=aha
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /?foo=Zoo&foo=aha http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /?foo=Zoo&foo=aha http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=be7148d34ebccdc6423b19085378aa0bee970bdc61d144bd1a8c48c33079ab09
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ e25f777ba161a0f1baf778a87faf057187cf5987f17953320e3ca399feb5f00d
@@ -0,0 +1 @@
1
+ AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=0dc122f3b28b831ab48ba65cb47300de53fbe91b577fe113edac383730254a3b
@@ -0,0 +1,8 @@
1
+ GET
2
+ /
3
+ a=foo&b=foo
4
+ date:Mon, 09 Sep 2011 23:36:00 GMT
5
+ host:host.foo.com
6
+
7
+ date;host
8
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
@@ -0,0 +1,4 @@
1
+ GET /?a=foo&b=foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+
@@ -0,0 +1,5 @@
1
+ GET /?a=foo&b=foo http/1.1
2
+ Date:Mon, 09 Sep 2011 23:36:00 GMT
3
+ Host:host.foo.com
4
+ Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, SignedHeaders=date;host, Signature=0dc122f3b28b831ab48ba65cb47300de53fbe91b577fe113edac383730254a3b
5
+
@@ -0,0 +1,4 @@
1
+ AWS4-HMAC-SHA256
2
+ 20110909T233600Z
3
+ 20110909/us-east-1/host/aws4_request
4
+ 2f23d14fe13caebf6dfda346285c6d9c14f49eaca8f5ec55c627dd7404f7a727