attr_keyring 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
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