encrypt_env 1.1.6 → 1.1.7
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/lib/encrypt_env.rb +26 -28
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e450fae62c0ff654e9034c4b09d4f7775285c7f446bf6af24d8c99f124841e3
|
4
|
+
data.tar.gz: e83e7f84b9821f7a1790f4320ae12f3296312f3716daa57b90646f904afd787c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fdbcb0834f9f34edcbbd547fa28cafe680a655e69d4320428c3bba80bf2187989cc9a0b2d58ecee61bcbee762828a27bb4754638066cc1eac174ec3fa4aea99
|
7
|
+
data.tar.gz: cca971c37af42ece717519c0b6d795c8f577ccc12e5dcff29a7bb21b1edecc3a3b7ffa95e4b15781dcf35cca67b85ba60c8db072e16c08dc82c4c9f439ec0b50
|
data/lib/encrypt_env.rb
CHANGED
@@ -9,23 +9,35 @@ require 'json'
|
|
9
9
|
|
10
10
|
# gem 'encrypt_env'
|
11
11
|
class EncryptEnv
|
12
|
+
private_class_method def self.path_root
|
13
|
+
@path_root = (defined?(Rails) && Rails.root.to_s) || (defined?(Bundler) && Bundler.root.to_s) || Dir.pwd
|
14
|
+
end
|
15
|
+
|
12
16
|
private_class_method def self.master_key
|
13
17
|
if File.file?("#{@path_root}/config/master.key")
|
14
18
|
key = File.read("#{@path_root}/config/master.key").strip
|
15
|
-
@master_key = [key].pack('H*')
|
16
|
-
puts 'Get master key success!'
|
17
|
-
true
|
18
19
|
elsif ENV.key?('MASTER_KEY')
|
19
|
-
|
20
|
-
puts 'Get master key success!'
|
21
|
-
true
|
20
|
+
key = ENV['MASTER_KEY']
|
22
21
|
else
|
23
|
-
puts 'Get master key fail!'
|
24
22
|
false
|
25
23
|
end
|
24
|
+
@master_key = [key].pack('H*')
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
private_class_method def self.master_key?
|
29
|
+
if @master_key.nil? && !master_key
|
30
|
+
puts "master key not found in 'config/master.key' file and 'MASTER_KEY' environment variable!"
|
31
|
+
@raw_decrypted = ''
|
32
|
+
return false
|
33
|
+
end
|
34
|
+
true
|
26
35
|
end
|
27
36
|
|
28
|
-
private_class_method def self.
|
37
|
+
private_class_method def self.data_to_decrypt
|
38
|
+
hex_string = File.read("#{@path_root}/config/secrets.yml.enc")
|
39
|
+
raw_data = [hex_string].pack('H*')
|
40
|
+
|
29
41
|
encrypted = raw_data.slice(0, raw_data.length - 28)
|
30
42
|
iv = raw_data.slice(raw_data.length - 28, 12)
|
31
43
|
tag = raw_data.slice(raw_data.length - 16, 16)
|
@@ -47,15 +59,11 @@ class EncryptEnv
|
|
47
59
|
|
48
60
|
private_class_method def self.decrypt
|
49
61
|
path_root unless @path_root
|
50
|
-
|
51
|
-
|
52
|
-
@raw_decrypted = ''
|
53
|
-
return false
|
54
|
-
end
|
62
|
+
return unless master_key?
|
63
|
+
|
55
64
|
decipher = OpenSSL::Cipher.new('aes-128-gcm')
|
56
65
|
decipher.decrypt
|
57
|
-
|
58
|
-
data = data_decrypt([hex_string].pack('H*'))
|
66
|
+
data = data_to_decrypt
|
59
67
|
encrypted = data[:encrypted]
|
60
68
|
decipher.key = @master_key
|
61
69
|
decipher.iv = data[:iv]
|
@@ -67,24 +75,14 @@ class EncryptEnv
|
|
67
75
|
true
|
68
76
|
end
|
69
77
|
|
70
|
-
private_class_method def self.path_root
|
71
|
-
@path_root = if defined?(Rails)
|
72
|
-
Rails.root.to_s
|
73
|
-
elsif defined?(Bundler)
|
74
|
-
Bundler.root.to_s
|
75
|
-
else
|
76
|
-
Dir.pwd
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
78
|
def self.setup
|
81
79
|
path_root
|
82
|
-
|
80
|
+
secret_file = File.expand_path("#{@path_root}/config/secrets.yml")
|
83
81
|
key = OpenSSL::Random.random_bytes(16)
|
84
82
|
# save key in master.key file
|
85
83
|
File.open("#{@path_root}/config/master.key", 'w') { |file| file.write(key.unpack('H*')[0]) }
|
86
|
-
encrypt(File.read(
|
87
|
-
File.rename(
|
84
|
+
encrypt(File.read(secret_file))
|
85
|
+
File.rename(secret_file, "#{@path_root}/config/secrets.yml.old")
|
88
86
|
system("echo '/config/master.key' >> #{@path_root}/.gitignore")
|
89
87
|
system("echo '/config/secrets.yml.old' >> #{@path_root}/.gitignore")
|
90
88
|
system("echo 'Set up complete!'")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: encrypt_env
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nhu Tan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Encrypts and decrypts environment variables
|
14
14
|
email: nhutan2001@gmail.com
|