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.
checksums.yaml
ADDED
@@ -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
|
data/lib/reencryptor.rb
ADDED
@@ -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: []
|