kms_encrypted 1.4.0 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 203e6f831854468ec07bc0aac59f0b51c68b9e767a20b5f94bb28e5437b93212
4
- data.tar.gz: 226b05f2da94c4d6ddd5c67e92e7114f0f6e6b8c2cf9c0a67d9be519e3b987aa
3
+ metadata.gz: c5e9d54c273ae3e76a7a1f7a531b72b06caf5e00379f38e0d163e26199a06e88
4
+ data.tar.gz: d52dfddfa8a212558a03a7471256f6eb9548f9d4f38c9cad94f4a3f9b83c8273
5
5
  SHA512:
6
- metadata.gz: ce6cd1b82a6ed5a961b88e87fec1115fccd6e569db32de9e84ec83a9f42c1eb948ac2796a99cc931be380cce25fe65868bc20caf4685a2c388017330060ee85c
7
- data.tar.gz: 4c9909081f55fba296c6d183e3d871d50979b05594ae8a7519ffd8d6c9d58121a3cdf3d6f72d13623f2ce996698f91dd10acda116962d48e64e76dff90ed4d3e
6
+ metadata.gz: 44ed5968f5922182764a922e8c915850e720b9909959ff0194c0f0451bb544986ea278b21380da539b30b203d8779304e01c8d4b04f407e67e623999c8456b1e
7
+ data.tar.gz: 4cf8569a4bae315bf269ae16dfb145cb5bf90f8680eeab7b886be9e486281e09b6426529d7254da93e0adb0060eee4be9f8674bc15ba0730105d20c4c1cc7423
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 1.5.0 (2023-04-09)
2
+
3
+ - Added support for attr_encrypted 4
4
+ - Dropped support for Ruby < 3 and Rails < 6
5
+
1
6
  ## 1.4.0 (2022-01-10)
2
7
 
3
8
  - Dropped support for Ruby < 2.6 and Rails < 5.2
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2017-2022 Andrew Kane
1
+ Copyright (c) 2017-2023 Andrew Kane
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -29,7 +29,7 @@ To decrypt an attribute, we first decrypt the data key with the KMS. Once we hav
29
29
  Add this line to your application’s Gemfile:
30
30
 
31
31
  ```ruby
32
- gem 'kms_encrypted'
32
+ gem "kms_encrypted"
33
33
  ```
34
34
 
35
35
  And follow the instructions for your key management service:
@@ -43,7 +43,7 @@ And follow the instructions for your key management service:
43
43
  Add this line to your application’s Gemfile:
44
44
 
45
45
  ```ruby
46
- gem 'aws-sdk-kms'
46
+ gem "aws-sdk-kms"
47
47
  ```
48
48
 
49
49
  Create an [Amazon Web Services](https://aws.amazon.com/) account if you don’t have one. KMS works great whether or not you run your infrastructure on AWS.
@@ -67,7 +67,7 @@ KMS_KEY_ID=alias/my-alias
67
67
  Add this line to your application’s Gemfile:
68
68
 
69
69
  ```ruby
70
- gem 'google-cloud-kms'
70
+ gem "google-cloud-kms"
71
71
  ```
72
72
 
73
73
  Create a [Google Cloud Platform](https://cloud.google.com/) account if you don’t have one. KMS works great whether or not you run your infrastructure on GCP.
@@ -83,7 +83,7 @@ KMS_KEY_ID=projects/my-project/locations/global/keyRings/my-key-ring/cryptoKeys/
83
83
  Add this line to your application’s Gemfile:
84
84
 
85
85
  ```ruby
86
- gem 'vault'
86
+ gem "vault"
87
87
  ```
88
88
 
89
89
  Enable the [transit](https://www.vaultproject.io/docs/secrets/transit/index.html) secrets engine
@@ -121,7 +121,7 @@ class User < ApplicationRecord
121
121
  has_kms_key
122
122
 
123
123
  # Lockbox fields
124
- encrypts :email, key: :kms_key
124
+ has_encrypted :email, key: :kms_key
125
125
 
126
126
  # Lockbox files
127
127
  encrypts_attached :license, key: :kms_key
@@ -429,8 +429,8 @@ class User < ApplicationRecord
429
429
  has_kms_key name: :phone, key_id: "..."
430
430
 
431
431
  # Lockbox
432
- encrypts :email, key: :kms_key
433
- encrypts :phone, key: :kms_key_phone
432
+ has_encrypted :email, key: :kms_key
433
+ has_encrypted :phone, key: :kms_key_phone
434
434
 
435
435
  # attr_encrypted
436
436
  attr_encrypted :email, key: :kms_key
@@ -28,7 +28,7 @@ module KmsEncrypted
28
28
  options
29
29
  )
30
30
  rescue ::Vault::HTTPClientError => e
31
- decryption_failed! if e.message.include?("unable to decrypt")
31
+ decryption_failed! if e.message.include?("unable to decrypt") || e.message.include?("message authentication failed")
32
32
  raise e
33
33
  rescue ::Vault::HTTPServerError => e
34
34
  decryption_failed! if e.message.include?("message authentication failed")
@@ -122,8 +122,14 @@ module KmsEncrypted
122
122
  plaintext_attributes = {}
123
123
 
124
124
  # attr_encrypted
125
- if self.class.respond_to?(:encrypted_attributes)
126
- self.class.encrypted_attributes.to_a.each do |key, v|
125
+ encrypted_attributes_method =
126
+ if defined?(AttrEncrypted::Version::MAJOR) && AttrEncrypted::Version::MAJOR >= 4
127
+ :attr_encrypted_encrypted_attributes
128
+ else
129
+ :encrypted_attributes
130
+ end
131
+ if self.class.respond_to?(encrypted_attributes_method)
132
+ self.class.send(encrypted_attributes_method).to_a.each do |key, v|
127
133
  if v[:key] == key_method.to_sym
128
134
  plaintext_attributes[key] = send(key)
129
135
  elsif v[:key].respond_to?(:call)
@@ -1,3 +1,3 @@
1
1
  module KmsEncrypted
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  end
data/lib/kms_encrypted.rb CHANGED
@@ -5,19 +5,19 @@ require "json"
5
5
  require "securerandom"
6
6
 
7
7
  # modules
8
- require "kms_encrypted/box"
9
- require "kms_encrypted/database"
10
- require "kms_encrypted/log_subscriber"
11
- require "kms_encrypted/model"
12
- require "kms_encrypted/version"
8
+ require_relative "kms_encrypted/box"
9
+ require_relative "kms_encrypted/database"
10
+ require_relative "kms_encrypted/log_subscriber"
11
+ require_relative "kms_encrypted/model"
12
+ require_relative "kms_encrypted/version"
13
13
 
14
14
  # clients
15
- require "kms_encrypted/client"
16
- require "kms_encrypted/clients/base"
17
- require "kms_encrypted/clients/aws"
18
- require "kms_encrypted/clients/google"
19
- require "kms_encrypted/clients/test"
20
- require "kms_encrypted/clients/vault"
15
+ require_relative "kms_encrypted/client"
16
+ require_relative "kms_encrypted/clients/base"
17
+ require_relative "kms_encrypted/clients/aws"
18
+ require_relative "kms_encrypted/clients/google"
19
+ require_relative "kms_encrypted/clients/test"
20
+ require_relative "kms_encrypted/clients/vault"
21
21
 
22
22
  module KmsEncrypted
23
23
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kms_encrypted
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-11 00:00:00.000000000 Z
11
+ date: 2023-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '6'
27
27
  description:
28
28
  email: andrew@ankane.org
29
29
  executables: []
@@ -57,14 +57,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '2.6'
60
+ version: '3'
61
61
  required_rubygems_version: !ruby/object:Gem::Requirement
62
62
  requirements:
63
63
  - - ">="
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements: []
67
- rubygems_version: 3.3.3
67
+ rubygems_version: 3.4.10
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Simple, secure key management for Lockbox and attr_encrypted