passrock 0.0.4 → 0.0.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b901d76f9ebf5e7aeae7fac88edbba47f632bb6
|
4
|
+
data.tar.gz: c0102ec9aaaaa8f4536c1787187604140cad70e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7c54fa479abe10d5993a1dd3da3190e7b0ad4e421fa0ed6db25e2d27ac4e2c0ea4aa0b68b707495a16dde840ad327b640f7fd701bee9cb01216a2f6b29aa8b3
|
7
|
+
data.tar.gz: 44b468162e89408c5fa95ed1af2714611334a18b3997702d6a677727cca0ddf8466f48c49bd07bda0d945353580f4fe79802782aac4f21c4b3cf5e6d874470a4
|
@@ -6,7 +6,7 @@ module ActiveModel
|
|
6
6
|
class PassrockSecureValidator < ActiveModel::EachValidator
|
7
7
|
|
8
8
|
def validate_each(record, attribute, value)
|
9
|
-
passrock_db = Passrock::PasswordDb.new(Passrock.configuration.password_db, Passrock.configuration.private_key)
|
9
|
+
passrock_db = Passrock::PasswordDb.new(:password_db => Passrock.configuration.password_db, :private_key => Passrock.configuration.private_key)
|
10
10
|
record.errors.add(attribute, :passrock_secure) if passrock_db.insecure?(value)
|
11
11
|
end
|
12
12
|
|
data/lib/passrock/password_db.rb
CHANGED
@@ -12,11 +12,13 @@ module Passrock
|
|
12
12
|
end
|
13
13
|
|
14
14
|
|
15
|
-
attr_reader :
|
15
|
+
attr_reader :password_db, :private_key
|
16
16
|
|
17
|
-
def initialize(
|
18
|
-
@
|
19
|
-
@private_key = private_key
|
17
|
+
def initialize(opts = {})
|
18
|
+
@password_db = opts[:password_db]
|
19
|
+
@private_key = opts[:private_key]
|
20
|
+
|
21
|
+
raise PasswordDbNotFoundError, "Passrock Password DB not found at: #{@password_db}" unless File.file?(@password_db)
|
20
22
|
end
|
21
23
|
|
22
24
|
def password_in_searchable_form(password)
|
@@ -40,11 +42,11 @@ module Passrock
|
|
40
42
|
|
41
43
|
def total_records
|
42
44
|
# Minus 1 for length in file and 1 for 0-up counting
|
43
|
-
@total_records ||= (File.size(
|
45
|
+
@total_records ||= (File.size(password_db) / RECORD_LENGTH) - 2
|
44
46
|
end
|
45
47
|
|
46
48
|
def find_by_binary_search(password)
|
47
|
-
file = File.new(
|
49
|
+
file = File.new(password_db, 'rb')
|
48
50
|
target = password_in_searchable_form(password)
|
49
51
|
|
50
52
|
lo = 1 # start at 1 because the testKey is at 0
|
data/lib/passrock/version.rb
CHANGED
data/lib/passrock.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Passrock::PasswordDb do
|
4
|
+
|
4
5
|
let(:password_db) { passrock_password_db }
|
5
6
|
let(:private_key) { passrock_private_key }
|
7
|
+
let(:valid_init_opts) { {:password_db => password_db, :private_key => private_key} }
|
6
8
|
let(:insecure_password) { 'password' }
|
7
9
|
let(:secure_password) { 'BoatActKnowsDog' }
|
8
10
|
|
@@ -18,35 +20,48 @@ describe Passrock::PasswordDb do
|
|
18
20
|
end
|
19
21
|
|
20
22
|
|
23
|
+
describe '#initialize' do
|
24
|
+
|
25
|
+
context 'when password_db file does not exist' do
|
26
|
+
it 'raises PasswordDbNotFoundError' do
|
27
|
+
expect {
|
28
|
+
described_class.new(:password_db => '/invalid/path/to/password_db', :private_key => private_key)
|
29
|
+
}.to raise_error(Passrock::PasswordDbNotFoundError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
21
35
|
describe '#password_in_searchable_form' do
|
22
36
|
|
23
37
|
it 'returns the given password in a searchable format' do
|
24
|
-
|
25
|
-
expect(
|
38
|
+
subject = described_class.new(valid_init_opts)
|
39
|
+
expect(subject.password_in_searchable_form(insecure_password)).to eq('+lR0p4OzjXJnta/4GGtqdaBQEFPQdjI=')
|
26
40
|
end
|
27
41
|
|
28
42
|
end
|
29
43
|
|
30
44
|
describe '#secure?' do
|
31
|
-
|
45
|
+
|
46
|
+
let(:subject) { described_class.new(valid_init_opts) }
|
32
47
|
|
33
48
|
context 'when given password is present in the password database' do
|
34
49
|
it 'returns false' do
|
35
|
-
expect(
|
50
|
+
expect(subject.secure?(insecure_password)).to be_false
|
36
51
|
end
|
37
52
|
end
|
38
53
|
|
39
54
|
context 'when given password does not appear in the password database' do
|
40
55
|
it 'returns true' do
|
41
|
-
expect(
|
56
|
+
expect(subject.secure?(secure_password)).to be_true
|
42
57
|
end
|
43
58
|
end
|
44
59
|
|
45
60
|
context 'multiple sequential calls' do
|
46
61
|
it 'does not error out' do
|
47
62
|
expect {
|
48
|
-
|
49
|
-
|
63
|
+
subject.secure?(secure_password)
|
64
|
+
subject.secure?(insecure_password)
|
50
65
|
}.to_not raise_error
|
51
66
|
end
|
52
67
|
end
|
@@ -54,19 +69,21 @@ describe Passrock::PasswordDb do
|
|
54
69
|
end
|
55
70
|
|
56
71
|
describe '#insecure?' do
|
57
|
-
|
72
|
+
|
73
|
+
let(:subject) { described_class.new(valid_init_opts) }
|
58
74
|
|
59
75
|
context 'when given password is present in the password database' do
|
60
76
|
it 'returns true' do
|
61
|
-
expect(
|
77
|
+
expect(subject.insecure?(insecure_password)).to be_true
|
62
78
|
end
|
63
79
|
end
|
64
80
|
|
65
81
|
context 'when given password does not appear in the password database' do
|
66
82
|
it 'returns false' do
|
67
|
-
expect(
|
83
|
+
expect(subject.insecure?(secure_password)).to be_false
|
68
84
|
end
|
69
85
|
end
|
86
|
+
|
70
87
|
end
|
71
88
|
|
72
89
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passrock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bitium, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt-ruby
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/active_model/validations/passrock_secure_validator.rb
|
99
99
|
- lib/passrock.rb
|
100
100
|
- lib/passrock/configuration.rb
|
101
|
+
- lib/passrock/exceptions.rb
|
101
102
|
- lib/passrock/password_db.rb
|
102
103
|
- lib/passrock/railtie.rb
|
103
104
|
- lib/passrock/version.rb
|