aes256gcm_decrypt 0.0.2 → 1.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 +4 -4
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +7 -0
- data/Gemfile +6 -0
- data/Rakefile +3 -1
- data/aes256gcm_decrypt.gemspec +6 -4
- data/ext/aes256gcm_decrypt/extconf.rb +2 -0
- data/spec/decrypt_spec.rb +14 -12
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 284ea0405d1679da805b31d952acc357e1c2a42d
|
4
|
+
data.tar.gz: 8b14e592ac2ef6a475b2153862001b9ec1983d16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f4dea2a701d38fafd993af14e451a47f6b0ddb95d2d9079f955d2b0657c3a37db3a800e836e2112084601992854d6fb0acdd34d34b3166be3dc61f43f412086
|
7
|
+
data.tar.gz: 46cc4481a5a976287bb3e2e6169380d5eb6217bb629f857fd784376724af7c33bf48912e83170f83eea1916da6b2c1fcc9be15a55bd2a3f7b9bc3a1719dfb464
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
Exclude:
|
5
|
+
- 'aes256gcm_decrypt.gemspec'
|
6
|
+
- 'ext/aes256gcm_decrypt/extconf.rb'
|
7
|
+
- 'tmp/**/aes256gcm_decrypt.gemspec'
|
8
|
+
- 'tmp/**/extconf.rb'
|
9
|
+
|
10
|
+
Metrics/BlockLength:
|
11
|
+
Max: 48
|
12
|
+
|
13
|
+
Metrics/LineLength:
|
14
|
+
Max: 86
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2018-05-23 10:32:04 -0400 using RuboCop version 0.55.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake/extensiontask'
|
2
4
|
require 'rspec/core/rake_task'
|
3
5
|
|
@@ -10,4 +12,4 @@ RSpec::Core::RakeTask.new(:spec) do |task|
|
|
10
12
|
end
|
11
13
|
|
12
14
|
desc 'Compile extension and run specs'
|
13
|
-
task :
|
15
|
+
task test: %i[compile spec]
|
data/aes256gcm_decrypt.gemspec
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = 'aes256gcm_decrypt'
|
3
|
-
s.version = '0.0
|
5
|
+
s.version = '1.0.0'
|
4
6
|
s.summary = 'Decrypt AES256GCM-encrypted data in Apple Pay Payment Tokens'
|
5
7
|
s.author = 'Clearhaus'
|
6
8
|
s.homepage = 'https://github.com/clearhaus/aes256gcm_decrypt'
|
@@ -8,10 +10,10 @@ Gem::Specification.new do |s|
|
|
8
10
|
|
9
11
|
s.files = `git ls-files -z`.split("\x0")
|
10
12
|
|
11
|
-
s.extensions <<
|
13
|
+
s.extensions << 'ext/aes256gcm_decrypt/extconf.rb'
|
12
14
|
|
13
15
|
s.required_ruby_version = '< 2.4'
|
14
16
|
|
15
|
-
s.add_development_dependency
|
16
|
-
s.add_development_dependency
|
17
|
+
s.add_development_dependency 'rake-compiler'
|
18
|
+
s.add_development_dependency 'rspec'
|
17
19
|
end
|
data/spec/decrypt_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'aes256gcm_decrypt'
|
2
4
|
require 'base64'
|
3
5
|
|
@@ -8,26 +10,26 @@ describe 'Aes256GcmDecrypt::decrypt' do
|
|
8
10
|
end
|
9
11
|
|
10
12
|
it 'decrypts correctly' do
|
11
|
-
plaintext = Aes256GcmDecrypt
|
13
|
+
plaintext = Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, @key)
|
12
14
|
expect(plaintext).to eq \
|
13
|
-
'{"applicationPrimaryAccountNumber":"4109370251004320","applicationExp'
|
14
|
-
'irationDate":"200731","currencyCode":"840","transactionAmount":100,"d'
|
15
|
-
'eviceManufacturerIdentifier":"040010030273","paymentDataType":"3DSecu'
|
16
|
-
're","paymentData":{"onlinePaymentCryptogram":"Af9x/QwAA/DjmU65oyc1MAA'
|
15
|
+
'{"applicationPrimaryAccountNumber":"4109370251004320","applicationExp' \
|
16
|
+
'irationDate":"200731","currencyCode":"840","transactionAmount":100,"d' \
|
17
|
+
'eviceManufacturerIdentifier":"040010030273","paymentDataType":"3DSecu' \
|
18
|
+
're","paymentData":{"onlinePaymentCryptogram":"Af9x/QwAA/DjmU65oyc1MAA' \
|
17
19
|
'BAAA=","eciIndicator":"5"}}'
|
18
20
|
end
|
19
21
|
|
20
22
|
it 'detects wrong parameter types' do
|
21
|
-
expect{Aes256GcmDecrypt
|
23
|
+
expect { Aes256GcmDecrypt.decrypt(42, @key) }.to \
|
22
24
|
raise_error(Aes256GcmDecrypt::InputError, 'ciphertext_and_tag must be a string')
|
23
|
-
expect{Aes256GcmDecrypt
|
25
|
+
expect { Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, 42) }.to \
|
24
26
|
raise_error(Aes256GcmDecrypt::InputError, 'key must be a string')
|
25
27
|
end
|
26
28
|
|
27
29
|
it 'detects too short ciphertext_and_tag' do
|
28
30
|
(0..16).each do |i|
|
29
31
|
ciphertext_and_tag = 'x' * i
|
30
|
-
expect{Aes256GcmDecrypt
|
32
|
+
expect { Aes256GcmDecrypt.decrypt(ciphertext_and_tag, @key) }.to \
|
31
33
|
raise_error(Aes256GcmDecrypt::InputError, 'ciphertext_and_tag too short')
|
32
34
|
end
|
33
35
|
end
|
@@ -35,26 +37,26 @@ describe 'Aes256GcmDecrypt::decrypt' do
|
|
35
37
|
it 'detects wrong key length' do
|
36
38
|
((0..64).to_a - [32]).each do |i|
|
37
39
|
key = 'x' * i
|
38
|
-
expect{Aes256GcmDecrypt
|
40
|
+
expect { Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, key) }.to \
|
39
41
|
raise_error(Aes256GcmDecrypt::InputError, 'length of key must be 32')
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
45
|
it 'detects tampering with the ciphertext' do
|
44
46
|
@ciphertext_and_tag[0] = 'x'
|
45
|
-
expect{Aes256GcmDecrypt
|
47
|
+
expect { Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, @key) }.to \
|
46
48
|
raise_error(Aes256GcmDecrypt::AuthenticationError, 'Authentication failed')
|
47
49
|
end
|
48
50
|
|
49
51
|
it 'detects an incorrect tag' do
|
50
52
|
@ciphertext_and_tag[-1] = 'x'
|
51
|
-
expect{Aes256GcmDecrypt
|
53
|
+
expect { Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, @key) }.to \
|
52
54
|
raise_error(Aes256GcmDecrypt::AuthenticationError, 'Authentication failed')
|
53
55
|
end
|
54
56
|
|
55
57
|
it 'detects an incorrect key' do
|
56
58
|
@key[0] = 'x'
|
57
|
-
expect{Aes256GcmDecrypt
|
59
|
+
expect { Aes256GcmDecrypt.decrypt(@ciphertext_and_tag, @key) }.to \
|
58
60
|
raise_error(Aes256GcmDecrypt::AuthenticationError, 'Authentication failed')
|
59
61
|
end
|
60
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aes256gcm_decrypt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clearhaus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -45,6 +45,8 @@ extensions:
|
|
45
45
|
- ext/aes256gcm_decrypt/extconf.rb
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- ".rubocop.yml"
|
49
|
+
- ".rubocop_todo.yml"
|
48
50
|
- Gemfile
|
49
51
|
- LICENSE.txt
|
50
52
|
- README.md
|