encrypted-attributes 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,26 @@
1
1
  [![Build Status](https://secure.travis-ci.org/clowder/encrypted-attributes.png)](http://travis-ci.org/clowder/encrypted-attributes)
2
2
 
3
- # EncryptedColumn
3
+ # EncryptedAttributes
4
+
5
+ ## Usage
6
+
7
+ ### Rails 2.3.x
8
+
9
+ Create an initializer that will configure the EncryptedAttributes module with your Key and IV.
10
+
11
+ ```
12
+ EncryptedAttributes.setup(:key => 'YOUR RANDOM KEY', :iv => 'YOUR RANDOM INITIALIZATION VECTOR')
13
+ ```
14
+
15
+ Encrypt your columns like.
16
+
17
+ ```ruby
18
+ class Deployment < ActiveRecord::Base
19
+ serialize :secret_config, Hash
20
+ encrypt :secret_config
21
+ end
22
+ ```
23
+
4
24
 
5
25
  ## Contributing
6
26
 
@@ -0,0 +1,42 @@
1
+ module EncryptedAttributes
2
+ module AR23
3
+ def encrypted_attributes
4
+ @encrypted_attributes
5
+ end
6
+
7
+ def encrypt(column_name)
8
+ @encrypted_attributes = [] unless defined? @encrypted_columns
9
+ @encrypted_attributes << column_name.to_s
10
+ end
11
+
12
+ def define_attribute_methods(*args)
13
+ self.encrypted_attributes.each do |column|
14
+ define_read_method("read_encrypted_#{column}", column, columns_hash[column])
15
+ evaluate_attribute_method "write_encrypted_#{column}=", "def write_encrypted_#{column}=(new_value);write_attribute('#{column}', new_value);end"
16
+
17
+ define_method(column) do
18
+ encrypted_value = self.send("read_encrypted_#{column}")
19
+
20
+ if encrypted_value
21
+ object_from_yaml(EncryptedAttributes.decrypt(encrypted_value)).freeze
22
+ else
23
+ encrypted_value
24
+ end
25
+ end
26
+
27
+ define_method("#{column}=") do |new_value|
28
+ if new_value
29
+ if self.class.serialized_attributes.has_key?(column)
30
+ new_value = new_value.to_yaml
31
+ end
32
+ new_value = EncryptedAttributes.encrypt(new_value)
33
+ end
34
+
35
+ self.send("write_encrypted_#{column}=", new_value)
36
+ end
37
+ end
38
+
39
+ super
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,35 @@
1
+ module EncryptedAttributes
2
+ module AR32
3
+ def encrypted_attributes
4
+ @encrypted_attributes
5
+ end
6
+
7
+ def encrypt(column_name)
8
+ @encrypted_attributes = [] unless defined? @encrypted_columns
9
+ @encrypted_attributes << column_name.to_s
10
+ end
11
+
12
+ def define_attribute_methods(*args)
13
+ self.encrypted_attributes.each do |column|
14
+ define_method(column) do
15
+ coder = self.class.serialized_attributes[column]
16
+ value = EncryptedAttributes.decrypt(read_attribute(column))
17
+
18
+ value = coder ? coder.load(value) : value
19
+ value.freeze
20
+ end
21
+
22
+ define_method("#{ column }=".to_sym) do |value|
23
+ coder = self.class.serialized_attributes[column]
24
+
25
+ value = coder ? coder.dump(value) : value
26
+ encrypted_data = EncryptedAttributes.encrypt(value)
27
+
28
+ write_attribute(column, encrypted_data)
29
+ end
30
+ end
31
+
32
+ super
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ module EncryptedAttributes
2
+ class Railtie < Rails::Railtie
3
+ config.encrypted_attributes = ActiveSupport::OrderedOptions.new
4
+ config.encrypted_attributes.key = nil
5
+ config.encrypted_attributes.iv = nil
6
+
7
+ initializer :encrypted_attributes do |app|
8
+ EncryptedAttributes.setup(:key => app.config.encrypted_attributes.key, :iv => app.config.encrypted_attributes.iv)
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: encrypted-attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -68,6 +68,9 @@ extensions: []
68
68
  extra_rdoc_files: []
69
69
  files:
70
70
  - lib/encrypted-attributes.rb
71
+ - lib/encrypted_attributes/ar_23.rb
72
+ - lib/encrypted_attributes/ar_32.rb
73
+ - lib/encrypted_attributes/railtie.rb
71
74
  - lib/encrypted_attributes.rb
72
75
  - lib/simple_aes.rb
73
76
  - spec/encrypted_attributes_spec.rb