passwd 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -3
- data/Rakefile +2 -0
- data/lib/passwd.rb +33 -42
- data/lib/passwd/version.rb +2 -2
- data/spec/passwd_spec.rb +12 -12
- metadata +5 -5
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Passwd
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/i2bskn/passwd.png?branch=master)](https://travis-ci.org/i2bskn/passwd)
|
4
|
+
|
3
5
|
Password utility
|
4
6
|
|
5
7
|
## Installation
|
@@ -68,7 +70,7 @@ Passwd object:
|
|
68
70
|
Default password is randomly generated.
|
69
71
|
Default salt is "#{Time.now.to_s}".
|
70
72
|
|
71
|
-
password = Passwd.new
|
73
|
+
password = Passwd::Password.new
|
72
74
|
password.text # return text password.
|
73
75
|
password.salt_text # return text salt.
|
74
76
|
password.salt_hash # return hash salt.
|
@@ -81,10 +83,10 @@ Options that can be specified:
|
|
81
83
|
|
82
84
|
Password authenticate:
|
83
85
|
|
84
|
-
password = Passwd.new
|
86
|
+
password = Passwd::Password.new
|
85
87
|
Passwd.auth(password.text, password.salt_hash, password.hash) # => true
|
86
88
|
Passwd.auth("invalid!!", password.salt_hash, password.hash) # => false
|
87
|
-
|
89
|
+
|
88
90
|
password == password.text # => true
|
89
91
|
password == "invalid!!" # => false
|
90
92
|
|
data/Rakefile
CHANGED
data/lib/passwd.rb
CHANGED
@@ -3,8 +3,7 @@
|
|
3
3
|
require "passwd/version"
|
4
4
|
require "digest/sha1"
|
5
5
|
|
6
|
-
|
7
|
-
attr_reader :text, :hash, :salt_text, :salt_hash
|
6
|
+
module Passwd
|
8
7
|
@@config = {
|
9
8
|
length: 8,
|
10
9
|
lower: true,
|
@@ -24,54 +23,46 @@ class Passwd
|
|
24
23
|
require_number: true
|
25
24
|
}
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
# Create letters
|
30
|
-
letters = Array.new
|
31
|
-
letters += @@config[:letters_lower] if @@config[:lower]
|
32
|
-
letters += @@config[:letters_upper] if @@config[:upper]
|
33
|
-
letters += @@config[:letters_number] if @@config[:number]
|
26
|
+
class Password
|
27
|
+
attr_reader :text, :hash, :salt_text, :salt_hash
|
34
28
|
|
35
|
-
|
36
|
-
@text =
|
37
|
-
|
38
|
-
@
|
29
|
+
def initialize(options={password: nil, salt_text: Time.now.to_s})
|
30
|
+
@text = options[:password].nil? ? Passwd.create : options[:password]
|
31
|
+
@salt_text = options[:salt_text] || Time.now.to_s
|
32
|
+
@salt_hash = Passwd.hashing(@salt_text)
|
33
|
+
@hash = Passwd.hashing("#{@salt_hash}#{@text}")
|
39
34
|
end
|
40
|
-
# @text = password.nil? ? self.class.create : password
|
41
|
-
@salt_text = options[:salt_text] || Time.now.to_s
|
42
|
-
@salt_hash = Passwd.hashing(@salt_text)
|
43
|
-
@hash = Passwd.hashing("#{@salt_hash}#{@text}")
|
44
|
-
end
|
45
35
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
36
|
+
def text=(password)
|
37
|
+
@hash = Passwd.hashing("#{@salt_hash}#{password}")
|
38
|
+
@text = password
|
39
|
+
end
|
50
40
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
41
|
+
def hash=(password_hash)
|
42
|
+
@text = nil
|
43
|
+
@hash = password_hash
|
44
|
+
end
|
55
45
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
46
|
+
def salt_text=(salt_text)
|
47
|
+
@salt_hash = Passwd.hashing(salt_text)
|
48
|
+
@hash = Passwd.hashing("#{@salt_hash}#{@text}")
|
49
|
+
@salt_text = salt_text
|
50
|
+
end
|
61
51
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
52
|
+
def salt_hash=(salt_hash)
|
53
|
+
@salt_text = nil
|
54
|
+
@hash = Passwd.hashing("#{salt_hash}#{@text}")
|
55
|
+
@salt_hash = salt_hash
|
56
|
+
end
|
67
57
|
|
68
|
-
|
69
|
-
|
70
|
-
|
58
|
+
def policy_check
|
59
|
+
Passwd.policy_check @text
|
60
|
+
end
|
71
61
|
|
72
|
-
|
73
|
-
|
74
|
-
|
62
|
+
def ==(password)
|
63
|
+
enc_pass = Passwd.hashing("#{@salt_hash}#{password}")
|
64
|
+
@hash == enc_pass
|
65
|
+
end
|
75
66
|
end
|
76
67
|
|
77
68
|
class << self
|
data/lib/passwd/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.0.
|
1
|
+
module Passwd
|
2
|
+
VERSION = "0.0.4"
|
3
3
|
end
|
data/spec/passwd_spec.rb
CHANGED
@@ -140,10 +140,10 @@ describe Passwd do
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
-
describe
|
143
|
+
describe 'Password' do
|
144
144
|
context "#initialize" do
|
145
145
|
it "set instance valiables" do
|
146
|
-
password = Passwd.new
|
146
|
+
password = Passwd::Password.new
|
147
147
|
expect(password.text.size).to eq(8)
|
148
148
|
expect(password.text.class).to eq(String)
|
149
149
|
expect(password.hash.class).to eq(String)
|
@@ -153,34 +153,34 @@ describe Passwd do
|
|
153
153
|
|
154
154
|
it "@text is specified password" do
|
155
155
|
pass_text = Passwd.create
|
156
|
-
password = Passwd.new(password: pass_text)
|
156
|
+
password = Passwd::Password.new(password: pass_text)
|
157
157
|
expect(password.text).to eq(pass_text)
|
158
158
|
end
|
159
159
|
|
160
160
|
it "@hash is hash of specified password" do
|
161
161
|
pass_text = Passwd.create
|
162
|
-
password = Passwd.new(password: pass_text)
|
162
|
+
password = Passwd::Password.new(password: pass_text)
|
163
163
|
pass_hash = Passwd.hashing("#{password.salt_hash}#{pass_text}")
|
164
164
|
expect(password.hash).to eq(pass_hash)
|
165
165
|
end
|
166
166
|
|
167
167
|
it "@salt_text is specified salt" do
|
168
168
|
salt_text = "salt"
|
169
|
-
password = Passwd.new(salt_text: salt_text)
|
169
|
+
password = Passwd::Password.new(salt_text: salt_text)
|
170
170
|
expect(password.salt_text).to eq(salt_text)
|
171
171
|
end
|
172
172
|
|
173
173
|
it "@salt_hash is hash of specified salt" do
|
174
174
|
salt_text = "salt"
|
175
175
|
salt_hash = Passwd.hashing(salt_text)
|
176
|
-
password = Passwd.new(salt_text: salt_text)
|
176
|
+
password = Passwd::Password.new(salt_text: salt_text)
|
177
177
|
expect(password.salt_hash).to eq(salt_hash)
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
181
|
context "#text=" do
|
182
182
|
before(:each) do
|
183
|
-
@password = Passwd.new(password: "Secret!!")
|
183
|
+
@password = Passwd::Password.new(password: "Secret!!")
|
184
184
|
end
|
185
185
|
|
186
186
|
it "@text is changed" do
|
@@ -198,7 +198,7 @@ describe Passwd do
|
|
198
198
|
|
199
199
|
context "#hash=" do
|
200
200
|
before(:each) do
|
201
|
-
@password = Passwd.new
|
201
|
+
@password = Passwd::Password.new
|
202
202
|
end
|
203
203
|
|
204
204
|
it "@text is nil" do
|
@@ -215,7 +215,7 @@ describe Passwd do
|
|
215
215
|
|
216
216
|
context "#salt_text=" do
|
217
217
|
before(:each) do
|
218
|
-
@password = Passwd.new
|
218
|
+
@password = Passwd::Password.new
|
219
219
|
end
|
220
220
|
|
221
221
|
it "@salt_text is changed" do
|
@@ -239,7 +239,7 @@ describe Passwd do
|
|
239
239
|
|
240
240
|
context "#salt_hash=" do
|
241
241
|
before(:each) do
|
242
|
-
@password = Passwd.new
|
242
|
+
@password = Passwd::Password.new
|
243
243
|
end
|
244
244
|
|
245
245
|
it "@salt_text is nil" do
|
@@ -264,14 +264,14 @@ describe Passwd do
|
|
264
264
|
it "Passwd.policy_check is called with pass_text" do
|
265
265
|
pass_text = Passwd.create
|
266
266
|
Passwd.should_receive(:policy_check).with(pass_text)
|
267
|
-
password = Passwd.new(password: pass_text)
|
267
|
+
password = Passwd::Password.new(password: pass_text)
|
268
268
|
password.policy_check
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
272
|
context "#==" do
|
273
273
|
before(:each) do
|
274
|
-
@password = Passwd.new
|
274
|
+
@password = Passwd::Password.new
|
275
275
|
end
|
276
276
|
|
277
277
|
it "return true with valid password" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passwd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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: 2013-04-
|
12
|
+
date: 2013-04-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
segments:
|
92
92
|
- 0
|
93
|
-
hash:
|
93
|
+
hash: 2599599372076087466
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
@@ -99,10 +99,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
version: '0'
|
100
100
|
segments:
|
101
101
|
- 0
|
102
|
-
hash:
|
102
|
+
hash: 2599599372076087466
|
103
103
|
requirements: []
|
104
104
|
rubyforge_project:
|
105
|
-
rubygems_version: 1.8.
|
105
|
+
rubygems_version: 1.8.23
|
106
106
|
signing_key:
|
107
107
|
specification_version: 3
|
108
108
|
summary: Password utility
|