rainforest_auth 0.0.11 → 0.1.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 +4 -4
- data/.ruby-version +1 -0
- data/.travis.yml +5 -1
- data/Gemfile.lock +5 -2
- data/LICENSE +1 -1
- data/lib/rainforest_auth.rb +17 -2
- data/rainforest_auth.gemspec +2 -2
- data/spec/rainforest_auth_spec.rb +37 -6
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 249cec5e62b6a45777bfce7594bbd2ff2212b2e7
|
4
|
+
data.tar.gz: f0fe7101381ea10ff5514d83b91d63bc45823eb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5090047e6ef0d300ded3f7139230d668e9ca8eb22a9d240ad361f3c77493d3dedc712a054d0b490f085b2ed66de562a08c9fa380cf8c3414a071a9f71f2475ad
|
7
|
+
data.tar.gz: 925598ed41d78140b75823642fc46d08423cd7bb529c346e51c9c355af38f3b2205179a203eb418131f54038a013e88a445a8ff2b4a6dbd16bee0c3591659e7a
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.1
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rainforest_auth (0.0
|
4
|
+
rainforest_auth (0.1.0)
|
5
5
|
json
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: http://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.2.5)
|
11
|
-
json (
|
11
|
+
json (2.0.3)
|
12
12
|
rake (10.1.1)
|
13
13
|
rspec (2.14.1)
|
14
14
|
rspec-core (~> 2.14.0)
|
@@ -28,3 +28,6 @@ DEPENDENCIES
|
|
28
28
|
rainforest_auth!
|
29
29
|
rake (>= 0.8.7)
|
30
30
|
rspec (>= 2.0)
|
31
|
+
|
32
|
+
BUNDLED WITH
|
33
|
+
1.14.4
|
data/LICENSE
CHANGED
data/lib/rainforest_auth.rb
CHANGED
@@ -11,8 +11,14 @@ require 'json'
|
|
11
11
|
class RainforestAuth
|
12
12
|
attr_reader :key
|
13
13
|
|
14
|
-
def initialize(key)
|
14
|
+
def initialize(key, key_hash=nil)
|
15
15
|
@key = key
|
16
|
+
|
17
|
+
if @key.nil?
|
18
|
+
@key_hash = key_hash
|
19
|
+
else
|
20
|
+
@key_hash = Digest::SHA256.hexdigest(key)
|
21
|
+
end
|
16
22
|
self
|
17
23
|
end
|
18
24
|
|
@@ -23,12 +29,21 @@ class RainforestAuth
|
|
23
29
|
|
24
30
|
# Return a signature for a callback_type and specified options
|
25
31
|
def sign(callback_type, options = nil)
|
32
|
+
OpenSSL::HMAC.hexdigest(digest, @key_hash, merge_data(callback_type, options))
|
33
|
+
end
|
34
|
+
|
35
|
+
# Return a signature for a callback_type and specified options
|
36
|
+
def sign_old(callback_type, options = nil)
|
26
37
|
OpenSSL::HMAC.hexdigest(digest, @key, merge_data(callback_type, options))
|
27
38
|
end
|
28
39
|
|
29
40
|
# Verify a digest vs callback_type and options
|
30
41
|
def verify(digest, callback_type, options = nil)
|
31
|
-
|
42
|
+
if key.nil?
|
43
|
+
digest == sign(callback_type, options)
|
44
|
+
else
|
45
|
+
digest == sign(callback_type, options) || digest == sign_old(callback_type, options)
|
46
|
+
end
|
32
47
|
end
|
33
48
|
|
34
49
|
# Run a block if valid
|
data/rainforest_auth.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rainforest_auth"
|
3
|
-
s.version = "0.0
|
4
|
-
s.date = "
|
3
|
+
s.version = "0.1.0"
|
4
|
+
s.date = "2017-03-07"
|
5
5
|
s.summary = "Authentication of messages for Rainforest webhooks"
|
6
6
|
s.description = "Signs / Authenticates messages"
|
7
7
|
s.authors = ["Russell Smith"]
|
@@ -43,34 +43,65 @@ describe RainforestAuth do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "returns the expected signature" do
|
46
|
-
@auth.sign('test', {:option => 1}).should == '
|
46
|
+
@auth.sign('test', {:option => 1}).should == '65f2253344287b3c5634a1ce6163fb694b2280b1'
|
47
47
|
end
|
48
48
|
|
49
49
|
it "changes the signature with different data" do
|
50
|
-
@auth.sign('test', {:option => 2}).should_not == '
|
50
|
+
@auth.sign('test', {:option => 2}).should_not == '65f2253344287b3c5634a1ce6163fb694b2280b1'
|
51
51
|
end
|
52
52
|
|
53
53
|
it "works with no options parameter" do
|
54
|
-
@auth.sign('test').should == '
|
54
|
+
@auth.sign('test').should == 'd38f897889c808c021a8ed97d2caacdac48b8259'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
#TODO: nuke
|
59
|
+
context ".sign_old" do
|
60
|
+
before :all do
|
61
|
+
@auth = RainforestAuth.new('key')
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns the expected signature" do
|
65
|
+
@auth.sign_old('test', {:option => 1}).should == '5957ba2707a51852d32309d16184e8adce9c4d8e'
|
66
|
+
end
|
67
|
+
|
68
|
+
it "changes the signature with different data" do
|
69
|
+
@auth.sign_old('test', {:option => 2}).should_not == '5957ba2707a51852d32309d16184e8adce9c4d8e'
|
70
|
+
end
|
71
|
+
|
72
|
+
it "works with no options parameter" do
|
73
|
+
@auth.sign_old('test').should == '0a41bdf26fac08a89573a7f5efe0a5145f2730df'
|
55
74
|
end
|
56
75
|
end
|
57
76
|
|
58
77
|
context ".verify" do
|
59
78
|
before :all do
|
60
79
|
@auth = RainforestAuth.new('key')
|
61
|
-
@
|
80
|
+
@old_digest = '5957ba2707a51852d32309d16184e8adce9c4d8e'
|
81
|
+
@digest = '65f2253344287b3c5634a1ce6163fb694b2280b1'
|
62
82
|
end
|
63
83
|
|
64
84
|
it "returns true for a valid signature" do
|
65
85
|
@auth.verify(@digest, 'test', {:option => 1}).should be_true
|
66
86
|
end
|
67
87
|
|
88
|
+
it "returns true for a valid old signature" do
|
89
|
+
@auth.verify(@old_digest, 'test', {:option => 1}).should be_true
|
90
|
+
end
|
91
|
+
|
68
92
|
it "returns false for a bad signature" do
|
69
93
|
@auth.verify(@digest, 'test', {:option => 2}).should be_false
|
70
94
|
end
|
71
95
|
|
96
|
+
it "returns false for a bad old signature" do
|
97
|
+
@auth.verify(@old_digest, 'test', {:option => 2}).should be_false
|
98
|
+
end
|
99
|
+
|
72
100
|
it "works with no options parameter" do
|
101
|
+
#OLD
|
73
102
|
@auth.verify('0a41bdf26fac08a89573a7f5efe0a5145f2730df', 'test').should be_true
|
103
|
+
#NEW
|
104
|
+
@auth.verify('d38f897889c808c021a8ed97d2caacdac48b8259', 'test').should be_true
|
74
105
|
end
|
75
106
|
end
|
76
107
|
|
@@ -80,7 +111,7 @@ describe RainforestAuth do
|
|
80
111
|
@object = "test"
|
81
112
|
@object.stub(:some_method) { 3 }
|
82
113
|
|
83
|
-
@digest = '
|
114
|
+
@digest = '65f2253344287b3c5634a1ce6163fb694b2280b1'
|
84
115
|
end
|
85
116
|
|
86
117
|
it "executes the block if there is a valid signature" do
|
@@ -99,4 +130,4 @@ describe RainforestAuth do
|
|
99
130
|
}
|
100
131
|
end
|
101
132
|
end
|
102
|
-
end
|
133
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainforest_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -33,6 +33,7 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- ".gitignore"
|
35
35
|
- ".rspec"
|
36
|
+
- ".ruby-version"
|
36
37
|
- ".rvmrc"
|
37
38
|
- ".travis.yml"
|
38
39
|
- Gemfile
|
@@ -67,6 +68,4 @@ rubygems_version: 2.2.2
|
|
67
68
|
signing_key:
|
68
69
|
specification_version: 4
|
69
70
|
summary: Authentication of messages for Rainforest webhooks
|
70
|
-
test_files:
|
71
|
-
- spec/rainforest_auth_spec.rb
|
72
|
-
- spec/spec_helper.rb
|
71
|
+
test_files: []
|