atpay_tokens 2.4.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/atpay_tokens.gemspec +2 -2
- data/lib/atpay/security_key.rb +2 -2
- data/lib/atpay/tokenator.rb +19 -11
- data/spec/atpay/security_key_spec.rb +8 -1
- metadata +14 -22
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e78ea049231eadd91a3a8903d63be5c2c7c316d0
|
4
|
+
data.tar.gz: 8fa771fa8d475e287acb09014f4cf41b13625ba6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 25e216578c2550febf9a73b1bb006da1fe8bc44b8e1ba833b47600a048216a8542b5a092dbcd7717685514d37771b0af77368fa26225b444e60f84256749e2b4
|
7
|
+
data.tar.gz: 7892ac551565aa481faf0f3e33b2a1c8d8fd9ebc5039b1f6c225e69ae983fe87c825b8f5bd7dd805364436dc97d51caa3bcdca7252c5f2669aff36950db8a19c
|
data/atpay_tokens.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'atpay_tokens'
|
3
|
-
s.version = '
|
4
|
-
s.date = '2014-
|
3
|
+
s.version = '3.0.0'
|
4
|
+
s.date = '2014-03-31'
|
5
5
|
s.summary = "@Pay Token Generator"
|
6
6
|
s.description = "Client interface for the @Pay API, key generation for performance optimization"
|
7
7
|
s.authors = ["James Kassemi", "Glen Holcomb"]
|
data/lib/atpay/security_key.rb
CHANGED
@@ -15,7 +15,7 @@ module AtPay
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def email_token
|
18
|
-
"@#{version}#{Base64.strict_encode64([nonce, partner_frame, body_frame].join)}"
|
18
|
+
"@#{version}#{Base64.strict_encode64([nonce, partner_frame, body_frame].join)}@"
|
19
19
|
ensure
|
20
20
|
@nonce = nil
|
21
21
|
end
|
@@ -49,7 +49,7 @@ module AtPay
|
|
49
49
|
remote_addr
|
50
50
|
].join))
|
51
51
|
|
52
|
-
[[message.length].pack("l>"), message,
|
52
|
+
[[message.length].pack("l>"), message,
|
53
53
|
[remote_addr.length].pack("l>"), remote_addr].join
|
54
54
|
end
|
55
55
|
|
data/lib/atpay/tokenator.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
module AtPay
|
2
2
|
class Tokenator
|
3
|
-
attr_reader :token,
|
3
|
+
attr_reader :token,
|
4
4
|
:payload,
|
5
|
-
:partner_id,
|
6
|
-
:source,
|
7
|
-
:amount,
|
8
|
-
:expires,
|
5
|
+
:partner_id,
|
6
|
+
:source,
|
7
|
+
:amount,
|
8
|
+
:expires,
|
9
9
|
:group,
|
10
10
|
:site_frame,
|
11
11
|
:ip,
|
12
|
-
:user_data
|
12
|
+
:user_data,
|
13
|
+
:version
|
13
14
|
|
14
15
|
TARGETS = {
|
15
16
|
/url<(.*?)>/ => [:@url, 6],
|
@@ -19,12 +20,14 @@ module AtPay
|
|
19
20
|
}
|
20
21
|
|
21
22
|
# A bit clunky but useful for testing token decomposition.
|
22
|
-
# If you provide a test session then the config values there
|
23
|
+
# If you provide a test session then the config values there
|
23
24
|
# will be used so that decryption will function without @Pay's
|
24
25
|
# private key.
|
25
26
|
def initialize(token, session = nil)
|
27
|
+
trim_tail token
|
26
28
|
@token = token
|
27
29
|
@session = session
|
30
|
+
@version = Tokenator.token_version(token)
|
28
31
|
strip_version
|
29
32
|
|
30
33
|
@checksum = Digest::SHA1.hexdigest(token) # Before or after removing version?
|
@@ -52,7 +55,7 @@ module AtPay
|
|
52
55
|
Base64.decode64(version[1..-1]).unpack("Q>")[0]
|
53
56
|
end
|
54
57
|
end
|
55
|
-
|
58
|
+
|
56
59
|
|
57
60
|
# We want to pull the header out of the token. This means we
|
58
61
|
# grab the nonce and the partner id from the token. The version
|
@@ -104,7 +107,7 @@ module AtPay
|
|
104
107
|
|
105
108
|
# Fix our Base64 problems
|
106
109
|
def decode
|
107
|
-
@token = Base64.decode64 @token
|
110
|
+
@token = Base64.decode64 @token
|
108
111
|
end
|
109
112
|
|
110
113
|
# Extract our entropy
|
@@ -150,10 +153,10 @@ module AtPay
|
|
150
153
|
target raw_target
|
151
154
|
|
152
155
|
if @group
|
153
|
-
@group = @payload.slice!(0, @group.index("/"))
|
156
|
+
@group = @payload.slice!(0, @group.index("/"))
|
154
157
|
@payload.slice!(0, 1)
|
155
158
|
end
|
156
|
-
|
159
|
+
|
157
160
|
@amount = parse_amount!
|
158
161
|
@expiration = parse_expiration!
|
159
162
|
@user_data = parse_user_data!
|
@@ -183,5 +186,10 @@ module AtPay
|
|
183
186
|
instance_variable_set TARGETS[match][0], $1.dup
|
184
187
|
@payload.slice!(0, ($1.length + TARGETS[match][1]))
|
185
188
|
end
|
189
|
+
|
190
|
+
# Remove the trailing @ if it's present on the token
|
191
|
+
def trim_tail(token)
|
192
|
+
token.chomp! '@'
|
193
|
+
end
|
186
194
|
end
|
187
195
|
end
|
@@ -37,7 +37,7 @@ describe AtPay::SecurityKey do
|
|
37
37
|
it "fails when amount not float" do
|
38
38
|
expect {
|
39
39
|
AtPay::SecurityKey.new(session, {
|
40
|
-
:amount => "25",
|
40
|
+
:amount => "25",
|
41
41
|
:email => "test@example.com"
|
42
42
|
})
|
43
43
|
}.to raise_error
|
@@ -90,5 +90,12 @@ describe AtPay::SecurityKey do
|
|
90
90
|
it "returns a key with user_data" do
|
91
91
|
key = AtPay::SecurityKey.new(session, {:email => "glen@atpay.com", :amount => 25.00, :user_data => 'bacon and eggs'}).to_s
|
92
92
|
end
|
93
|
+
|
94
|
+
it "encapsulates the key with @" do
|
95
|
+
key = AtPay::SecurityKey.new(session, {email: 'glen@atpay.com', amount: 25.00}).to_s
|
96
|
+
|
97
|
+
expect(key[0]).to eq('@')
|
98
|
+
expect(key[-1]).to eq('@')
|
99
|
+
end
|
93
100
|
end
|
94
101
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atpay_tokens
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- James Kassemi
|
@@ -10,54 +9,48 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2014-
|
12
|
+
date: 2014-03-31 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: ffi
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rbnacl
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: trollop
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - '>='
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '0'
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - '>='
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '0'
|
63
56
|
description: Client interface for the @Pay API, key generation for performance optimization
|
@@ -89,28 +82,27 @@ files:
|
|
89
82
|
- spec/helper.rb
|
90
83
|
homepage: https://atpay.com
|
91
84
|
licenses: []
|
85
|
+
metadata: {}
|
92
86
|
post_install_message:
|
93
87
|
rdoc_options: []
|
94
88
|
require_paths:
|
95
89
|
- lib
|
96
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
91
|
requirements:
|
99
|
-
- -
|
92
|
+
- - '>='
|
100
93
|
- !ruby/object:Gem::Version
|
101
94
|
version: '0'
|
102
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
96
|
requirements:
|
105
|
-
- -
|
97
|
+
- - '>='
|
106
98
|
- !ruby/object:Gem::Version
|
107
99
|
version: '0'
|
108
100
|
requirements: []
|
109
101
|
rubyforge_project:
|
110
|
-
rubygems_version:
|
102
|
+
rubygems_version: 2.0.14
|
111
103
|
signing_key:
|
112
|
-
specification_version:
|
113
|
-
summary:
|
104
|
+
specification_version: 4
|
105
|
+
summary: '@Pay Token Generator'
|
114
106
|
test_files:
|
115
107
|
- spec/atpay/config_spec.rb
|
116
108
|
- spec/atpay/security_key_spec.rb
|