crypt_keeper_providers 0.1.0 → 0.2.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.
data/.gitignore CHANGED
@@ -15,3 +15,5 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ spec/debug.log
19
+ spec/database.yml
data/.travis.yml CHANGED
@@ -1,5 +1,12 @@
1
1
  language: ruby
2
- script: "bundle exec rake spec"
2
+ gemfile:
3
+ - gemfiles/activerecord_3_0.gemfile
4
+ - gemfiles/activerecord_3_1.gemfile
5
+ - gemfiles/activerecord_3_2.gemfile
6
+ before_script:
7
+ - cp spec/default.database.yml spec/database.yml
8
+ - psql -c 'CREATE DATABASE crypt_keeper_providers;' -U postgres
9
+ - psql crypt_keeper_providers -c 'CREATE EXTENSION IF NOT EXISTS pgcrypto;' -U postgres
3
10
  notifications:
4
11
  email:
5
12
  recipients:
@@ -9,4 +16,6 @@ notifications:
9
16
  rvm:
10
17
  - 1.9.2
11
18
  - 1.9.3
12
- - jruby-19mode
19
+
20
+ jdk:
21
+ - openjdk7
data/Appraisals ADDED
@@ -0,0 +1,14 @@
1
+ appraise "activerecord_3_0" do
2
+ gem 'activerecord', '~> 3.0'
3
+ gem 'activesupport', '~> 3.0'
4
+ end
5
+
6
+ appraise "activerecord_3_1" do
7
+ gem 'activerecord', '~> 3.1'
8
+ gem 'activesupport', '~> 3.1'
9
+ end
10
+
11
+ appraise "activerecord_3_2" do
12
+ gem 'activerecord', '~> 3.2'
13
+ gem 'activesupport', '~> 3.2'
14
+ end
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'rspec', version: 2, fail_fast: true, all_on_start: false, all_after_pass: false do
4
+ guard 'rspec', version: 2, all_on_start: false, all_after_pass: false, cli: '--fail-fast' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://secure.travis-ci.org/jmazzi/crypt_keeper_providers.png?branch=master)](http://travis-ci.org/jmazzi/crypt_keeper_providers)
2
+
1
3
  # CryptKeeperProviders
2
4
 
3
5
  Provides encryption classes for use with [crypt_keeper](https://github.com/jmazzi/crypt_keeper)
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
3
  require 'rspec/core/rake_task'
4
+ require 'appraisal'
4
5
 
5
6
  RSpec::Core::RakeTask.new :spec
6
7
  Bundler::GemHelper.install_tasks
@@ -19,7 +19,13 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency 'guard', '~> 1.2.0'
20
20
  gem.add_development_dependency 'guard-rspec', '~> 1.1.0'
21
21
  gem.add_development_dependency 'rake', '~> 0.9.2.2'
22
- gem.add_development_dependency 'jruby-openssl', '~> 0.7.7' if RUBY_PLATFORM == 'java'
23
-
22
+ gem.add_development_dependency 'activerecord', '>= 3.0'
23
+ gem.add_development_dependency 'appraisal', '~> 0.4.1'
24
24
 
25
+ if RUBY_PLATFORM == 'java'
26
+ gem.add_development_dependency 'jruby-openssl', '~> 0.7.7'
27
+ gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
28
+ else
29
+ gem.add_development_dependency 'pg', '~> 0.14.0'
30
+ end
25
31
  end
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 3.0"
6
+ gem "activesupport", "~> 3.0"
7
+
8
+ gemspec :path=>"../"
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: /home/justin/work/ruby/crypt_keeper_providers
3
+ specs:
4
+ crypt_keeper_providers (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activemodel (3.2.7)
10
+ activesupport (= 3.2.7)
11
+ builder (~> 3.0.0)
12
+ activerecord (3.2.7)
13
+ activemodel (= 3.2.7)
14
+ activesupport (= 3.2.7)
15
+ arel (~> 3.0.2)
16
+ tzinfo (~> 0.3.29)
17
+ activesupport (3.2.7)
18
+ i18n (~> 0.6)
19
+ multi_json (~> 1.0)
20
+ appraisal (0.4.1)
21
+ bundler
22
+ rake
23
+ arel (3.0.2)
24
+ builder (3.0.0)
25
+ diff-lcs (1.1.3)
26
+ ffi (1.1.1)
27
+ guard (1.2.3)
28
+ listen (>= 0.4.2)
29
+ thor (>= 0.14.6)
30
+ guard-rspec (1.1.0)
31
+ guard (>= 1.1)
32
+ i18n (0.6.0)
33
+ listen (0.4.7)
34
+ rb-fchange (~> 0.0.5)
35
+ rb-fsevent (~> 0.9.1)
36
+ rb-inotify (~> 0.8.8)
37
+ multi_json (1.3.6)
38
+ pg (0.14.0)
39
+ rake (0.9.2.2)
40
+ rb-fchange (0.0.5)
41
+ ffi
42
+ rb-fsevent (0.9.1)
43
+ rb-inotify (0.8.8)
44
+ ffi (>= 0.5.0)
45
+ rspec (2.10.0)
46
+ rspec-core (~> 2.10.0)
47
+ rspec-expectations (~> 2.10.0)
48
+ rspec-mocks (~> 2.10.0)
49
+ rspec-core (2.10.1)
50
+ rspec-expectations (2.10.0)
51
+ diff-lcs (~> 1.1.3)
52
+ rspec-mocks (2.10.1)
53
+ thor (0.15.4)
54
+ tzinfo (0.3.33)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ activerecord (~> 3.0)
61
+ activesupport (~> 3.0)
62
+ appraisal (~> 0.4.1)
63
+ crypt_keeper_providers!
64
+ guard (~> 1.2.0)
65
+ guard-rspec (~> 1.1.0)
66
+ pg (~> 0.14.0)
67
+ rake (~> 0.9.2.2)
68
+ rspec (~> 2.10.0)
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 3.1"
6
+ gem "activesupport", "~> 3.1"
7
+
8
+ gemspec :path=>"../"
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: /home/justin/work/ruby/crypt_keeper_providers
3
+ specs:
4
+ crypt_keeper_providers (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activemodel (3.2.7)
10
+ activesupport (= 3.2.7)
11
+ builder (~> 3.0.0)
12
+ activerecord (3.2.7)
13
+ activemodel (= 3.2.7)
14
+ activesupport (= 3.2.7)
15
+ arel (~> 3.0.2)
16
+ tzinfo (~> 0.3.29)
17
+ activesupport (3.2.7)
18
+ i18n (~> 0.6)
19
+ multi_json (~> 1.0)
20
+ appraisal (0.4.1)
21
+ bundler
22
+ rake
23
+ arel (3.0.2)
24
+ builder (3.0.0)
25
+ diff-lcs (1.1.3)
26
+ ffi (1.1.1)
27
+ guard (1.2.3)
28
+ listen (>= 0.4.2)
29
+ thor (>= 0.14.6)
30
+ guard-rspec (1.1.0)
31
+ guard (>= 1.1)
32
+ i18n (0.6.0)
33
+ listen (0.4.7)
34
+ rb-fchange (~> 0.0.5)
35
+ rb-fsevent (~> 0.9.1)
36
+ rb-inotify (~> 0.8.8)
37
+ multi_json (1.3.6)
38
+ pg (0.14.0)
39
+ rake (0.9.2.2)
40
+ rb-fchange (0.0.5)
41
+ ffi
42
+ rb-fsevent (0.9.1)
43
+ rb-inotify (0.8.8)
44
+ ffi (>= 0.5.0)
45
+ rspec (2.10.0)
46
+ rspec-core (~> 2.10.0)
47
+ rspec-expectations (~> 2.10.0)
48
+ rspec-mocks (~> 2.10.0)
49
+ rspec-core (2.10.1)
50
+ rspec-expectations (2.10.0)
51
+ diff-lcs (~> 1.1.3)
52
+ rspec-mocks (2.10.1)
53
+ thor (0.15.4)
54
+ tzinfo (0.3.33)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ activerecord (~> 3.1)
61
+ activesupport (~> 3.1)
62
+ appraisal (~> 0.4.1)
63
+ crypt_keeper_providers!
64
+ guard (~> 1.2.0)
65
+ guard-rspec (~> 1.1.0)
66
+ pg (~> 0.14.0)
67
+ rake (~> 0.9.2.2)
68
+ rspec (~> 2.10.0)
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 3.2"
6
+ gem "activesupport", "~> 3.2"
7
+
8
+ gemspec :path=>"../"
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: /home/justin/work/ruby/crypt_keeper_providers
3
+ specs:
4
+ crypt_keeper_providers (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activemodel (3.2.7)
10
+ activesupport (= 3.2.7)
11
+ builder (~> 3.0.0)
12
+ activerecord (3.2.7)
13
+ activemodel (= 3.2.7)
14
+ activesupport (= 3.2.7)
15
+ arel (~> 3.0.2)
16
+ tzinfo (~> 0.3.29)
17
+ activesupport (3.2.7)
18
+ i18n (~> 0.6)
19
+ multi_json (~> 1.0)
20
+ appraisal (0.4.1)
21
+ bundler
22
+ rake
23
+ arel (3.0.2)
24
+ builder (3.0.0)
25
+ diff-lcs (1.1.3)
26
+ ffi (1.1.1)
27
+ guard (1.2.3)
28
+ listen (>= 0.4.2)
29
+ thor (>= 0.14.6)
30
+ guard-rspec (1.1.0)
31
+ guard (>= 1.1)
32
+ i18n (0.6.0)
33
+ listen (0.4.7)
34
+ rb-fchange (~> 0.0.5)
35
+ rb-fsevent (~> 0.9.1)
36
+ rb-inotify (~> 0.8.8)
37
+ multi_json (1.3.6)
38
+ pg (0.14.0)
39
+ rake (0.9.2.2)
40
+ rb-fchange (0.0.5)
41
+ ffi
42
+ rb-fsevent (0.9.1)
43
+ rb-inotify (0.8.8)
44
+ ffi (>= 0.5.0)
45
+ rspec (2.10.0)
46
+ rspec-core (~> 2.10.0)
47
+ rspec-expectations (~> 2.10.0)
48
+ rspec-mocks (~> 2.10.0)
49
+ rspec-core (2.10.1)
50
+ rspec-expectations (2.10.0)
51
+ diff-lcs (~> 1.1.3)
52
+ rspec-mocks (2.10.1)
53
+ thor (0.15.4)
54
+ tzinfo (0.3.33)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ activerecord (~> 3.2)
61
+ activesupport (~> 3.2)
62
+ appraisal (~> 0.4.1)
63
+ crypt_keeper_providers!
64
+ guard (~> 1.2.0)
65
+ guard-rspec (~> 1.1.0)
66
+ pg (~> 0.14.0)
67
+ rake (~> 0.9.2.2)
68
+ rspec (~> 2.10.0)
@@ -1,4 +1,4 @@
1
- require 'digest/sha1'
1
+ require 'digest/sha2'
2
2
  require 'openssl'
3
3
  require 'base64'
4
4
 
@@ -6,39 +6,45 @@ module CryptKeeperProviders
6
6
  class Aes
7
7
  SEPARATOR = ":crypt_keeper:"
8
8
 
9
- attr_accessor :key, :aes
9
+ # Public: The encryption key
10
+ attr_accessor :key
11
+
12
+ # Public: An instance of OpenSSL::Cipher::Cipher
13
+ attr_accessor :aes
10
14
 
11
15
  # Public: Initializes the class
12
16
  #
13
- # options - A hash of options. :passphrase is required
17
+ # options - A hash of options. :key is required
14
18
  def initialize(options = {})
15
- @key = options[:passphrase]
16
19
  @aes = ::OpenSSL::Cipher::Cipher.new("AES-256-CBC")
17
20
  @aes.padding = 1
18
- @key = Digest::SHA256.digest(key)
21
+
22
+ key = options.fetch(:key) do
23
+ raise ArgumentError, "Missing :key"
24
+ end
25
+
26
+ @key = Digest::SHA256.digest(key)
19
27
  end
20
28
 
21
29
  # Public: Encrypt a string
22
30
  #
23
31
  # Returns a string
24
32
  def encrypt(value)
25
- value = value.to_s
26
33
  aes.encrypt
27
34
  aes.key = key
28
- iv = rand.to_s
29
- aes.iv = iv
30
- Base64::encode64("#{iv}#{SEPARATOR}#{aes.update(value) + aes.final}")
35
+ iv = rand.to_s
36
+ aes.iv = iv
37
+ Base64::encode64("#{iv}#{SEPARATOR}#{aes.update(value.to_s) + aes.final}")
31
38
  end
32
39
 
33
40
  # Public: Decrypt a string
34
41
  #
35
42
  # Returns a string
36
43
  def decrypt(value)
37
- value = Base64::decode64(value.to_s)
38
- iv, value = value.split(SEPARATOR)
44
+ iv, value = Base64::decode64(value.to_s).split(SEPARATOR)
39
45
  aes.decrypt
40
46
  aes.key = key
41
- aes.iv = iv
47
+ aes.iv = iv
42
48
  aes.update(value) + aes.final
43
49
  end
44
50
  end
@@ -0,0 +1,27 @@
1
+ require 'active_support/concern'
2
+ require 'active_support/lazy_load_hooks'
3
+
4
+ module CryptKeeperProviders
5
+ module PostgresPgpLogSubscriber
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ alias_method_chain :sql, :filter
10
+ end
11
+
12
+ # Public: Prevents sensitive data from being logged
13
+ def sql_with_filter(event)
14
+ filter = /(pgp_sym_(encrypt|decrypt))\(((.|\n)*?)\)/i
15
+
16
+ event.payload[:sql] = event.payload[:sql].gsub(filter) do |_|
17
+ "#{$1}([FILTERED])"
18
+ end
19
+
20
+ sql_without_filter(event)
21
+ end
22
+ end
23
+ end
24
+
25
+ ActiveSupport.on_load :active_record do
26
+ ActiveRecord::LogSubscriber.send :include, CryptKeeperProviders::PostgresPgpLogSubscriber
27
+ end
@@ -0,0 +1,38 @@
1
+ require 'crypt_keeper_providers/postgres_pgp/log_subscriber'
2
+
3
+ module CryptKeeperProviders
4
+ class PostgresPgp
5
+ attr_accessor :key
6
+
7
+ # Public: Initializes the encryptor
8
+ #
9
+ # options - A hash, :key is required
10
+ def initialize(options = {})
11
+ @key = options.fetch(:key) do
12
+ raise ArgumentError, "Missing :key"
13
+ end
14
+ end
15
+
16
+ # Public: Encrypts a string
17
+ #
18
+ # Returns an encrypted string
19
+ def encrypt(value)
20
+ escape_and_execute_sql(["SELECT pgp_sym_encrypt(?, ?)", value, key])['pgp_sym_encrypt']
21
+ end
22
+
23
+ # Public: Decrypts a string
24
+ #
25
+ # Returns a plaintext string
26
+ def decrypt(value)
27
+ escape_and_execute_sql(["SELECT pgp_sym_decrypt(?, ?)", value, key])['pgp_sym_decrypt']
28
+ end
29
+
30
+ private
31
+
32
+ # Private: Sanitize an sql query and then execute it
33
+ def escape_and_execute_sql(query)
34
+ query = ::ActiveRecord::Base.send :sanitize_sql_array, query
35
+ ::ActiveRecord::Base.connection.execute(query).first
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module CryptKeeperProviders
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'crypt_keeper_providers/version'
2
2
  require 'crypt_keeper_providers/aes'
3
+ require 'crypt_keeper_providers/postgres_pgp'
3
4
 
4
5
  module CryptKeeperProviders
5
6
  end
data/spec/aes_spec.rb CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  module CryptKeeperProviders
4
4
  describe Aes do
5
- subject { Aes.new(passphrase: 'cake') }
5
+ subject { Aes.new(key: 'cake') }
6
6
 
7
7
  describe "#initialize" do
8
8
  let(:hexed_key) do
@@ -12,6 +12,10 @@ module CryptKeeperProviders
12
12
  it "should extract the key and digest it" do
13
13
  subject.key.should == hexed_key
14
14
  end
15
+
16
+ it "should raise an exception with a missing key" do
17
+ expect { Aes.new }.to raise_error(ArgumentError, "Missing :key")
18
+ end
15
19
  end
16
20
 
17
21
  describe "#encrypt" do
@@ -0,0 +1,8 @@
1
+ test:
2
+ adapter: postgresql
3
+ encoding: utf8
4
+ reconnect: false
5
+ database: crypt_keeper_providers
6
+ pool: 5
7
+ username: postgres
8
+ password:
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ module CryptKeeperProviders
4
+ describe PostgresPgpLogSubscriber do
5
+ use_postgres
6
+
7
+ subject { ::ActiveRecord::LogSubscriber.new }
8
+
9
+ let(:input_query) do
10
+ "SELECT pgp_sym_encrypt('encrypt_value', 'encrypt_key'), pgp_sym_decrypt('decrypt_value', 'decrypt_key') FROM DUAL;"
11
+ end
12
+
13
+ let(:output_query) do
14
+ "SELECT pgp_sym_encrypt([FILTERED]), pgp_sym_decrypt([FILTERED]) FROM DUAL;"
15
+ end
16
+
17
+ it "filters pgp functions" do
18
+ subject.should_receive(:sql_without_filter).with do |event|
19
+ event.payload[:sql].should == output_query
20
+ end
21
+
22
+ subject.sql(ActiveSupport::Notifications::Event.new(:sql, 1, 1, 1, { sql: output_query }))
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ module CryptKeeperProviders
4
+ describe PostgresPgp do
5
+ use_postgres
6
+
7
+ let(:cipher_text) { '\\xc30d0407030283b15f71b6a7d0296cd23501bd2c8fe3c7a56005ff4619527c4291509a78c77a6758cddd2a14acbde589fa10b3e0686865182d3beadaf237b9f928e7ba1810b8' }
8
+ let(:plain_text) { 'test' }
9
+
10
+ subject { PostgresPgp.new key: 'candy' }
11
+
12
+ its(:key) { should == 'candy' }
13
+
14
+ describe "#initialize" do
15
+ it "should raise an exception with a missing key" do
16
+ expect { PostgresPgp.new }.to raise_error(ArgumentError, "Missing :key")
17
+ end
18
+ end
19
+
20
+ describe "#encrypt" do
21
+ it "should encrypt the string" do
22
+ subject.encrypt(plain_text).should_not == plain_text
23
+ subject.encrypt(plain_text).should_not be_empty
24
+ end
25
+ end
26
+
27
+ describe "#decrypt" do
28
+ it "should decrypt the string" do
29
+ subject.decrypt(cipher_text).should == plain_text
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,22 @@
1
+ require 'active_record'
2
+ require 'logger'
3
+ require 'yaml'
4
+
5
+ module CryptKeeperProviders
6
+ module ActiveRecord
7
+ # extend self
8
+
9
+ def use_postgres
10
+ before :all do
11
+ config = YAML.load_file SPEC_ROOT.join('database.yml')
12
+ ::ActiveRecord::Base.establish_connection(config['test'])
13
+ ::ActiveRecord::Base.logger = Logger.new SPEC_ROOT.join('debug.log').to_s
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+
20
+ RSpec.configure do |config|
21
+ config.extend CryptKeeperProviders::ActiveRecord
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crypt_keeper_providers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-27 00:00:00.000000000 Z
12
+ date: 2012-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -75,6 +75,54 @@ dependencies:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.9.2.2
78
+ - !ruby/object:Gem::Dependency
79
+ name: activerecord
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '3.0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: appraisal
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.4.1
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.4.1
110
+ - !ruby/object:Gem::Dependency
111
+ name: pg
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.14.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.14.0
78
126
  description: Encryption providers for crypt_keeper
79
127
  email:
80
128
  - jmazzi@gmail.com
@@ -85,17 +133,30 @@ files:
85
133
  - .gitignore
86
134
  - .rspec
87
135
  - .travis.yml
136
+ - Appraisals
88
137
  - Gemfile
89
138
  - Guardfile
90
139
  - LICENSE
91
140
  - README.md
92
141
  - Rakefile
93
142
  - crypt_keeper_providers.gemspec
143
+ - gemfiles/activerecord_3_0.gemfile
144
+ - gemfiles/activerecord_3_0.gemfile.lock
145
+ - gemfiles/activerecord_3_1.gemfile
146
+ - gemfiles/activerecord_3_1.gemfile.lock
147
+ - gemfiles/activerecord_3_2.gemfile
148
+ - gemfiles/activerecord_3_2.gemfile.lock
94
149
  - lib/crypt_keeper_providers.rb
95
150
  - lib/crypt_keeper_providers/aes.rb
151
+ - lib/crypt_keeper_providers/postgres_pgp.rb
152
+ - lib/crypt_keeper_providers/postgres_pgp/log_subscriber.rb
96
153
  - lib/crypt_keeper_providers/version.rb
97
154
  - spec/aes_spec.rb
155
+ - spec/default.database.yml
156
+ - spec/postgres_sql_log_subscriber_spec.rb
157
+ - spec/postgres_sql_spec.rb
98
158
  - spec/spec_helper.rb
159
+ - spec/support/active_record.rb
99
160
  homepage: ''
100
161
  licenses: []
101
162
  post_install_message:
@@ -110,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
171
  version: '0'
111
172
  segments:
112
173
  - 0
113
- hash: 2013321014928306756
174
+ hash: 533015026195049068
114
175
  required_rubygems_version: !ruby/object:Gem::Requirement
115
176
  none: false
116
177
  requirements:
@@ -119,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
180
  version: '0'
120
181
  segments:
121
182
  - 0
122
- hash: 2013321014928306756
183
+ hash: 533015026195049068
123
184
  requirements: []
124
185
  rubyforge_project:
125
186
  rubygems_version: 1.8.23
@@ -128,4 +189,8 @@ specification_version: 3
128
189
  summary: Encryption providers for crypt_keeper
129
190
  test_files:
130
191
  - spec/aes_spec.rb
192
+ - spec/default.database.yml
193
+ - spec/postgres_sql_log_subscriber_spec.rb
194
+ - spec/postgres_sql_spec.rb
131
195
  - spec/spec_helper.rb
196
+ - spec/support/active_record.rb