blobs 0.2.4 → 0.2.5
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/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
|