request_signing 0.1.0.pre2 → 0.1.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
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