ruby-common 1.0.2 → 1.0.4
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/lib/ruby-common/common/Utils.rb +11 -0
- data/lib/ruby-common/v4/Signature4VerifierService.rb +17 -5
- data/lib/ruby-common/version.rb +1 -1
- metadata +2 -3
- data/Gemfile.lock +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c24b995c7cd6e05a8042d2ec467a879fb5a68ddd189ea6f0fc1e06d7426dc657
|
4
|
+
data.tar.gz: 2e73a5b4eeabba4389a4bd4b72dd9c3abeecc077b91319dae8d0d6b739843f00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3fc46151099072d1a66919932685c648725234332aa5c0877dc5a4ad116c18f50b388f5b60d3dd5c1e88594c2d90818f49123256bd0ce94447863b35da09b10
|
7
|
+
data.tar.gz: 46cbef1d26d40ce445c478822e453d27e33662769b1bb6e87c420c141ab4e8dffb35a21b297a890b8e69430675ea99f32abb1ce42a1c07aae0abff2423ed2752
|
@@ -11,6 +11,10 @@ class SignatureVerifierUtils
|
|
11
11
|
return Base64.decode64(key)
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.base64_encode(key)
|
15
|
+
return Base64.encode64(key)
|
16
|
+
end
|
17
|
+
|
14
18
|
def self.encode(key, data)
|
15
19
|
begin
|
16
20
|
hmac = OpenSSL::HMAC.new(key, 'sha256')
|
@@ -19,4 +23,11 @@ class SignatureVerifierUtils
|
|
19
23
|
raise SignatureParseError, "Error encode data"
|
20
24
|
end
|
21
25
|
end
|
26
|
+
|
27
|
+
def self.pad_start(input_string, length, char)
|
28
|
+
return input_string if input_string.length >= length
|
29
|
+
|
30
|
+
padding = char.to_s * (length - input_string.length)
|
31
|
+
padding + input_string
|
32
|
+
end
|
22
33
|
end
|
@@ -118,7 +118,7 @@ class Signature4VerifierService
|
|
118
118
|
|
119
119
|
def parse3(signature)
|
120
120
|
sign_decoded = SignatureVerifierUtils.base64_decode(signature)
|
121
|
-
unpack_result = PhpUnpack.unpack('Cversion/NrequestTime/NsignatureTime/CmasterSignType/nmasterTokenLength',
|
121
|
+
unpack_result = PhpUnpack.unpack('Cversion/NrequestTime/NsignatureTime/CmasterSignType/nmasterTokenLength', sign_decoded)
|
122
122
|
|
123
123
|
version = unpack_result['version']
|
124
124
|
raise VersionError, 'Invalid signature version' if version != 3
|
@@ -127,13 +127,12 @@ class Signature4VerifierService
|
|
127
127
|
raise SignatureParseError, 'invalid timestamp (future time)' if timestamp > (Time.now.to_i)
|
128
128
|
|
129
129
|
master_token_length = unpack_result['masterTokenLength']
|
130
|
-
|
131
|
-
master_token = get_bytes_and_advance_position(sign_decoded, master_token_length)
|
130
|
+
master_token = sign_decoded.slice!(0, master_token_length)
|
132
131
|
unpack_result['masterToken'] = master_token
|
133
132
|
|
134
133
|
customer_data = PhpUnpack.unpack('CcustomerSignType/ncustomerTokenLength', sign_buffer)
|
135
134
|
customer_token_length = customer_data['customerTokenLength']
|
136
|
-
customer_token =
|
135
|
+
customer_token = sign_decoded.slice!(0, customer_token_length)
|
137
136
|
customer_data['customerToken'] = customer_token
|
138
137
|
|
139
138
|
unpack_result.merge!(customer_data)
|
@@ -154,7 +153,7 @@ class Signature4VerifierService
|
|
154
153
|
|
155
154
|
raise SignatureParseError, 'premature end of signature 0x01' if header.empty? || !header.key?('fieldId')
|
156
155
|
|
157
|
-
field =
|
156
|
+
field = field_type_def(header['fieldId'].first, i)
|
158
157
|
v = {}
|
159
158
|
|
160
159
|
case field&.type
|
@@ -199,5 +198,18 @@ class Signature4VerifierService
|
|
199
198
|
def get_base(verdict, request_time, signature_time, ip_address, user_agent)
|
200
199
|
[verdict, request_time, signature_time, ip_address, user_agent].join("\n")
|
201
200
|
end
|
201
|
+
|
202
|
+
private def field_type_def(field_id, i)
|
203
|
+
if FIELD_IDS[field_id]
|
204
|
+
return FIELD_IDS[field_id]
|
205
|
+
end
|
206
|
+
|
207
|
+
result_type = FIELD_IDS[field_id & 0xC0].type
|
208
|
+
|
209
|
+
i_str = SignatureVerifierUtils.pad_start(i.to_s, 2, '0')
|
210
|
+
result_name = result_type + i_str
|
211
|
+
|
212
|
+
Field.new(result_name, result_type)
|
213
|
+
end
|
202
214
|
end
|
203
215
|
end
|
data/lib/ruby-common/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Parzych
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbnacl
|
@@ -62,7 +62,6 @@ files:
|
|
62
62
|
- CHANGELOG.md
|
63
63
|
- CODE_OF_CONDUCT.md
|
64
64
|
- Gemfile
|
65
|
-
- Gemfile.lock
|
66
65
|
- LICENSE.md
|
67
66
|
- README.md
|
68
67
|
- Rakefile
|
data/Gemfile.lock
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
ruby-common (0.1.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.5.1)
|
10
|
-
rake (13.2.1)
|
11
|
-
rspec (3.13.0)
|
12
|
-
rspec-core (~> 3.13.0)
|
13
|
-
rspec-expectations (~> 3.13.0)
|
14
|
-
rspec-mocks (~> 3.13.0)
|
15
|
-
rspec-core (3.13.0)
|
16
|
-
rspec-support (~> 3.13.0)
|
17
|
-
rspec-expectations (3.13.1)
|
18
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
19
|
-
rspec-support (~> 3.13.0)
|
20
|
-
rspec-mocks (3.13.1)
|
21
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
-
rspec-support (~> 3.13.0)
|
23
|
-
rspec-support (3.13.1)
|
24
|
-
|
25
|
-
PLATFORMS
|
26
|
-
x86_64-linux
|
27
|
-
|
28
|
-
DEPENDENCIES
|
29
|
-
rake (~> 13.0)
|
30
|
-
rspec
|
31
|
-
ruby-common!
|
32
|
-
|
33
|
-
BUNDLED WITH
|
34
|
-
2.3.5
|