crypt_keeper 0.16.0.pre → 1.1.1
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/.gitignore +1 -1
- data/.travis.yml +22 -13
- data/Appraisals +6 -16
- data/README.md +43 -21
- data/Rakefile +7 -3
- data/crypt_keeper.gemspec +9 -9
- data/gemfiles/activerecord_4_2.gemfile +8 -0
- data/gemfiles/activerecord_5_1.gemfile +8 -0
- data/lib/crypt_keeper/helper.rb +31 -21
- data/lib/crypt_keeper/log_subscriber/mysql_aes.rb +11 -11
- data/lib/crypt_keeper/log_subscriber/postgres_pgp.rb +29 -10
- data/lib/crypt_keeper/model.rb +64 -17
- data/lib/crypt_keeper/provider/aes_new.rb +1 -1
- data/lib/crypt_keeper/provider/base.rb +21 -0
- data/lib/crypt_keeper/provider/mysql_aes_new.rb +2 -2
- data/lib/crypt_keeper/provider/postgres_base.rb +28 -0
- data/lib/crypt_keeper/provider/postgres_pgp.rb +27 -8
- data/lib/crypt_keeper/provider/postgres_pgp_public_key.rb +4 -20
- data/lib/crypt_keeper/version.rb +1 -1
- data/lib/crypt_keeper.rb +11 -2
- data/spec/crypt_keeper/log_subscriber/mysql_aes_spec.rb +50 -0
- data/spec/crypt_keeper/log_subscriber/postgres_pgp_spec.rb +78 -0
- data/spec/crypt_keeper/model_spec.rb +178 -0
- data/spec/crypt_keeper/provider/aes_new_spec.rb +41 -0
- data/spec/crypt_keeper/provider/mysql_aes_new_spec.rb +50 -0
- data/spec/crypt_keeper/provider/postgres_pgp_public_key_spec.rb +67 -0
- data/spec/crypt_keeper/provider/postgres_pgp_spec.rb +87 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/support/active_record.rb +36 -26
- data/spec/support/encryptors.rb +9 -3
- data/spec/support/logging.rb +89 -0
- metadata +84 -92
- data/bin/crypt_keeper +0 -99
- data/gemfiles/activerecord_3_1.gemfile +0 -8
- data/gemfiles/activerecord_3_1.gemfile.lock +0 -109
- data/gemfiles/activerecord_3_2.gemfile +0 -8
- data/gemfiles/activerecord_3_2.gemfile.lock +0 -109
- data/gemfiles/activerecord_4_0.gemfile +0 -8
- data/gemfiles/activerecord_4_0.gemfile.lock +0 -117
- data/gemfiles/activerecord_4_1.gemfile +0 -8
- data/gemfiles/activerecord_4_1.gemfile.lock +0 -117
- data/lib/crypt_keeper/provider/aes.rb +0 -66
- data/lib/crypt_keeper/provider/mysql_aes.rb +0 -47
- data/spec/log_subscriber/postgres_pgp_spec.rb +0 -98
- data/spec/model_spec.rb +0 -95
- data/spec/provider/aes_new_spec.rb +0 -45
- data/spec/provider/aes_spec.rb +0 -67
- data/spec/provider/mysql_aes_new_spec.rb +0 -52
- data/spec/provider/mysql_aes_spec.rb +0 -35
- data/spec/provider/postgres_pgp_public_key_spec.rb +0 -70
- data/spec/provider/postgres_pgp_spec.rb +0 -68
data/spec/spec_helper.rb
CHANGED
|
@@ -11,7 +11,6 @@ ENCRYPTION_PASSWORD = "supermadsecretstring"
|
|
|
11
11
|
Dir[SPEC_ROOT.join('support/*.rb')].each{|f| require f }
|
|
12
12
|
|
|
13
13
|
RSpec.configure do |config|
|
|
14
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
15
14
|
config.run_all_when_everything_filtered = true
|
|
16
15
|
config.filter_run :focus
|
|
17
16
|
|
|
@@ -5,20 +5,6 @@ require 'logger'
|
|
|
5
5
|
::ActiveRecord::Migration.verbose = false
|
|
6
6
|
|
|
7
7
|
module CryptKeeper
|
|
8
|
-
class SensitiveDataMysql < ActiveRecord::Base
|
|
9
|
-
self.table_name = 'sensitive_data'
|
|
10
|
-
crypt_keeper :storage, encryptor: :mysql_aes_new, key: ENCRYPTION_PASSWORD,
|
|
11
|
-
salt: 'salt'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class SensitiveDataPg < ActiveRecord::Base
|
|
15
|
-
self.table_name = 'sensitive_data'
|
|
16
|
-
crypt_keeper :storage, key: 'tool', encryptor: :postgres_pgp
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
class SensitiveData < ActiveRecord::Base
|
|
20
|
-
end
|
|
21
|
-
|
|
22
8
|
module ConnectionHelpers
|
|
23
9
|
class CreateConnection
|
|
24
10
|
def initialize(driver)
|
|
@@ -61,27 +47,51 @@ module CryptKeeper
|
|
|
61
47
|
end
|
|
62
48
|
end
|
|
63
49
|
end
|
|
64
|
-
end
|
|
65
50
|
|
|
66
|
-
module
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
51
|
+
module AnonymousModels
|
|
52
|
+
def mysql_model
|
|
53
|
+
create_encrypted_model :storage, encryptor: :mysql_aes_new, key: ENCRYPTION_PASSWORD, salt: 'salt'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def postgres_model
|
|
57
|
+
create_encrypted_model :storage, key: 'tool', encryptor: :postgres_pgp
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def create_encrypted_model(*args)
|
|
61
|
+
create_model.tap { |m| m.crypt_keeper *args }
|
|
62
|
+
end
|
|
70
63
|
|
|
71
|
-
|
|
72
|
-
.
|
|
73
|
-
|
|
64
|
+
def create_model
|
|
65
|
+
Class.new(ActiveRecord::Base) do
|
|
66
|
+
def self.table_name
|
|
67
|
+
"sensitive_data"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
74
70
|
end
|
|
71
|
+
end
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
module LoggedQueries
|
|
74
|
+
# Logs the queries run inside the block, and return them.
|
|
75
|
+
def logged_queries(&block)
|
|
76
|
+
queries = []
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
subscriber = ActiveSupport::Notifications
|
|
79
|
+
.subscribe('sql.active_record') do |name, started, finished, id, payload|
|
|
80
|
+
queries << payload[:sql]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
block.call
|
|
84
|
+
|
|
85
|
+
queries
|
|
79
86
|
|
|
80
|
-
|
|
87
|
+
ensure ActiveSupport::Notifications.unsubscribe(subscriber)
|
|
88
|
+
end
|
|
81
89
|
end
|
|
90
|
+
|
|
82
91
|
end
|
|
83
92
|
|
|
84
93
|
RSpec.configure do |config|
|
|
85
94
|
config.extend CryptKeeper::ConnectionHelpers
|
|
86
|
-
config.include
|
|
95
|
+
config.include CryptKeeper::AnonymousModels
|
|
96
|
+
config.include CryptKeeper::LoggedQueries
|
|
87
97
|
end
|
data/spec/support/encryptors.rb
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
module CryptKeeper
|
|
2
2
|
module Provider
|
|
3
3
|
# A fake class that does no encryption
|
|
4
|
-
class
|
|
4
|
+
class InvalidEncryptor
|
|
5
|
+
def initialize(*args)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# A fake class that does no encryption
|
|
10
|
+
class FakeEncryptor < Base
|
|
5
11
|
def initialize(*args)
|
|
6
12
|
end
|
|
7
13
|
|
|
@@ -14,7 +20,7 @@ module CryptKeeper
|
|
|
14
20
|
end
|
|
15
21
|
end
|
|
16
22
|
|
|
17
|
-
class SearchEncryptor
|
|
23
|
+
class SearchEncryptor < Base
|
|
18
24
|
def initialize(*args)
|
|
19
25
|
end
|
|
20
26
|
|
|
@@ -34,7 +40,7 @@ module CryptKeeper
|
|
|
34
40
|
|
|
35
41
|
# This class embeds the passphrase in the beginning of the string
|
|
36
42
|
# and then reverses the 'plaintext'
|
|
37
|
-
class Encryptor
|
|
43
|
+
class Encryptor < Base
|
|
38
44
|
def initialize(options = {})
|
|
39
45
|
@passphrase = options[:passphrase]
|
|
40
46
|
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# This module is used to verify CryptKeeper log subscribers work as expected.
|
|
2
|
+
#
|
|
3
|
+
# Examples
|
|
4
|
+
#
|
|
5
|
+
# The following test will verify that the `input` query is scrubbed so it
|
|
6
|
+
# matches the `output` query.
|
|
7
|
+
#
|
|
8
|
+
# specify do
|
|
9
|
+
# should_log_scrubbed_query \
|
|
10
|
+
# input: "SELECT pgp_sym_encrypt('val', 'key')"
|
|
11
|
+
# output: "SELECT encrypt([FILTERED])"
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# The following test will verify that the `input` query was not logged at all
|
|
15
|
+
# (eg: CryptKeeper.silence_logs is enabled).
|
|
16
|
+
#
|
|
17
|
+
# specify do
|
|
18
|
+
# CryptKeeper.silence_logs = true
|
|
19
|
+
#
|
|
20
|
+
# should_not_log_query input: "SELECT pgp_sym_encrypt('val', 'key')"
|
|
21
|
+
# end
|
|
22
|
+
require "active_record/log_subscriber"
|
|
23
|
+
|
|
24
|
+
module CryptKeeper
|
|
25
|
+
module Testing
|
|
26
|
+
module Logging
|
|
27
|
+
class TestDebugLogSubscriber < ActiveRecord::LogSubscriber
|
|
28
|
+
attr_reader :debugs
|
|
29
|
+
|
|
30
|
+
def initialize
|
|
31
|
+
@debugs = []
|
|
32
|
+
super
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def debug(message)
|
|
36
|
+
@debugs << message
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Public: Verifies that the given input query was scrubbed and the
|
|
41
|
+
# output query was logged.
|
|
42
|
+
#
|
|
43
|
+
# input - Input SQL query to be scrubbed
|
|
44
|
+
# output - Expected output SQL query after scrubbing
|
|
45
|
+
#
|
|
46
|
+
# Returns nothing.
|
|
47
|
+
def should_log_scrubbed_query(input:, output:)
|
|
48
|
+
queries = sql(input)
|
|
49
|
+
|
|
50
|
+
expect(queries.join("\n")).to_not include(input)
|
|
51
|
+
expect(queries.join("\n")).to include(output)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Public: Verifies that the given input query was not logged.
|
|
55
|
+
#
|
|
56
|
+
# input - SQL query
|
|
57
|
+
#
|
|
58
|
+
# Returns nothing.
|
|
59
|
+
def should_not_log_query(input)
|
|
60
|
+
queries = sql(input)
|
|
61
|
+
|
|
62
|
+
expect(queries).to be_empty
|
|
63
|
+
|
|
64
|
+
valid_output = sql("SELECT 1").any? { |line| line.include? "SELECT 1" }
|
|
65
|
+
|
|
66
|
+
expect(valid_output).to eq(true)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
private
|
|
70
|
+
|
|
71
|
+
# Private: Triggers ActiveRecord::LogSubscriber#sql for the given query.
|
|
72
|
+
#
|
|
73
|
+
# query - SQL query
|
|
74
|
+
#
|
|
75
|
+
# Returns an Array.
|
|
76
|
+
def sql(query)
|
|
77
|
+
event = ActiveSupport::Notifications::Event.new(:sql, 1, 1, 1, { sql: query })
|
|
78
|
+
|
|
79
|
+
subscriber = TestDebugLogSubscriber.new
|
|
80
|
+
subscriber.sql event
|
|
81
|
+
subscriber.debugs
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
RSpec.configure do |c|
|
|
88
|
+
c.include CryptKeeper::Testing::Logging
|
|
89
|
+
end
|
metadata
CHANGED
|
@@ -1,276 +1,268 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: crypt_keeper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Mazzi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-06-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.1'
|
|
20
|
-
- - <
|
|
17
|
+
- - ">="
|
|
21
18
|
- !ruby/object:Gem::Version
|
|
22
19
|
version: '4.2'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '5.2'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
|
-
- -
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '3.1'
|
|
30
|
-
- - <
|
|
27
|
+
- - ">="
|
|
31
28
|
- !ruby/object:Gem::Version
|
|
32
29
|
version: '4.2'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '5.2'
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: activesupport
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- -
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '3.1'
|
|
40
|
-
- - <
|
|
37
|
+
- - ">="
|
|
41
38
|
- !ruby/object:Gem::Version
|
|
42
39
|
version: '4.2'
|
|
40
|
+
- - "<"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '5.2'
|
|
43
43
|
type: :runtime
|
|
44
44
|
prerelease: false
|
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
|
47
|
-
- -
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '3.1'
|
|
50
|
-
- - <
|
|
47
|
+
- - ">="
|
|
51
48
|
- !ruby/object:Gem::Version
|
|
52
49
|
version: '4.2'
|
|
50
|
+
- - "<"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '5.2'
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: aes
|
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
|
56
56
|
requirements:
|
|
57
|
-
- - ~>
|
|
57
|
+
- - "~>"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
59
|
version: 0.5.0
|
|
60
60
|
type: :runtime
|
|
61
61
|
prerelease: false
|
|
62
62
|
version_requirements: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
|
-
- - ~>
|
|
64
|
+
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
66
|
version: 0.5.0
|
|
67
67
|
- !ruby/object:Gem::Dependency
|
|
68
68
|
name: armor
|
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
|
-
- - ~>
|
|
71
|
+
- - "~>"
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
73
|
version: 0.0.2
|
|
74
74
|
type: :runtime
|
|
75
75
|
prerelease: false
|
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
|
77
77
|
requirements:
|
|
78
|
-
- - ~>
|
|
78
|
+
- - "~>"
|
|
79
79
|
- !ruby/object:Gem::Version
|
|
80
80
|
version: 0.0.2
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
82
|
name: rspec
|
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
|
84
84
|
requirements:
|
|
85
|
-
- - ~>
|
|
85
|
+
- - "~>"
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version:
|
|
87
|
+
version: 3.5.0
|
|
88
88
|
type: :development
|
|
89
89
|
prerelease: false
|
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
|
-
- - ~>
|
|
92
|
+
- - "~>"
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version:
|
|
94
|
+
version: 3.5.0
|
|
95
95
|
- !ruby/object:Gem::Dependency
|
|
96
96
|
name: guard
|
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
|
98
98
|
requirements:
|
|
99
|
-
- - ~>
|
|
99
|
+
- - "~>"
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
|
-
version:
|
|
101
|
+
version: 2.6.1
|
|
102
102
|
type: :development
|
|
103
103
|
prerelease: false
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements:
|
|
106
|
-
- - ~>
|
|
106
|
+
- - "~>"
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
|
-
version:
|
|
108
|
+
version: 2.6.1
|
|
109
109
|
- !ruby/object:Gem::Dependency
|
|
110
110
|
name: guard-rspec
|
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
|
112
112
|
requirements:
|
|
113
|
-
- - ~>
|
|
113
|
+
- - "~>"
|
|
114
114
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: 2.
|
|
115
|
+
version: 4.2.9
|
|
116
116
|
type: :development
|
|
117
117
|
prerelease: false
|
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
|
119
119
|
requirements:
|
|
120
|
-
- - ~>
|
|
120
|
+
- - "~>"
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
|
-
version: 2.
|
|
122
|
+
version: 4.2.9
|
|
123
123
|
- !ruby/object:Gem::Dependency
|
|
124
124
|
name: rake
|
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
|
126
126
|
requirements:
|
|
127
|
-
- - ~>
|
|
127
|
+
- - "~>"
|
|
128
128
|
- !ruby/object:Gem::Version
|
|
129
|
-
version: 10.
|
|
129
|
+
version: 10.3.1
|
|
130
130
|
type: :development
|
|
131
131
|
prerelease: false
|
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
|
133
133
|
requirements:
|
|
134
|
-
- - ~>
|
|
134
|
+
- - "~>"
|
|
135
135
|
- !ruby/object:Gem::Version
|
|
136
|
-
version: 10.
|
|
136
|
+
version: 10.3.1
|
|
137
137
|
- !ruby/object:Gem::Dependency
|
|
138
138
|
name: rb-fsevent
|
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
|
140
140
|
requirements:
|
|
141
|
-
- - ~>
|
|
141
|
+
- - "~>"
|
|
142
142
|
- !ruby/object:Gem::Version
|
|
143
143
|
version: 0.9.1
|
|
144
144
|
type: :development
|
|
145
145
|
prerelease: false
|
|
146
146
|
version_requirements: !ruby/object:Gem::Requirement
|
|
147
147
|
requirements:
|
|
148
|
-
- - ~>
|
|
148
|
+
- - "~>"
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
150
|
version: 0.9.1
|
|
151
151
|
- !ruby/object:Gem::Dependency
|
|
152
152
|
name: coveralls
|
|
153
153
|
requirement: !ruby/object:Gem::Requirement
|
|
154
154
|
requirements:
|
|
155
|
-
- -
|
|
155
|
+
- - ">="
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
157
|
version: '0'
|
|
158
158
|
type: :development
|
|
159
159
|
prerelease: false
|
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
161
161
|
requirements:
|
|
162
|
-
- -
|
|
162
|
+
- - ">="
|
|
163
163
|
- !ruby/object:Gem::Version
|
|
164
164
|
version: '0'
|
|
165
165
|
- !ruby/object:Gem::Dependency
|
|
166
166
|
name: appraisal
|
|
167
167
|
requirement: !ruby/object:Gem::Requirement
|
|
168
168
|
requirements:
|
|
169
|
-
- - ~>
|
|
169
|
+
- - "~>"
|
|
170
170
|
- !ruby/object:Gem::Version
|
|
171
|
-
version:
|
|
171
|
+
version: 2.1.0
|
|
172
172
|
type: :development
|
|
173
173
|
prerelease: false
|
|
174
174
|
version_requirements: !ruby/object:Gem::Requirement
|
|
175
175
|
requirements:
|
|
176
|
-
- - ~>
|
|
176
|
+
- - "~>"
|
|
177
177
|
- !ruby/object:Gem::Version
|
|
178
|
-
version:
|
|
178
|
+
version: 2.1.0
|
|
179
179
|
- !ruby/object:Gem::Dependency
|
|
180
180
|
name: sqlite3
|
|
181
181
|
requirement: !ruby/object:Gem::Requirement
|
|
182
182
|
requirements:
|
|
183
|
-
- -
|
|
183
|
+
- - ">="
|
|
184
184
|
- !ruby/object:Gem::Version
|
|
185
185
|
version: '0'
|
|
186
186
|
type: :development
|
|
187
187
|
prerelease: false
|
|
188
188
|
version_requirements: !ruby/object:Gem::Requirement
|
|
189
189
|
requirements:
|
|
190
|
-
- -
|
|
190
|
+
- - ">="
|
|
191
191
|
- !ruby/object:Gem::Version
|
|
192
192
|
version: '0'
|
|
193
193
|
- !ruby/object:Gem::Dependency
|
|
194
194
|
name: pg
|
|
195
195
|
requirement: !ruby/object:Gem::Requirement
|
|
196
196
|
requirements:
|
|
197
|
-
- - ~>
|
|
197
|
+
- - "~>"
|
|
198
198
|
- !ruby/object:Gem::Version
|
|
199
|
-
version: 0.
|
|
199
|
+
version: 0.18.0
|
|
200
200
|
type: :development
|
|
201
201
|
prerelease: false
|
|
202
202
|
version_requirements: !ruby/object:Gem::Requirement
|
|
203
203
|
requirements:
|
|
204
|
-
- - ~>
|
|
204
|
+
- - "~>"
|
|
205
205
|
- !ruby/object:Gem::Version
|
|
206
|
-
version: 0.
|
|
206
|
+
version: 0.18.0
|
|
207
207
|
- !ruby/object:Gem::Dependency
|
|
208
208
|
name: mysql2
|
|
209
209
|
requirement: !ruby/object:Gem::Requirement
|
|
210
210
|
requirements:
|
|
211
|
-
- - ~>
|
|
211
|
+
- - "~>"
|
|
212
212
|
- !ruby/object:Gem::Version
|
|
213
213
|
version: 0.3.11
|
|
214
214
|
type: :development
|
|
215
215
|
prerelease: false
|
|
216
216
|
version_requirements: !ruby/object:Gem::Requirement
|
|
217
217
|
requirements:
|
|
218
|
-
- - ~>
|
|
218
|
+
- - "~>"
|
|
219
219
|
- !ruby/object:Gem::Version
|
|
220
220
|
version: 0.3.11
|
|
221
|
-
description: Transparent
|
|
221
|
+
description: Transparent ActiveRecord encryption
|
|
222
222
|
email:
|
|
223
223
|
- jmazzi@gmail.com
|
|
224
|
-
executables:
|
|
225
|
-
- crypt_keeper
|
|
224
|
+
executables: []
|
|
226
225
|
extensions: []
|
|
227
226
|
extra_rdoc_files: []
|
|
228
227
|
files:
|
|
229
|
-
- .gitignore
|
|
230
|
-
- .rspec
|
|
231
|
-
- .travis.yml
|
|
228
|
+
- ".gitignore"
|
|
229
|
+
- ".rspec"
|
|
230
|
+
- ".travis.yml"
|
|
232
231
|
- Appraisals
|
|
233
232
|
- Gemfile
|
|
234
233
|
- Guardfile
|
|
235
234
|
- LICENSE
|
|
236
235
|
- README.md
|
|
237
236
|
- Rakefile
|
|
238
|
-
- bin/crypt_keeper
|
|
239
237
|
- crypt_keeper.gemspec
|
|
240
|
-
- gemfiles/
|
|
241
|
-
- gemfiles/
|
|
242
|
-
- gemfiles/activerecord_3_2.gemfile
|
|
243
|
-
- gemfiles/activerecord_3_2.gemfile.lock
|
|
244
|
-
- gemfiles/activerecord_4_0.gemfile
|
|
245
|
-
- gemfiles/activerecord_4_0.gemfile.lock
|
|
246
|
-
- gemfiles/activerecord_4_1.gemfile
|
|
247
|
-
- gemfiles/activerecord_4_1.gemfile.lock
|
|
238
|
+
- gemfiles/activerecord_4_2.gemfile
|
|
239
|
+
- gemfiles/activerecord_5_1.gemfile
|
|
248
240
|
- lib/crypt_keeper.rb
|
|
249
241
|
- lib/crypt_keeper/helper.rb
|
|
250
242
|
- lib/crypt_keeper/log_subscriber/mysql_aes.rb
|
|
251
243
|
- lib/crypt_keeper/log_subscriber/postgres_pgp.rb
|
|
252
244
|
- lib/crypt_keeper/model.rb
|
|
253
|
-
- lib/crypt_keeper/provider/aes.rb
|
|
254
245
|
- lib/crypt_keeper/provider/aes_new.rb
|
|
255
|
-
- lib/crypt_keeper/provider/
|
|
246
|
+
- lib/crypt_keeper/provider/base.rb
|
|
256
247
|
- lib/crypt_keeper/provider/mysql_aes_new.rb
|
|
248
|
+
- lib/crypt_keeper/provider/postgres_base.rb
|
|
257
249
|
- lib/crypt_keeper/provider/postgres_pgp.rb
|
|
258
250
|
- lib/crypt_keeper/provider/postgres_pgp_public_key.rb
|
|
259
251
|
- lib/crypt_keeper/version.rb
|
|
252
|
+
- spec/crypt_keeper/log_subscriber/mysql_aes_spec.rb
|
|
253
|
+
- spec/crypt_keeper/log_subscriber/postgres_pgp_spec.rb
|
|
254
|
+
- spec/crypt_keeper/model_spec.rb
|
|
255
|
+
- spec/crypt_keeper/provider/aes_new_spec.rb
|
|
256
|
+
- spec/crypt_keeper/provider/mysql_aes_new_spec.rb
|
|
257
|
+
- spec/crypt_keeper/provider/postgres_pgp_public_key_spec.rb
|
|
258
|
+
- spec/crypt_keeper/provider/postgres_pgp_spec.rb
|
|
260
259
|
- spec/default.database.yml
|
|
261
260
|
- spec/fixtures/private.asc
|
|
262
261
|
- spec/fixtures/public.asc
|
|
263
|
-
- spec/log_subscriber/postgres_pgp_spec.rb
|
|
264
|
-
- spec/model_spec.rb
|
|
265
|
-
- spec/provider/aes_new_spec.rb
|
|
266
|
-
- spec/provider/aes_spec.rb
|
|
267
|
-
- spec/provider/mysql_aes_new_spec.rb
|
|
268
|
-
- spec/provider/mysql_aes_spec.rb
|
|
269
|
-
- spec/provider/postgres_pgp_public_key_spec.rb
|
|
270
|
-
- spec/provider/postgres_pgp_spec.rb
|
|
271
262
|
- spec/spec_helper.rb
|
|
272
263
|
- spec/support/active_record.rb
|
|
273
264
|
- spec/support/encryptors.rb
|
|
265
|
+
- spec/support/logging.rb
|
|
274
266
|
homepage: http://jmazzi.github.com/crypt_keeper/
|
|
275
267
|
licenses:
|
|
276
268
|
- MIT
|
|
@@ -281,32 +273,32 @@ require_paths:
|
|
|
281
273
|
- lib
|
|
282
274
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
283
275
|
requirements:
|
|
284
|
-
- -
|
|
276
|
+
- - ">="
|
|
285
277
|
- !ruby/object:Gem::Version
|
|
286
278
|
version: '0'
|
|
287
279
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
288
280
|
requirements:
|
|
289
|
-
- -
|
|
281
|
+
- - ">="
|
|
290
282
|
- !ruby/object:Gem::Version
|
|
291
|
-
version:
|
|
283
|
+
version: '0'
|
|
292
284
|
requirements: []
|
|
293
285
|
rubyforge_project:
|
|
294
|
-
rubygems_version: 2.
|
|
286
|
+
rubygems_version: 2.6.11
|
|
295
287
|
signing_key:
|
|
296
288
|
specification_version: 4
|
|
297
|
-
summary: Transparent
|
|
289
|
+
summary: Transparent ActiveRecord encryption
|
|
298
290
|
test_files:
|
|
291
|
+
- spec/crypt_keeper/log_subscriber/mysql_aes_spec.rb
|
|
292
|
+
- spec/crypt_keeper/log_subscriber/postgres_pgp_spec.rb
|
|
293
|
+
- spec/crypt_keeper/model_spec.rb
|
|
294
|
+
- spec/crypt_keeper/provider/aes_new_spec.rb
|
|
295
|
+
- spec/crypt_keeper/provider/mysql_aes_new_spec.rb
|
|
296
|
+
- spec/crypt_keeper/provider/postgres_pgp_public_key_spec.rb
|
|
297
|
+
- spec/crypt_keeper/provider/postgres_pgp_spec.rb
|
|
299
298
|
- spec/default.database.yml
|
|
300
299
|
- spec/fixtures/private.asc
|
|
301
300
|
- spec/fixtures/public.asc
|
|
302
|
-
- spec/log_subscriber/postgres_pgp_spec.rb
|
|
303
|
-
- spec/model_spec.rb
|
|
304
|
-
- spec/provider/aes_new_spec.rb
|
|
305
|
-
- spec/provider/aes_spec.rb
|
|
306
|
-
- spec/provider/mysql_aes_new_spec.rb
|
|
307
|
-
- spec/provider/mysql_aes_spec.rb
|
|
308
|
-
- spec/provider/postgres_pgp_public_key_spec.rb
|
|
309
|
-
- spec/provider/postgres_pgp_spec.rb
|
|
310
301
|
- spec/spec_helper.rb
|
|
311
302
|
- spec/support/active_record.rb
|
|
312
303
|
- spec/support/encryptors.rb
|
|
304
|
+
- spec/support/logging.rb
|