request_signing 0.1.0.pre2 → 0.1.0.pre3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c849272285074c0ce2bc3ca1944796400e21829f
4
- data.tar.gz: ad2a7a2f9c537a8accce4a29776c74b4fd707eb4
3
+ metadata.gz: 54aa72ad7948b5b1f34da5abd6efa5d10d4e5bef
4
+ data.tar.gz: 670402e483314b0057ab6a336def431bbebf48b8
5
5
  SHA512:
6
- metadata.gz: d28bfca428c611472be89b9eb7e4b8c387f833c6d3c8b53e1e14e846f158d7d67dbb25ebc8b0a771149069114570dc870262547ecd55e4bedfd20f34bcc0ab60
7
- data.tar.gz: 3c680932ce2c57e7a9839f75767a4e062a5415f6a6305a31322e30553ded2f136697f2ed7820c9b3a4676b6a66e198a82130d8d775cc13ad91611a34e9907a25
6
+ metadata.gz: fd206d497060a433d516d179cc355d23e50f74e7bc61b86e1444fd3a87142910ba713f59523991457c02ce06a6828c6b068e911f0d9657dfbfa2f34286eee023
7
+ data.tar.gz: cc1b7ecebc2c183fd81ea3a17406fd946988bcc3a4b18a2cc29fa6a051d10a645b8a47fd863aed88e413792ceed833eb91a1d6512e3f905d62f4b8391eeef791
@@ -62,7 +62,7 @@ module RequestSigning
62
62
  string_for_signing = RequestSigning.make_string_for_signing(signature_parameters.headers, verifiable_req)
63
63
  signature = decode_signature(signature_parameters.signature)
64
64
  unless alg.verify_signature(key, signature, string_for_signing)
65
- raise SignatureMismatch
65
+ raise SignatureMismatch, key_id: signature_parameters.key_id
66
66
  end
67
67
  end
68
68
 
@@ -1,7 +1,19 @@
1
1
  module RequestSigning
2
2
 
3
3
  # Base class for all errors
4
- class Error < StandardError; end
4
+ class Error < StandardError
5
+ attr_reader :key_id
6
+
7
+ def initialize(*args, key_id: nil)
8
+ super(*args)
9
+ @key_id = key_id
10
+ end
11
+
12
+ def message
13
+ return super unless key_id
14
+ "#{super}, key_id=#{key_id}"
15
+ end
16
+ end
5
17
 
6
18
  # Key with specified keyId could not be found
7
19
  class KeyNotFound < Error; end
@@ -39,7 +39,7 @@ module RequestSigning
39
39
  def fetch(key_id)
40
40
  @keys.fetch(key_id)
41
41
  rescue KeyError
42
- raise KeyNotFound, key_id
42
+ raise KeyNotFound, key_id: key_id
43
43
  end
44
44
 
45
45
  # @param key_id [String] id of the key
@@ -0,0 +1,55 @@
1
+ module RequestSigning
2
+ module TestUtils
3
+ # Provides helpers for testing request signature verification integration
4
+ # Example:
5
+ # require 'rack/test'
6
+ # require 'request_signing'
7
+ # require 'request_signing/test_utils'
8
+ #
9
+ # class MyServerTest < Minitest::Test
10
+ # include Rack::Test::Methods
11
+ # include RequestSigning::TestUtils::Rack
12
+ #
13
+ # attr_reader :app
14
+ #
15
+ # def setup
16
+ # my_app = MyApp.new
17
+ # signer_key_store = RequestSigning::KeyStores::Static.new(
18
+ # "test_key" => "123qweasdzxc456rtyfghvbn789uiojk",
19
+ # "bad_test_key" => "11111111111111111111111111111111"
20
+ # )
21
+ # signer = RequestSigning::Signer.new(adapter: :rack, key_store: signer_key_store)
22
+ # @app = wrap_with_request_signer(app: my_app, signer: signer)
23
+ # end
24
+ #
25
+ # def test_lets_signed_requests_through
26
+ # signed(key_id: "test_key") { post "/v1/foo" }
27
+ # assert last_response.successful?
28
+ # end
29
+ #
30
+ # def test_rejects_requests_with_bad_signatures
31
+ # signed(key_id: "bad_test_key") { post "/v1/foo" }
32
+ # refute last_response.successful?
33
+ # end
34
+ #
35
+ module Rack
36
+ def wrap_with_request_signer(signer:, app:)
37
+ proc do |env|
38
+ if sign_params = env["request_signing.test.sign_params"]
39
+ env["HTTP_DATE"] ||= Time.now.httpdate
40
+ env["HTTP_SIGNATURE"] = signer.create_signature!(env, sign_params).to_s
41
+ end
42
+ app.call(env)
43
+ end
44
+ end
45
+
46
+ def signed(key_id:, algorithm: "hmac-sha256", headers: %w[(request-target) host date])
47
+ env "request_signing.test.sign_params", { key_id: key_id, algorithm: algorithm, headers: headers }
48
+ yield
49
+ ensure
50
+ env "request_signing.test.sign_params", nil
51
+ end
52
+ end
53
+ end
54
+ end
55
+
@@ -1,3 +1,3 @@
1
1
  module RequestSigning
2
- VERSION = "0.1.0.pre2"
2
+ VERSION = "0.1.0.pre3"
3
3
  end
@@ -1,11 +1,10 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'request_signing/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "request_signing-faraday"
8
- spec.version = "0.1.0.pre1"
7
+ spec.version = "0.1.0.pre3"
9
8
  spec.authors = ["Vlad Yarotsky"]
10
9
  spec.email = ["vlad@remind101.com"]
11
10
 
@@ -19,6 +18,6 @@ Gem::Specification.new do |spec|
19
18
  spec.require_paths = ["lib"]
20
19
  spec.metadata["yard.run"] = "yri"
21
20
 
22
- spec.add_dependency "request_signing", RequestSigning::VERSION
21
+ spec.add_dependency "request_signing", "~> 0.1.0.pre2"
23
22
  spec.add_dependency "faraday", "~> 0.9"
24
23
  end
@@ -1,11 +1,10 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'request_signing/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "request_signing-rack"
8
- spec.version = "0.1.0.pre1"
7
+ spec.version = "0.1.0.pre3"
9
8
  spec.authors = ["Vlad Yarotsky"]
10
9
  spec.email = ["vlad@remind101.com"]
11
10
 
@@ -19,6 +18,6 @@ Gem::Specification.new do |spec|
19
18
  spec.require_paths = ["lib"]
20
19
  spec.metadata["yard.run"] = "yri"
21
20
 
22
- spec.add_dependency "request_signing", RequestSigning::VERSION
21
+ spec.add_dependency "request_signing", "~> 0.1.0.pre2"
23
22
  spec.add_dependency "rack", "~> 2.0"
24
23
  end
@@ -1,11 +1,10 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'request_signing/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "request_signing-ssm"
8
- spec.version = "0.1.0.pre1"
7
+ spec.version = "0.1.0.pre3"
9
8
  spec.authors = ["Vlad Yarotsky"]
10
9
  spec.email = ["vlad@remind101.com"]
11
10
 
@@ -19,6 +18,6 @@ Gem::Specification.new do |spec|
19
18
  spec.require_paths = ["lib"]
20
19
  spec.metadata["yard.run"] = "yri"
21
20
 
22
- spec.add_dependency "request_signing", RequestSigning::VERSION
21
+ spec.add_dependency "request_signing", "~> 0.1.0.pre2"
23
22
  spec.add_dependency "aws-sdk-ssm", "~> 1"
24
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request_signing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre2
4
+ version: 0.1.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Yarotsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2017-11-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Implementation of http request signing draft https://tools.ietf.org/html/draft-cavage-http-signatures-08
14
14
  email:
@@ -43,6 +43,7 @@ files:
43
43
  - lib/request_signing/key_stores/static.rb
44
44
  - lib/request_signing/parameter_parser.rb
45
45
  - lib/request_signing/signature_parameters.rb
46
+ - lib/request_signing/test_utils.rb
46
47
  - lib/request_signing/version.rb
47
48
  - request_signing-faraday.gemspec
48
49
  - request_signing-rack.gemspec