reencryptor 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 68209d2a879dfaa7698a60b881e22f60e5920fac
4
+ data.tar.gz: 7286ed8b1737fd899c5b091ba6251d0765533ea6
5
+ SHA512:
6
+ metadata.gz: 6acf64ad9cdc407dd19816ff6bcd10966adeacb3966e810447d76afe035271f59f22cc4c5dc1fbcaabafe4eb914db3b491dcff91b381fce24c301dfd8aedc2e5
7
+ data.tar.gz: 1b30618bd3d0fe9519aa98084f2ba19d555debfb06ed96f5524434def7089b4835bdba38bea9b839b0e0176fa09c7d964f06898505f8f70b2a4c681124881ac4
@@ -0,0 +1,5 @@
1
+ module Reencryptor
2
+
3
+ end
4
+
5
+ require 'reencryptor/global_to_per_attribute_iv_salt/migrator.rb'
@@ -0,0 +1,40 @@
1
+ require 'active_support/inflector'
2
+
3
+ class Reencryptor::GlobalToPerAttributeIVSalt::GlobalToPerAttributeEncryption
4
+ attr_accessor :classes
5
+
6
+ def initialize(classes_hash: {})
7
+ self.classes = classes_hash
8
+ end
9
+
10
+ def update_class_fields(klass_name, fields)
11
+ klass = klass_name.camelize.constantize
12
+ puts "Starting #{klass.to_s}"
13
+ ActiveRecord::Base.transaction do
14
+ klass.all.each do | instance |
15
+ fields.each do |f|
16
+ self.update_encrypted_field(instance, f)
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ def update_encrypted_field(instance, field)
23
+ instance.send("#{field}=", instance.send("#{field}_old"))
24
+ instance.update_column("encrypted_#{field}", instance.send("encrypted_#{field}"))
25
+ instance.update_column("encrypted_#{field}_iv", instance.send("encrypted_#{field}_iv"))
26
+ instance.update_column("encrypted_#{field}_salt", instance.send("encrypted_#{field}_salt"))
27
+ end
28
+
29
+ def update_encrypted_object(instance)
30
+ fields = self.classes[instance.class.name.to_sym]
31
+ fields.each {|f| self.update_encrypted_field(instance, f)}
32
+ end
33
+
34
+ def perform
35
+ self.classes.each do |klass, fields|
36
+ load "#{klass.to_s.underscore}.rb"
37
+ self.update_class_fields(klass.to_s, fields)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ require 'active_support/inflector'
2
+
3
+ module Reencryptor::GlobalToPerAttributeIVSalt
4
+ class Migrator
5
+ attr_accessor :classes
6
+
7
+ def initialize (classes_hash: nil)
8
+ self.classes = classes_hash
9
+ end
10
+
11
+ def generate
12
+ puts "Add the following lines to a new migration:"
13
+ self.classes.each do |klass, fields|
14
+ klass_name = klass.to_s.underscore.pluralize.to_sym
15
+ fields.each do |f|
16
+ field = f.to_s.underscore.to_sym
17
+ field_old = fieldname_old(field)
18
+ puts "rename_column :#{klass_name}, :#{fieldname(field)}, :#{field_old}"
19
+ puts "add_column :#{klass_name}, :#{fieldname(field)}, :string"
20
+ puts "add_column :#{klass_name}, :#{fieldname_iv(field)}, :string"
21
+ puts "add_column :#{klass_name}, :#{fieldname_salt(field)}, :string"
22
+ end
23
+ end
24
+ puts "#----- End of Migration -----#"
25
+ end
26
+
27
+ def fieldname(field)
28
+ "encrypted_#{field.to_s.downcase}".to_sym
29
+ end
30
+
31
+ def fieldname_old(field)
32
+ "encrypted_#{field.to_s.downcase}_old".to_sym
33
+ end
34
+
35
+ def fieldname_iv(field)
36
+ "encrypted_#{field.to_s.downcase}_iv".to_sym
37
+ end
38
+
39
+ def fieldname_salt(field)
40
+ "encrypted_#{field.to_s.downcase}_salt".to_sym
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reencryptor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nathaniel Rowe
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.5
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.2.5
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 4.2.5
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.2.5
33
+ description: Reencrytpor for legacy schemes
34
+ email: nrowegt@gmail.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - lib/reencryptor.rb
40
+ - lib/reencryptor/global_to_per_attribute_iv_salt/global_to_per_attribute_encryption.rb
41
+ - lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb
42
+ homepage: http://rubygems.org/gems/reencryptor
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.5.1
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Reencryption schemes to transition from legacy encryptions
66
+ test_files: []