atpay_tokens 2.4.0 → 3.0.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 +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
|