attr_keyring 0.5.2 → 0.5.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf52bc4c9faa76f061e0023bf8bf21cfe9de59a5ff1ce608392b388957be85db
4
- data.tar.gz: 3b5e4145a2704b00b5784b49fd949172e66629499d0eccaaf5f237b8a1828b70
3
+ metadata.gz: b0a2294de1107eb98157861c1fd9dc4fca1d6c9aa7926838fd461a23965888c8
4
+ data.tar.gz: 62d4023dfc004823610c281ad5cdc1ac9bdc04d753152fc21b334f0fa99db170
5
5
  SHA512:
6
- metadata.gz: bf408bfc13aa86d353d345c47a08a40d04113408f3a7d20c9a7ba0e6cc347c12b5adf533fe0c250764cc0df330b283a96ee2a6db4cacff7ce61b20c07614772d
7
- data.tar.gz: 4a38d54dbf79ad34a9b9a54bbdbc655382e4ab128209ec4f73fbcb62df46b0040519a47c394dffabc4b567e5c852a89c91ee6bfe5d35c8ed4b10dfbe1943b270
6
+ metadata.gz: 9eb8b45d47089caf95ea24d4b3ac1783f0b7dfbda7f1d40f7c178ea03c17cf9a69e1c23df69c073e35b3d27aa0f9bb4c561dfd6f1ea2711f43311b75b7ee0629
7
+ data.tar.gz: 04bed2be91c97585d3cf64730feab4e8eabea97d52b89e562e1130cdd5676f04c2a85468b93762b4a5b061643475a6063a5c959ade817514be9deb42e0b22ef1
@@ -1,73 +1,19 @@
1
+ ---
2
+ inherit_gem:
3
+ rubocop-fnando: .rubocop.yml
4
+
1
5
  AllCops:
2
- TargetRubyVersion: 2.5
3
- Include:
4
- - '**/*.gemspec'
5
- - '**/*.podspec'
6
- - '**/*.jbuilder'
7
- - '**/*.rake'
8
- - '**/*.opal'
9
- - '**/config.ru'
10
- - '**/Gemfile'
11
- - '**/Rakefile'
12
- - '**/Capfile'
13
- - '**/Guardfile'
14
- - '**/Podfile'
15
- - '**/Thorfile'
16
- - '**/Vagrantfile'
17
- - '**/Berksfile'
18
- - '**/Cheffile'
19
- - '**/Vagabondfile'
6
+ TargetRubyVersion: 2.6
20
7
 
21
- Style/Documentation:
8
+ Metrics/AbcSize:
22
9
  Enabled: false
23
10
 
24
- Style/StringLiterals:
25
- EnforcedStyle: double_quotes
26
-
27
- Layout/SpaceInsideBlockBraces:
28
- EnforcedStyle: space
29
- EnforcedStyleForEmptyBraces: space
30
- SpaceBeforeBlockParameters: false
31
-
32
- Layout/SpaceInsideHashLiteralBraces:
33
- EnforcedStyle: no_space
34
- EnforcedStyleForEmptyBraces: no_space
35
-
36
- Layout/FirstArrayElementLineBreak:
37
- Enabled: true
38
-
39
- Layout/FirstHashElementLineBreak:
40
- Enabled: true
41
-
42
- Style/SymbolArray:
43
- Enabled: true
44
-
45
- Style/PercentLiteralDelimiters:
46
- PreferredDelimiters:
47
- '%': '[]'
48
- '%i': '[]'
49
- '%q': '[]'
50
- '%Q': '[]'
51
- '%r': '{}'
52
- '%s': '[]'
53
- '%w': '[]'
54
- '%W': '[]'
55
- '%x': '[]'
56
-
57
11
  Metrics/LineLength:
58
- Enabled: false
12
+ Exclude:
13
+ - test/**/*
59
14
 
60
- Style/EmptyMethod:
61
- EnforcedStyle: expanded
62
-
63
- Style/FrozenStringLiteralComment:
15
+ Metrics/MethodLength:
64
16
  Enabled: false
65
17
 
66
- Style/AccessModifierDeclarations:
67
- EnforcedStyle: inline
68
-
69
- Style/Alias:
70
- EnforcedStyle: prefer_alias_method
71
-
72
- Style/TrailingUnderscoreVariable:
18
+ Metrics/ClassLength:
73
19
  Enabled: false
@@ -1,17 +1,25 @@
1
+ ---
2
+
1
3
  language: ruby
2
4
  cache: bundler
3
5
  sudo: false
4
6
  notifications:
5
7
  email: false
6
8
  rvm:
7
- - 2.5.3
9
+ - 2.6.5
10
+ - 2.5.7
11
+ services:
12
+ - postgresql
13
+ gemfiles:
14
+ - gemfiles/6_0.gemfile
15
+ - gemfiles/5_2.gemfile
8
16
  before_script:
9
- - createdb test
10
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
11
- - chmod +x ./cc-test-reporter
12
- - "./cc-test-reporter before-build"
17
+ - createdb test
18
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
19
+ - chmod +x ./cc-test-reporter
20
+ - "./cc-test-reporter before-build"
13
21
  after_script:
14
- - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
22
+ - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
15
23
  env:
16
24
  global:
17
25
  secure: c0y7opFgX78UQL0dVq2gciMr3Ca4y4Aw4cSbQMnUwGecwuzOPUhjV98yy4b6EpQ0bLVbVcSPtx/PCVV750nxJPQsz9tWS0yGxQPBXuh2w0AX+ErYJVYaF6+hTjovEiHB86Q9g8YCD29CIMLZs2yeUrB+ORJWQcuAn8fw475Zskk8d8BWqR8CDdonFKlwS0Bx6rOqkyVy0JiNbOM4+trV/RzrNC+dc1geqOo45ceTYiGzkkMU1XANjNhzl/v0DYtCWLF/Dj1s8da96btqU6msZDfsBM73zKWtu0KJMnzqa8Ba4Tjc39kd2ro6Zb22cELBdXOFBvNCAEjbmZIaJ2OC45fES1OGZnB66SjAScdVdxKy2jOWjlFvrRiHu3Zrbl5tFTEaJ/PMHueQn4AzneK1wU2kzjq5iCwBZtMp/iJtCvz0V6qBt77qJe65YuENhcj26cDMqQkhKd0QBTWNs8r02KY3HFKcprgM+2TXxVSvfDu2cbiMInvc3K+uFNnEbu/1piTyStKWGd64WHixV6CEFpHxLU04IUNB62mSvUZtZ6V782X9kawoRyUg6lWvXmnGUUvczdJdpSR5/3gVXOWHireYy/qA6Zqoup27PPoaNgnKCa/fWvN/aJDvrGJb9OWpiK8DGi6T35V5gtDF+vd8mVzyPnYJznlWLgA5m7FSzLg=
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rake/testtask"
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "./lib/attr_keyring/version"
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -12,9 +14,12 @@ Gem::Specification.new do |spec|
12
14
  spec.license = "MIT"
13
15
 
14
16
  # Specify which files should be added to the gem when it is released.
15
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
+ # The `git ls-files -z` loads the files in the RubyGem that have been added
18
+ # into git.
16
19
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
- `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
20
+ `git ls-files -z`
21
+ .split("\x0")
22
+ .reject {|f| f.match(%r{^(test|spec|features)/}) }
18
23
  end
19
24
  spec.bindir = "exe"
20
25
  spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
@@ -29,6 +34,7 @@ Gem::Specification.new do |spec|
29
34
  spec.add_development_dependency "pry-meta"
30
35
  spec.add_development_dependency "rake"
31
36
  spec.add_development_dependency "rubocop"
37
+ spec.add_development_dependency "rubocop-fnando"
32
38
  spec.add_development_dependency "sequel"
33
39
  spec.add_development_dependency "simplecov"
34
40
  end
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "attr_keyring"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/inline"
2
4
  require "stringio"
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/inline"
2
4
 
3
5
  gemfile do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/inline"
2
4
  require "stringio"
3
5
 
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+ gemspec path: ".."
5
+ gem "activerecord", "~> 5.2.0"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+ gemspec path: ".."
5
+ gem "activerecord", "~> 6.0.0"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AttrKeyring
2
4
  require "attr_keyring/version"
3
5
  require "keyring"
@@ -73,33 +75,48 @@ module AttrKeyring
73
75
  value = value.to_s
74
76
 
75
77
  previous_keyring_id = public_send(self.class.keyring_column_name)
76
- encrypted_value, keyring_id, digest = self.class.keyring.encrypt(value, previous_keyring_id)
78
+ encrypted_value, keyring_id, digest =
79
+ self.class.keyring.encrypt(value, previous_keyring_id)
77
80
 
78
81
  public_send("#{self.class.keyring_column_name}=", keyring_id)
79
82
  public_send("encrypted_#{attribute}=", encrypted_value)
80
- public_send("#{attribute}_digest=", digest) if respond_to?("#{attribute}_digest=")
83
+
84
+ return unless respond_to?("#{attribute}_digest=")
85
+
86
+ public_send("#{attribute}_digest=", digest)
81
87
  end
82
88
 
83
89
  private def attr_decrypt_column(attribute)
84
90
  cache_name = :"@#{attribute}"
85
- return instance_variable_get(cache_name) if instance_variable_defined?(cache_name)
91
+ if instance_variable_defined?(cache_name)
92
+ return instance_variable_get(cache_name)
93
+ end
86
94
 
87
95
  encrypted_value = public_send("encrypted_#{attribute}")
96
+
88
97
  return unless encrypted_value
89
98
 
90
- decrypted_value = self.class.keyring.decrypt(encrypted_value, public_send(self.class.keyring_column_name))
99
+ decrypted_value = self.class.keyring.decrypt(
100
+ encrypted_value,
101
+ public_send(self.class.keyring_column_name)
102
+ )
91
103
 
92
104
  instance_variable_set(cache_name, decrypted_value)
93
105
  end
94
106
 
95
107
  private def clear_decrypted_column_cache(attribute)
96
108
  cache_name = :"@#{attribute}"
97
- remove_instance_variable(cache_name) if instance_variable_defined?(cache_name)
109
+
110
+ return unless instance_variable_defined?(cache_name)
111
+
112
+ remove_instance_variable(cache_name)
98
113
  end
99
114
 
100
115
  private def reset_encrypted_column(attribute)
101
116
  public_send("encrypted_#{attribute}=", nil)
102
- public_send("#{attribute}_digest=", nil) if respond_to?("#{attribute}_digest=")
117
+ if respond_to?("#{attribute}_digest=")
118
+ public_send("#{attribute}_digest=", nil)
119
+ end
103
120
  nil
104
121
  end
105
122
 
@@ -113,7 +130,9 @@ module AttrKeyring
113
130
  encrypted_value, _, digest = self.class.keyring.encrypt(value)
114
131
 
115
132
  public_send("encrypted_#{attribute}=", encrypted_value)
116
- public_send("#{attribute}_digest=", digest) if respond_to?("#{attribute}_digest")
133
+ if respond_to?("#{attribute}_digest")
134
+ public_send("#{attribute}_digest=", digest)
135
+ end
117
136
  end
118
137
 
119
138
  public_send("#{self.class.keyring_column_name}=", keyring_id)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_record"
2
4
 
3
5
  module AttrKeyring
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "sequel"
2
4
 
3
5
  module AttrKeyring
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AttrKeyring
2
- VERSION = "0.5.2".freeze
4
+ VERSION = "0.5.3"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Keyring
2
4
  require "openssl"
3
5
  require "base64"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Keyring
2
4
  module Encryptor
3
5
  module AES
@@ -35,7 +37,9 @@ module Keyring
35
37
 
36
38
  expected_hmac = hmac_digest(key.signing_key, encrypted_payload)
37
39
 
38
- raise InvalidAuthentication, "Expected HMAC to be #{Base64.strict_encode64(expected_hmac)}; got #{Base64.strict_encode64(hmac)} instead" unless verify_signature(expected_hmac, hmac)
40
+ unless verify_signature(expected_hmac, hmac)
41
+ raise InvalidAuthentication, "Expected HMAC to be #{Base64.strict_encode64(expected_hmac)}; got #{Base64.strict_encode64(hmac)} instead" # rubocop:disable Metrics/LineLength
42
+ end
39
43
 
40
44
  cipher.iv = iv
41
45
  cipher.key = key.encryption_key
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Keyring
2
4
  class Key
3
5
  attr_reader :id, :signing_key, :encryption_key
@@ -11,13 +13,15 @@ module Keyring
11
13
  def to_s
12
14
  "#<Keyring::Key id=#{id.inspect}>"
13
15
  end
14
- alias_method :inspect, :to_s
16
+ alias inspect to_s
15
17
 
16
18
  private def parse_key(key)
17
19
  expected_key_size = @key_size * 2
18
20
  secret = decode_key(key, expected_key_size)
19
21
 
20
- raise InvalidSecret, "Secret must be #{expected_key_size} bytes, instead got #{secret.bytesize}" unless secret.bytesize == expected_key_size
22
+ unless secret.bytesize == expected_key_size
23
+ raise InvalidSecret, "Secret must be #{expected_key_size} bytes, instead got #{secret.bytesize}" # rubocop:disable Metrics/LineLength
24
+ end
21
25
 
22
26
  signing_key = secret[0...@key_size]
23
27
  encryption_key = secret[@key_size..-1]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr_keyring
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-20 00:00:00.000000000 Z
11
+ date: 2019-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-fnando
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: sequel
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -187,6 +201,8 @@ files:
187
201
  - examples/active_record_sample.rb
188
202
  - examples/keyring_sample.rb
189
203
  - examples/sequel_sample.rb
204
+ - gemfiles/5_2.gemfile
205
+ - gemfiles/6_0.gemfile
190
206
  - lib/attr_keyring.rb
191
207
  - lib/attr_keyring/active_record.rb
192
208
  - lib/attr_keyring/sequel.rb