distack-urlsign 0.3.1 → 0.3.3

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
- SHA1:
3
- metadata.gz: 745e324c38d3c2c0fafb181c84ed5749e6863bda
4
- data.tar.gz: fc92d7917e73f06cf2bd6d04f1ebb31483d801dc
2
+ SHA256:
3
+ metadata.gz: d8bf28b92db9b96ee64d93239c8aec5ae0888db8da7fabbc8d4391554c99295b
4
+ data.tar.gz: e64f55df83f3820c5aca2b40040230db7d739bf26e8cdab8d607535e8c16f33a
5
5
  SHA512:
6
- metadata.gz: aba5d78de6da6c8c2bf3c5a8b6ef591f4354a3a1738122b89ab44c6b1eef16d0fabc2d70223a3339dad9e5a74dfbe5814064a631ca9f1be8f1a4f84c54db035f
7
- data.tar.gz: b03b1a4ad561ead878ac870a4e693c3347c16c7412a34f0a2dbd1f1767971dd955bfc9f66d215426cea629b3d8eaac7be796397f8ca412505b001e626092420d
6
+ metadata.gz: 2f265a643120ac6b637e0cded9f532709c853e416006ad9336e0a4f7a700816ca31dc4c08077060417b64bd21c3da8213c8bb9416c95aa9a4b6e89c06e9fc923
7
+ data.tar.gz: 6360cf15b12d4383f41d07fe931dd17e22e6869d4d24487923d7506d9f912f19cf86c29813b1ee4cac54e56ce93516498d032085015673728ccf5de5802eac52
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.2
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
+ sudo: false
1
2
  language: ruby
2
3
  rvm:
3
- - 2.2.0
4
+ - 2.2.2
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ task :default => :test
4
+ task :test do
5
+ Dir.glob('./test/*_test.rb').each { |file| require file}
6
+ end
@@ -20,7 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "rack"
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.9"
23
+ spec.add_development_dependency "minitest", "~> 5.10.1"
24
+ spec.add_development_dependency "bundler", "~> 1.7"
24
25
  spec.add_development_dependency "rake", "~> 10.0"
25
26
  spec.add_development_dependency "pry", "~> 0.10.1"
26
27
  end
@@ -1,5 +1,7 @@
1
1
  module Distack::URLSign
2
2
  InvalidSignatureError = Class.new(StandardError)
3
+ MissingSignatureError = Class.new(StandardError)
4
+
3
5
 
4
6
  class Signer
5
7
  KEY_REGEX = /^[0-9A-f]+$/
@@ -43,19 +45,21 @@ module Distack::URLSign
43
45
  end
44
46
 
45
47
  q = Rack::Utils.parse_nested_query(url.query)
48
+ raise MissingSignatureError unless q["_signature"]
46
49
 
47
50
  original_q = q.dup
48
51
  original_q.delete("_signature")
49
52
 
50
53
  original_qs = Rack::Utils.build_nested_query(original_q)
51
54
 
52
- chunks = [url.scheme, "#{url.host}:#{url.port}", url.path, original_qs, url.userinfo].compact
55
+ host_with_port = url.port == url.default_port ? url.host : "#{url.host}:#{url.port}"
56
+ chunks = [url.scheme, host_with_port, url.path, original_qs, url.userinfo].compact
53
57
  digest = OpenSSL::Digest.new("sha512")
54
58
 
55
59
  rawsig = OpenSSL::HMAC.digest(digest, @key, chunks.join)
56
60
  signature = Base64.urlsafe_encode64(rawsig)
57
61
 
58
- if secure_compare(signature, q["_signature"])
62
+ if secure_compare(signature, CGI.unescape(q["_signature"]).to_s)
59
63
  new_url = url.dup
60
64
  new_url.query = original_qs
61
65
  new_url
@@ -64,6 +68,12 @@ module Distack::URLSign
64
68
  end
65
69
  end
66
70
 
71
+ def valid?(url)
72
+ !!verify(url)
73
+ rescue InvalidSignatureError, MissingSignatureError
74
+ false
75
+ end
76
+
67
77
  private
68
78
 
69
79
  # Constant time string comparison.
@@ -1,5 +1,5 @@
1
1
  module Distack
2
2
  module URLSign
3
- VERSION = "0.3.1"
3
+ VERSION = "0.3.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: distack-urlsign
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Kochenburger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-09 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -24,20 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 5.10.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 5.10.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '1.9'
47
+ version: '1.7'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '1.9'
54
+ version: '1.7'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -75,6 +89,7 @@ extensions: []
75
89
  extra_rdoc_files: []
76
90
  files:
77
91
  - ".gitignore"
92
+ - ".ruby-version"
78
93
  - ".travis.yml"
79
94
  - CODE_OF_CONDUCT.md
80
95
  - Gemfile
@@ -91,7 +106,7 @@ files:
91
106
  homepage: https://github.com/distack/urlsign-rb
92
107
  licenses: []
93
108
  metadata: {}
94
- post_install_message:
109
+ post_install_message:
95
110
  rdoc_options: []
96
111
  require_paths:
97
112
  - lib
@@ -106,10 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
121
  - !ruby/object:Gem::Version
107
122
  version: '0'
108
123
  requirements: []
109
- rubyforge_project:
110
- rubygems_version: 2.4.5.1
111
- signing_key:
124
+ rubygems_version: 3.1.6
125
+ signing_key:
112
126
  specification_version: 4
113
127
  summary: urlsign is a simple HMAC-based implementation for URL signing and verification
114
128
  test_files: []
115
- has_rdoc: