pws 1.0.0 → 1.0.1
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.
- data/README.md +2 -1
- data/features/support/env.rb +4 -1
- data/lib/pws/format/1.0.rb +28 -6
- data/lib/pws/version.rb +1 -1
- data/pws.gemspec +1 -0
- metadata +18 -2
data/README.md
CHANGED
@@ -15,8 +15,9 @@ You can install pws with
|
|
15
15
|
|
16
16
|
Run `$ pws --help` for usage information.
|
17
17
|
|
18
|
-
On
|
18
|
+
On Linux, please make sure you've got `xclip` or `xsel` installed (clipboard).
|
19
19
|
|
20
|
+
On MacOS, the KDF might be generated pretty slow. You can work around this issue by using less iterations (see help) or [solving this problem](https://github.com/janlelis/pws/issues/7).
|
20
21
|
|
21
22
|
Updating from 0.9
|
22
23
|
---
|
data/features/support/env.rb
CHANGED
@@ -12,12 +12,15 @@ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File:
|
|
12
12
|
# Hooks
|
13
13
|
|
14
14
|
BEGIN{
|
15
|
-
$original_pws_file
|
15
|
+
$original_pws_file = ENV["PWS"]
|
16
|
+
$original_iterations = ENV["PWS_ITERATIONS"]
|
17
|
+
ENV["PWS_ITERATIONS"] = "2"
|
16
18
|
}
|
17
19
|
|
18
20
|
END{
|
19
21
|
Clipboard.clear
|
20
22
|
ENV["PWS"] = $original_pws_file
|
23
|
+
ENV["PWS_ITERATIONS"] = $original_iterations
|
21
24
|
FileUtils.rm Dir['pws-test-*']
|
22
25
|
}
|
23
26
|
|
data/lib/pws/format/1.0.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative '../format'
|
|
4
4
|
require 'securerandom'
|
5
5
|
require 'digest/hmac'
|
6
6
|
require 'openssl'
|
7
|
+
require 'pbkdf2'
|
7
8
|
|
8
9
|
class PWS
|
9
10
|
module Format
|
@@ -121,9 +122,15 @@ class PWS
|
|
121
122
|
]
|
122
123
|
end
|
123
124
|
|
124
|
-
|
125
|
+
# support
|
126
|
+
|
127
|
+
def hmac(key, *strings)
|
128
|
+
Digest::HMAC.new(key, Digest::SHA512).update(
|
129
|
+
strings.map(&:to_s).join
|
130
|
+
).digest
|
131
|
+
end
|
125
132
|
|
126
|
-
def
|
133
|
+
def kdf_openssl(password, salt, iterations)
|
127
134
|
OpenSSL::PKCS5::pbkdf2_hmac(
|
128
135
|
password,
|
129
136
|
salt,
|
@@ -133,12 +140,27 @@ class PWS
|
|
133
140
|
)
|
134
141
|
end
|
135
142
|
|
136
|
-
def
|
137
|
-
|
138
|
-
|
139
|
-
|
143
|
+
def kdf_ruby(password, salt, iterations)
|
144
|
+
PBKDF2.new(
|
145
|
+
password: password,
|
146
|
+
salt: salt,
|
147
|
+
iterations: iterations,
|
148
|
+
key_length: 512,
|
149
|
+
hash_function: OpenSSL::Digest::SHA512,
|
150
|
+
).bin_string
|
140
151
|
end
|
141
152
|
|
153
|
+
# see gh#7
|
154
|
+
begin
|
155
|
+
OpenSSL::PKCS5::pbkdf2_hmac("","",2,512,OpenSSL::Digest::SHA512.new)
|
156
|
+
rescue NotImplementedError
|
157
|
+
alias kdf kdf_ruby
|
158
|
+
else
|
159
|
+
alias kdf kdf_openssl
|
160
|
+
end
|
161
|
+
|
162
|
+
private
|
163
|
+
|
142
164
|
def array_to_data_string(array)
|
143
165
|
array.map{ |e|
|
144
166
|
e = e.to_s
|
data/lib/pws/version.rb
CHANGED
data/pws.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_dependency 'clipboard', '~> 1.0.1'
|
20
20
|
s.add_dependency 'zucker', '>= 12.1'
|
21
21
|
s.add_dependency 'paint', '>= 0.8.4'
|
22
|
+
s.add_dependency 'pbkdf2'
|
22
23
|
s.add_development_dependency 'rake'
|
23
24
|
s.add_development_dependency 'aruba'
|
24
25
|
s.add_development_dependency 'cucumber'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: clipboard
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.8.4
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pbkdf2
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: rake
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|