mauth-client 6.1.0 → 6.3.0

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
  SHA256:
3
- metadata.gz: efbde48109b1d067f8901ca07cd13181a3564ef6ed0bce1b3741c8c956765341
4
- data.tar.gz: a28441224938890a0e4538063273705cdda2b7b9efec79149db3929cceb2f6df
3
+ metadata.gz: 3d26cf42f3bc98d5ce98981ee710c52d2b87a9360b6ae54391288182c95fa09a
4
+ data.tar.gz: 03c4a9d0e96187d57232d5a1923935ad5db9c190a891fda410595010bbf1d946
5
5
  SHA512:
6
- metadata.gz: e4afa642e9235c58371b7d42c2ec7c22f8357ce9379a2cb7045d7f9bda5bfd94c83caf8ba4eaa172926429d383d7956a35cd41bc0a79324eccf1123ed25d5642
7
- data.tar.gz: d238221c9a124d45a33136c930346d6999bf2e0d8492f16ab4bf94090b67b6e149a4dde8388af1f479f3a21f5b723374b6b95b571add51f179b93cc6a8590b91
6
+ metadata.gz: 58751eb9040426589a0274390307abfc518c1465372c6b26329debb25a12c06fb63e96fccd4093fd45e90bd24fefd6c64966160b6520513515cd5dc9ac96f804
7
+ data.tar.gz: 0febdd455262d240d5f456acc00785d8a0941627ca352ffa559526ddadbaab726213b87e24eaa8f576c430b0a856725224ed48909cdc64cf9ce6b3a77b8c4acf
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "spec/fixtures/mauth-protocol-test-suite"]
2
+ path = spec/fixtures/mauth-protocol-test-suite
3
+ url = https://github.com/mdsol/mauth-protocol-test-suite.git
data/.rspec CHANGED
@@ -1,2 +1 @@
1
1
  --color
2
- --tag ~protocol_suite
data/.travis.yml CHANGED
@@ -1,12 +1,17 @@
1
+ dist: focal
1
2
  language: ruby
2
3
  cache: bundler
3
4
 
4
5
  rvm:
5
- - 2.3
6
- - 2.4
7
6
  - 2.5
8
7
  - 2.6
9
8
  - 2.7
9
+ - 3.0
10
+
11
+ jobs:
12
+ exclude:
13
+ - rvm: 3.0
14
+ gemfile: gemfiles/faraday_0.x.gemfile # Faraday v0.x does not officially support Ruby 3.0 (see: https://github.com/lostisland/faraday/releases/tag/v1.3.0)
10
15
 
11
16
  gemfile:
12
17
  - gemfiles/faraday_0.x.gemfile
@@ -14,28 +19,29 @@ gemfile:
14
19
 
15
20
  before_install:
16
21
  - gem update --system --force -N > /dev/null && echo "Rubygems version $(gem --version)"
17
- - gem install bundler --force -N -v=2.1.4 && bundle --version
22
+ - gem install bundler --force -N && bundle --version
18
23
 
19
24
  install:
20
25
  - bundle install --jobs=3 --retry=3
21
26
  - >-
22
27
  curl -H 'Cache-Control: no-cache'
23
- https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_install.sh |
28
+ https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/main/travis_ci/fossa_install.sh |
24
29
  bash -s -- -b $TRAVIS_BUILD_DIR
25
30
 
26
31
  script:
27
32
  - bundle exec rspec
33
+ - bundle exec rake benchmark
28
34
  - >-
29
35
  curl -H 'Cache-Control: no-cache'
30
- https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_run.sh |
36
+ https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/main/travis_ci/fossa_run.sh |
31
37
  bash -s -- -b $TRAVIS_BUILD_DIR
32
38
 
33
39
  deploy:
34
40
  provider: rubygems
35
41
  gem: mauth-client
36
42
  api_key:
37
- secure: J0aPDp4+Ev2L+ZDcgpF+hAG95S4IsD6pCiDRxDWnrk79P5hq1rXoD3S39ANyqtQEQqkoVjsgoSP5JLi420aL2lYj7mhvaEOty9fK+flwUhI4nw+Gztm7EKNDNX8WKvk4fl4Zc7noIeI0uyes867hDjRQfyYvUuma7aK5H9NWzNUV9Q+KrVAoneVDGnNydxwkuuIpOFdjbVQgNpxVhVBV7Q4OLsB1KtWB9lptMwhqnyqZKex7JZ+37sojaj3oVT5ijrnAm+bR1QO1hGIOwuBako2iz+MBZHPccM4BEFsZme/7olypxv0JfeCuhqDnH1VWIFh6IZRDeLnZuX3qOhkdx4HLwxB//5O5+iapK0wh1zbnLvXqkE1dalUHyaZzStKH9xchIWl5I77Ica232OJYrpj9hhroae0p3VARF0IoZceKaH8NnMpq+nBAW4REcWrqPpe9xkRLDTNibkpaAy08vGOF2kPZkWw4lfkVBM1+wjY2xDn6wJ7VgQ1BeosbeTXbmny2TUeI22beihn894tzpCPPHiTRvKu0lV3jBfeoOAXzE333PrGm3zF9MDhg+1/iBwXVhdoOwEwBPQ/3Hu37xJn0AfRneni4StYnIkZ1Ur9Vub03J/3C3Aw6it99rQSWvC+2PzHqQhsG22VprvxlozFe1jFzdqKgvDkbkn44ltI=
43
+ secure: QDp0P/lMGLYc4+A3M6VD9y551X6GrGwOSBE6xSG4lE6mPXoSISK5Yj18vNWQRQuQ4BsE6CdfZ/xsPjSRDda6b+yUQbgisjJ+Ry6jUVE1v9UKTZ0VHgHyXcsaJFC29tBKBeuGCj0AD5qhbTO1+ybeZSUfdSeVVoidD4W/bSnvzlT1Lht7IE8jbHbR57LsJKoEaDxKu33dg4CYV96xrlYGxHAS2UgEgi5Ve3ohzBWkX9RWF/wWoGCzIYhJBzXgCEEFw8iWkspjTePgv9yjD2HIMtF44aiSTHM5iqBBsYJ7A8+kUwoq7+srsashHZ1wZz1YulsCSkjwM9AXZ4E0f9AnERw/RQ5gG7bCuHZtSG9g/0SWBQeNfkAF3An6eTSS24KVfnarGdH2bk0G28k2oP26MWiDKz8nlQxNAY4rH+dITael18bgf45H4KccQqiooBEGnuYpUAuIPB+1l+BsIcRQnrU3LDtmtZn0KrCHHJ7EHOdogOG+/Pxof8ht1xF7V+HYhhzSRJs2JkvmZsp4q2T7W6b6kfi59Cz3LpqA1HHYcL5/OFZeLA/TlCNke0CRMxG8k3udDKj50jqFATXEa8lNyGLjmWh7tL9Bb/uy+CU47qUdx+V4K+kheAvNFtHfpxmyUGJSY0FH02H1VBPWm10DZ7kH+6jgCKyXuql+yWDw62s=
38
44
  on:
39
45
  tags: true
40
46
  repo: mdsol/mauth-client-ruby
41
- condition: $TRAVIS_RUBY_VERSION == 2.7 && $BUNDLE_GEMFILE == $TRAVIS_BUILD_DIR/gemfiles/faraday_1.x.gemfile
47
+ condition: $TRAVIS_RUBY_VERSION == 3.0 && $BUNDLE_GEMFILE == $TRAVIS_BUILD_DIR/gemfiles/faraday_1.x.gemfile
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
+ ## v6.3.0
2
+ - Support Ruby 3.0.
3
+ - Drop support for Ruby < 2.5.0.
4
+
5
+ ## v6.2.1
6
+ - Fix SecurityTokenCacher to not cache tokens forever.
7
+
8
+ ## v6.2.0
9
+ - Drop legacy security token expiry in favor of honoring server cache headers via Faraday HTTP Cache Middleware.
10
+
11
+ ## v6.1.1
12
+ - Replace `URI.escape` with `CGI.escape` in SecurityTokenCacher to suppress "URI.escape is obsolete" warning.
13
+
1
14
  ## v6.1.0
2
- * Allow Faraday 1.x.
15
+ - Allow Faraday 1.x.
3
16
 
4
17
  ## v6.0.0
5
18
  - Added parsing code to test with mauth-protocol-test-suite.
data/CONTRIBUTING.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Contributing
2
2
 
3
+ ## Cloning the Repo
4
+
5
+ This repo contains the submodule `mauth-protocol-test-suite` so requires a flag when initially cloning in order to clone and init submodules.
6
+
7
+ ```
8
+ git clone --recurse-submodules git@github.com:mdsol/mauth-client-ruby.git
9
+ ```
10
+
11
+ If you have already cloned a version of this repo before the submodule was introduced in version 6.1.2 then run
12
+
13
+ ```
14
+ cd spec/fixtures/mauth-protocol-test-suite
15
+ git submodule update --init
16
+ ```
17
+
18
+ to init the submodule.
19
+
3
20
  ## General Information
4
21
 
5
22
  * Check out the latest develop to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
@@ -19,14 +36,6 @@ Next, run the tests:
19
36
  bundle exec rspec
20
37
  ```
21
38
 
22
- # Running mauth-protocol-test-suite
23
-
24
- To run the mauth-protocol-test-suite clone the latest test suite onto your machine and place it in the same parent directory as this repo (or supply the ENV var `TEST_SUITE_RELATIVE_PATH` with the path to the test suite relative to this repo). Then run:
25
-
26
- ```
27
- bundle exec rspec --tag protocol_suite
28
- ```
29
-
30
39
  ## Running Benchmark
31
40
 
32
41
  If you make changes which could affect performance, please run the benchmark before and after the change as a sanity check.
@@ -4,8 +4,7 @@
4
4
  - Clojure: [clojure-mauth-client](https://github.com/mdsol/clojure-mauth-client)
5
5
  - Go: [go-mauth-client](https://github.com/mdsol/go-mauth-client)
6
6
  - Java: [mauth-jvm-clients](https://github.com/mdsol/mauth-jvm-clients)
7
- - Python:
8
- - [requests-mauth](https://github.com/mdsol/requests-mauth)
9
- - [flask-mauth](https://github.com/mdsol/flask-mauth)
7
+ - Python: [mauth-client-python](https://github.com/mdsol/mauth-client-python)
10
8
  - R: [RMauthClient](https://github.com/mdsol/RMauthClient)
11
9
  - Ruby: [mauth-client-ruby](https://github.com/mdsol/mauth-client-ruby)
10
+ - Rust: [mauth-client-rust](https://github.com/mdsol/mauth-client-rust)
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- mauth-client (6.1.0)
4
+ mauth-client (6.3.0)
5
5
  addressable (~> 2.0)
6
6
  coderay (~> 1.0)
7
7
  dice_bag (>= 0.9, < 2.0)
8
8
  faraday (>= 0.9, < 2.0)
9
+ faraday-http-cache (>= 2.0, < 3.0)
9
10
  faraday_middleware (>= 0.9, < 2.0)
10
11
  rack
11
12
  term-ansicolor (~> 1.0)
@@ -13,27 +14,47 @@ PATH
13
14
  GEM
14
15
  remote: https://rubygems.org/
15
16
  specs:
16
- addressable (2.7.0)
17
+ addressable (2.8.0)
17
18
  public_suffix (>= 2.0.2, < 5.0)
18
19
  coderay (1.1.3)
19
- dice_bag (1.4.1)
20
+ dice_bag (1.6.0)
20
21
  diff-lcs (~> 1.0)
21
22
  rake
22
23
  thor (< 2.0)
23
24
  diff-lcs (1.4.4)
24
- faraday (1.0.1)
25
+ faraday (1.8.0)
26
+ faraday-em_http (~> 1.0)
27
+ faraday-em_synchrony (~> 1.0)
28
+ faraday-excon (~> 1.1)
29
+ faraday-httpclient (~> 1.0.1)
30
+ faraday-net_http (~> 1.0)
31
+ faraday-net_http_persistent (~> 1.1)
32
+ faraday-patron (~> 1.0)
33
+ faraday-rack (~> 1.0)
25
34
  multipart-post (>= 1.2, < 3)
26
- faraday_middleware (1.0.0)
35
+ ruby2_keywords (>= 0.0.4)
36
+ faraday-em_http (1.0.0)
37
+ faraday-em_synchrony (1.0.0)
38
+ faraday-excon (1.1.0)
39
+ faraday-http-cache (2.2.0)
40
+ faraday (>= 0.8)
41
+ faraday-httpclient (1.0.1)
42
+ faraday-net_http (1.0.1)
43
+ faraday-net_http_persistent (1.2.0)
44
+ faraday-patron (1.0.0)
45
+ faraday-rack (1.0.0)
46
+ faraday_middleware (1.2.0)
27
47
  faraday (~> 1.0)
28
48
  multipart-post (2.1.1)
29
49
  public_suffix (4.0.6)
30
50
  rack (2.2.3)
31
- rake (13.0.1)
51
+ rake (13.0.6)
52
+ ruby2_keywords (0.0.5)
32
53
  sync (0.5.0)
33
54
  term-ansicolor (1.7.1)
34
55
  tins (~> 1.0)
35
- thor (1.0.1)
36
- tins (1.25.0)
56
+ thor (1.1.0)
57
+ tins (1.29.1)
37
58
  sync
38
59
 
39
60
  PLATFORMS
@@ -44,4 +65,4 @@ DEPENDENCIES
44
65
  mauth-client!
45
66
 
46
67
  BUNDLED WITH
47
- 2.1.4
68
+ 2.2.29
@@ -53,7 +53,7 @@ module MAuth
53
53
  end
54
54
 
55
55
  def verify_signature_v1!(actual, expected_str_to_sign)
56
- actual == Digest::SHA512.hexdigest(expected_str_to_sign)
56
+ actual == OpenSSL::Digest::SHA512.hexdigest(expected_str_to_sign)
57
57
  end
58
58
 
59
59
  def signature_valid_v2!(object)
@@ -1,68 +1,63 @@
1
+ require 'faraday-http-cache'
2
+ require 'mauth/faraday'
3
+
1
4
  module MAuth
2
5
  class Client
3
6
  module LocalAuthenticator
4
7
  class SecurityTokenCacher
5
8
 
6
- class ExpirableSecurityToken < Struct.new(:security_token, :create_time)
7
- CACHE_LIFE = 60
8
- def expired?
9
- create_time + CACHE_LIFE < Time.now
10
- end
11
- end
12
-
13
9
  def initialize(mauth_client)
14
10
  @mauth_client = mauth_client
15
11
  # TODO: should this be UnableToSignError?
16
- @mauth_client.assert_private_key(UnableToAuthenticateError.new("Cannot fetch public keys from mAuth service without a private key!"))
17
- @cache = {}
18
- require 'thread'
19
- @cache_write_lock = Mutex.new
12
+ @mauth_client.assert_private_key(
13
+ UnableToAuthenticateError.new("Cannot fetch public keys from mAuth service without a private key!")
14
+ )
20
15
  end
21
16
 
22
17
  def get(app_uuid)
23
- if !@cache[app_uuid] || @cache[app_uuid].expired?
24
- # url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
25
- # app_uuid - probably not exploitable, but this is the right way to do it anyway.
26
- # use UNRESERVED instead of UNSAFE (the default) as UNSAFE doesn't include /
27
- url_encoded_app_uuid = URI.escape(app_uuid, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
28
- begin
29
- response = signed_mauth_connection.get("/mauth/#{@mauth_client.mauth_api_version}/security_tokens/#{url_encoded_app_uuid}.json")
30
- rescue ::Faraday::ConnectionFailed, ::Faraday::TimeoutError => e
31
- msg = "mAuth service did not respond; received #{e.class}: #{e.message}"
32
- @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
33
- raise UnableToAuthenticateError, msg
34
- end
35
- if response.status == 200
36
- begin
37
- security_token = JSON.parse(response.body)
38
- rescue JSON::ParserError => e
39
- msg = "mAuth service responded with unparseable json: #{response.body}\n#{e.class}: #{e.message}"
40
- @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
41
- raise UnableToAuthenticateError, msg
42
- end
43
- @cache_write_lock.synchronize do
44
- @cache[app_uuid] = ExpirableSecurityToken.new(security_token, Time.now)
45
- end
46
- elsif response.status == 404
47
- # signing with a key mAuth doesn't know about is considered inauthentic
48
- raise InauthenticError, "mAuth service responded with 404 looking up public key for #{app_uuid}"
49
- else
50
- @mauth_client.send(:mauth_service_response_error, response)
51
- end
18
+ # url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
19
+ # app_uuid - probably not exploitable, but this is the right way to do it anyway.
20
+ url_encoded_app_uuid = CGI.escape(app_uuid)
21
+ path = "/mauth/#{@mauth_client.mauth_api_version}/security_tokens/#{url_encoded_app_uuid}.json"
22
+ response = signed_mauth_connection.get(path)
23
+
24
+ case response.status
25
+ when 200
26
+ security_token_from(response.body)
27
+ when 404
28
+ # signing with a key mAuth doesn't know about is considered inauthentic
29
+ raise InauthenticError, "mAuth service responded with 404 looking up public key for #{app_uuid}"
30
+ else
31
+ @mauth_client.send(:mauth_service_response_error, response)
52
32
  end
53
- @cache[app_uuid].security_token
33
+ rescue ::Faraday::ConnectionFailed, ::Faraday::TimeoutError => e
34
+ msg = "mAuth service did not respond; received #{e.class}: #{e.message}"
35
+ @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
36
+ raise UnableToAuthenticateError, msg
54
37
  end
55
38
 
56
39
  private
57
40
 
41
+ def security_token_from(response_body)
42
+ JSON.parse response_body
43
+ rescue JSON::ParserError => e
44
+ msg = "mAuth service responded with unparseable json: #{response_body}\n#{e.class}: #{e.message}"
45
+ @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
46
+ raise UnableToAuthenticateError, msg
47
+ end
48
+
58
49
  def signed_mauth_connection
59
- require 'faraday'
60
- require 'mauth/faraday'
61
- @mauth_client.faraday_options[:ssl] = { ca_path: @mauth_client.ssl_certs_path } if @mauth_client.ssl_certs_path
62
- @signed_mauth_connection ||= ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
63
- builder.use MAuth::Faraday::MAuthClientUserAgent
64
- builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
65
- builder.adapter ::Faraday.default_adapter
50
+ @signed_mauth_connection ||= begin
51
+ if @mauth_client.ssl_certs_path
52
+ @mauth_client.faraday_options[:ssl] = { ca_path: @mauth_client.ssl_certs_path }
53
+ end
54
+
55
+ ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
56
+ builder.use MAuth::Faraday::MAuthClientUserAgent
57
+ builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
58
+ builder.use :http_cache, logger: MAuth::Client.new.logger, shared_cache: false
59
+ builder.adapter ::Faraday.default_adapter
60
+ end
66
61
  end
67
62
  end
68
63
  end
@@ -56,7 +56,7 @@ module MAuth
56
56
 
57
57
  def signature_v1(string_to_sign)
58
58
  assert_private_key(UNABLE_TO_SIGN_ERR)
59
- hashed_string_to_sign = Digest::SHA512.hexdigest(string_to_sign)
59
+ hashed_string_to_sign = OpenSSL::Digest::SHA512.hexdigest(string_to_sign)
60
60
  Base64.encode64(private_key.private_encrypt(hashed_string_to_sign)).delete("\n")
61
61
  end
62
62
 
@@ -1,4 +1,4 @@
1
- require 'digest'
1
+ require 'openssl'
2
2
  require 'addressable'
3
3
 
4
4
  module MAuth
@@ -61,7 +61,7 @@ module MAuth
61
61
  # memoization of body_digest to avoid hashing three times when we call
62
62
  # string_to_sign_v2 three times in client#signature_valid_v2!
63
63
  # note that if :body is nil we hash an empty string ('')
64
- attrs_with_overrides[:body_digest] ||= Digest::SHA512.hexdigest(attrs_with_overrides[:body] || '')
64
+ attrs_with_overrides[:body_digest] ||= OpenSSL::Digest::SHA512.hexdigest(attrs_with_overrides[:body] || '')
65
65
  attrs_with_overrides[:encoded_query_params] = unescape_encode_query_string(attrs_with_overrides[:query_string] || '')
66
66
  attrs_with_overrides[:request_url] = normalize_path(attrs_with_overrides[:request_url])
67
67
 
data/lib/mauth/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MAuth
4
- VERSION = '6.1.0'
4
+ VERSION = '6.3.0'
5
5
  end
data/mauth-client.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.description = 'Client for signing and authentication of requests and responses with mAuth authentication. Includes middleware for Rack and Faraday for incoming and outgoing requests and responses.'
12
12
  spec.homepage = 'https://github.com/mdsol/mauth-client-ruby'
13
13
  spec.license = 'MIT'
14
- spec.required_ruby_version = '>= 2.3.0'
14
+ spec.required_ruby_version = '>= 2.5.0'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.bindir = 'exe'
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'faraday', '>= 0.9', '< 2.0'
22
22
  spec.add_dependency 'faraday_middleware', '>= 0.9', '< 2.0'
23
+ spec.add_dependency 'faraday-http-cache', '>= 2.0', '< 3.0'
23
24
  spec.add_dependency 'term-ansicolor', '~> 1.0'
24
25
  spec.add_dependency 'coderay', '~> 1.0'
25
26
  spec.add_dependency 'rack'
@@ -35,4 +36,5 @@ Gem::Specification.new do |spec|
35
36
  spec.add_development_dependency 'simplecov', '~> 0.16'
36
37
  spec.add_development_dependency 'timecop', '~> 0.9'
37
38
  spec.add_development_dependency 'benchmark-ips', '~> 2.7'
39
+ spec.add_development_dependency 'webmock', '~> 3.0'
38
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mauth-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Szenher
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2020-09-10 00:00:00.000000000 Z
14
+ date: 2021-10-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
@@ -53,6 +53,26 @@ dependencies:
53
53
  - - "<"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '2.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: faraday-http-cache
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: '3.0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '2.0'
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
56
76
  - !ruby/object:Gem::Dependency
57
77
  name: term-ansicolor
58
78
  requirement: !ruby/object:Gem::Requirement
@@ -255,6 +275,20 @@ dependencies:
255
275
  - - "~>"
256
276
  - !ruby/object:Gem::Version
257
277
  version: '2.7'
278
+ - !ruby/object:Gem::Dependency
279
+ name: webmock
280
+ requirement: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '3.0'
285
+ type: :development
286
+ prerelease: false
287
+ version_requirements: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '3.0'
258
292
  description: Client for signing and authentication of requests and responses with
259
293
  mAuth authentication. Includes middleware for Rack and Faraday for incoming and
260
294
  outgoing requests and responses.
@@ -268,6 +302,7 @@ extra_rdoc_files: []
268
302
  files:
269
303
  - ".fossa.yml"
270
304
  - ".gitignore"
305
+ - ".gitmodules"
271
306
  - ".rspec"
272
307
  - ".travis.yml"
273
308
  - ".yardopts"
@@ -327,14 +362,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
362
  requirements:
328
363
  - - ">="
329
364
  - !ruby/object:Gem::Version
330
- version: 2.3.0
365
+ version: 2.5.0
331
366
  required_rubygems_version: !ruby/object:Gem::Requirement
332
367
  requirements:
333
368
  - - ">="
334
369
  - !ruby/object:Gem::Version
335
370
  version: '0'
336
371
  requirements: []
337
- rubygems_version: 3.0.8
372
+ rubygems_version: 3.1.2
338
373
  signing_key:
339
374
  specification_version: 4
340
375
  summary: Sign and authenticate requests and responses with mAuth authentication.