blobs 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/blobs/version.rb +1 -1
- data/lib/blobs.rb +17 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12169aaa7aaf23ec941b9014ac639457b33e307
|
4
|
+
data.tar.gz: 4608a496c30c7d94771828030ecc066279fb1b8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2afbdac3858b631be282f5cef4372e7c00c06e1782fbc4cf00eb699552db4b44e5e11a4fceeeb2e22ed21bb50e076df55e71c0eb8ceb31d5019c594d007d6cd
|
7
|
+
data.tar.gz: 0cb9a8525e0b5217c90dd1c0bebc9f8cd65b1b670ffe2e0c6af13315857eb37956a320324d403c784d29175f9aad535ad9a496cea032d0ebd68db36d68268a31
|
data/lib/blobs/version.rb
CHANGED
data/lib/blobs.rb
CHANGED
@@ -5,6 +5,7 @@ require 'base64'
|
|
5
5
|
require 'securerandom'
|
6
6
|
require 'cgi'
|
7
7
|
require 'yaml'
|
8
|
+
require 'securerandom'
|
8
9
|
|
9
10
|
# ENV['BLOB_STORE_API_BASE_URL'] = 'http://45.76.84.129'
|
10
11
|
# ENV['MASTER_KEY'] = '6CU3xfUOtvvVBRPPOe5ShlCOAZ0Ht5k9'
|
@@ -36,6 +37,8 @@ module Blobs
|
|
36
37
|
log "#{response.parsed_response.inspect}"
|
37
38
|
self.current_user = response.parsed_response['user']
|
38
39
|
self.token = response.parsed_response['token']
|
40
|
+
encryption_key
|
41
|
+
self.token
|
39
42
|
else
|
40
43
|
nil
|
41
44
|
end
|
@@ -97,8 +100,10 @@ module Blobs
|
|
97
100
|
Base64.decode64(self.current_user['userToken'])
|
98
101
|
end
|
99
102
|
|
100
|
-
def export_key_file(key_file = "#{ENV['HOME']}/.blobs.key")
|
101
|
-
|
103
|
+
def export_key_file(key_file = "#{ENV['HOME']}/.blobs.key.enc")
|
104
|
+
export_file = "#{ENV['HOME']}/blobs.key-#{Time.now.to_i}"
|
105
|
+
decrypt_file(key_file, export_file)
|
106
|
+
export_file
|
102
107
|
end
|
103
108
|
|
104
109
|
private
|
@@ -125,15 +130,16 @@ module Blobs
|
|
125
130
|
def encryption_key
|
126
131
|
return @encryption_key if @encryption_key
|
127
132
|
|
128
|
-
key_file = "#{ENV['HOME']}/.blobs.key"
|
129
|
-
|
130
|
-
|
131
|
-
|
133
|
+
key_file = "#{ENV['HOME']}/.blobs.key.enc"
|
134
|
+
decrypted_key_file = "#{key_file.gsub('.enc', '')}-#{SecureRandom.hex(4)}#{Time.now.to_i}"
|
135
|
+
if File.file?(key_file)
|
136
|
+
if decrypt_file(key_file, decrypted_key_file)
|
137
|
+
key_file_contents = File.read(decrypted_key_file)
|
132
138
|
key_file_yml = YAML.load(Base64.strict_decode64(key_file_contents))
|
133
139
|
if key_file_yml[:key] and key_file_yml[:iv]
|
134
140
|
@iv = key_file_yml[:iv]
|
135
141
|
@encryption_key = key_file_yml[:key]
|
136
|
-
File.delete(
|
142
|
+
File.delete(decrypted_key_file)
|
137
143
|
return @encryption_key
|
138
144
|
else
|
139
145
|
raise "Key file is corrupt!"
|
@@ -146,12 +152,12 @@ module Blobs
|
|
146
152
|
@encryption_key = Digest::SHA256.hexdigest(cipher.random_key)[0..31]
|
147
153
|
@iv = Digest::SHA256.hexdigest(cipher.random_iv)[0..15]
|
148
154
|
key_file_yml = { key: @encryption_key, iv: @iv }
|
149
|
-
File.open(
|
155
|
+
File.open(decrypted_key_file, 'wb') do |f|
|
150
156
|
enc = Base64.strict_encode64(key_file_yml.to_yaml)
|
151
157
|
f.write(enc)
|
152
158
|
f.close
|
153
159
|
end
|
154
|
-
File.delete(
|
160
|
+
File.delete(decrypted_key_file) if encrypt_file(decrypted_key_file, key_file)
|
155
161
|
end
|
156
162
|
@encryption_key
|
157
163
|
end
|
@@ -160,7 +166,7 @@ module Blobs
|
|
160
166
|
@iv
|
161
167
|
end
|
162
168
|
|
163
|
-
def encrypt_file(file_path)
|
169
|
+
def encrypt_file(file_path, enc_file_path)
|
164
170
|
raise 'No user token!' unless self.user_token
|
165
171
|
|
166
172
|
cipher = OpenSSL::Cipher::AES256.new :CBC
|
@@ -168,7 +174,7 @@ module Blobs
|
|
168
174
|
cipher.key = self.user_token
|
169
175
|
|
170
176
|
buf = ""
|
171
|
-
File.open(
|
177
|
+
File.open(enc_file_path, 'wb') do |outf|
|
172
178
|
File.open(file_path, 'rb') do |inf|
|
173
179
|
while inf.read(4096, buf)
|
174
180
|
outf << cipher.update(buf)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Kiessler
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|