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.
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