blobs 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/blobs/version.rb +1 -1
  3. data/lib/blobs.rb +17 -11
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 667df47d57c698adeaaed050c61675329bc2549c
4
- data.tar.gz: 1c5c0a0a0f04e171146cc0d25d29e83015b53950
3
+ metadata.gz: d12169aaa7aaf23ec941b9014ac639457b33e307
4
+ data.tar.gz: 4608a496c30c7d94771828030ecc066279fb1b8d
5
5
  SHA512:
6
- metadata.gz: 0a74900d5c8d0cbb5391a4419ef8c35bf39622094a9e86bf9daf7a217766f44720e401d294ea9b1d15554db2eb59b8083cc621f83eba4efa5b5bb4741bd42a43
7
- data.tar.gz: aa8fc74cb68ad86104a014084f0d86bd39b2ba68ac5950cff0874522dce3991ddf3f633cea66cd8098c1ee5f9600984e130edfb10302612b8841617a6c72722c
6
+ metadata.gz: c2afbdac3858b631be282f5cef4372e7c00c06e1782fbc4cf00eb699552db4b44e5e11a4fceeeb2e22ed21bb50e076df55e71c0eb8ceb31d5019c594d007d6cd
7
+ data.tar.gz: 0cb9a8525e0b5217c90dd1c0bebc9f8cd65b1b670ffe2e0c6af13315857eb37956a320324d403c784d29175f9aad535ad9a496cea032d0ebd68db36d68268a31
data/lib/blobs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Blobs
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
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
- decrypt_file("#{key_file}.enc", key_file)
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
- if File.file?("#{key_file}.enc")
130
- if decrypt_file("#{key_file}.enc", key_file)
131
- key_file_contents = File.read(key_file)
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(key_file)
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(key_file, 'wb') do |f|
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(key_file) if encrypt_file(key_file)
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("#{file_path}.enc", 'wb') do |outf|
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
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-24 00:00:00.000000000 Z
11
+ date: 2017-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler