seekrit 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/seekrit +1 -1
  2. data/lib/seekrit/store.rb +13 -6
  3. metadata +3 -3
@@ -24,7 +24,7 @@ def interactor(&blk)
24
24
  password = lambda{ ask('Enter password: '){ |q| q.echo = false } }
25
25
  store = Seekrit::Store.new(password, file)
26
26
  yield Seekrit::Interactor.new(store)
27
- rescue Seekrit::DecryptionError => err
27
+ rescue Seekrit::PasswordError => err
28
28
  puts err.message
29
29
  exit 1
30
30
  end
@@ -3,7 +3,7 @@ require 'openssl'
3
3
  require 'yaml'
4
4
 
5
5
  module Seekrit
6
- class DecryptionError < RuntimeError
6
+ class PasswordError < RuntimeError
7
7
  end
8
8
 
9
9
  class Store
@@ -62,7 +62,7 @@ module Seekrit
62
62
 
63
63
  private
64
64
 
65
- def crypt_key
65
+ def get_key_from_user
66
66
  Digest::SHA256.digest(@password.respond_to?(:call) ? @password.call : @password)
67
67
  end
68
68
 
@@ -98,9 +98,16 @@ module Seekrit
98
98
  end
99
99
 
100
100
  def encrypt(data)
101
+ unless @correct_key
102
+ if secrets.any?
103
+ decrypt(secrets.values.first)
104
+ else
105
+ @correct_key = get_key_from_user
106
+ end
107
+ end
101
108
  cipher = OpenSSL::Cipher::Cipher.new(@cipher)
102
109
  cipher.encrypt
103
- cipher.key = crypt_key
110
+ cipher.key = @correct_key
104
111
  cipher.iv = iv = cipher.random_iv
105
112
  ciphertext = cipher.update(data)
106
113
  ciphertext << cipher.final
@@ -111,11 +118,11 @@ module Seekrit
111
118
  err = nil
112
119
  3.times do
113
120
  begin
114
- k = @correct_key || crypt_key
121
+ k = @correct_key || get_key_from_user
115
122
  decrypted = decrypt_once(data, k)
116
123
  @correct_key ||= k
117
124
  return decrypted
118
- rescue DecryptionError => err
125
+ rescue PasswordError => err
119
126
  end
120
127
  end
121
128
  raise err
@@ -132,7 +139,7 @@ module Seekrit
132
139
  plaintext << cipher.final
133
140
  return plaintext
134
141
  rescue => err
135
- raise DecryptionError, err.message
142
+ raise PasswordError, err.message
136
143
  end
137
144
  end
138
145
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seekrit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 5
10
- version: 0.2.5
9
+ - 6
10
+ version: 0.2.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul Battley