ruby-password 0.15.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.
- data/.gitignore +8 -0
- data/CHANGES +148 -0
- data/COPYING +340 -0
- data/Changelog +840 -0
- data/INSTALL +34 -0
- data/README +60 -0
- data/Rakefile +25 -0
- data/VERSION +1 -0
- data/example/example.rb +42 -0
- data/example/pwgen +118 -0
- data/extconf.rb +62 -0
- data/lib/password.rb +432 -0
- data/pwgen.1 +83 -0
- data/rbcrack.c +113 -0
- data/ruby-password.spec +153 -0
- data/test/tc_password.rb +89 -0
- metadata +115 -0
data/pwgen.1
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
.\" $Id: pwgen.1,v 1.2 2004/04/13 00:01:07 ianmacd Exp $
|
2
|
+
.\"
|
3
|
+
.TH PWGEN 1 "April 2004" "pwgen"
|
4
|
+
.SH NAME
|
5
|
+
pwgen \- generate pronounceable passwords
|
6
|
+
.SH SYNOPSIS
|
7
|
+
.B pwgen
|
8
|
+
[
|
9
|
+
.I OPTION
|
10
|
+
]
|
11
|
+
[
|
12
|
+
.I password_length
|
13
|
+
]
|
14
|
+
[
|
15
|
+
.I number_passwords
|
16
|
+
]
|
17
|
+
.SH DESCRIPTION
|
18
|
+
.B pwgen
|
19
|
+
generates passwords which are designed to be easily memorised by humans,
|
20
|
+
whilst being as secure as possible.
|
21
|
+
.PP
|
22
|
+
The
|
23
|
+
.B pwgen
|
24
|
+
program is designed
|
25
|
+
to be used both interactively, and in shell scripts. Hence,
|
26
|
+
its default behaviour differs depending on whether the standard output
|
27
|
+
is a tty device or a pipe to another program. Used interactively,
|
28
|
+
.B pwgen
|
29
|
+
will display a screenful of passwords, allowing the user to pick a single
|
30
|
+
password, and then quickly erase the screen. This prevents someone from
|
31
|
+
being able to "shoulder-surf" the user's chosen password.
|
32
|
+
.PP
|
33
|
+
When standard output is not a tty,
|
34
|
+
.B pwgen
|
35
|
+
will only generate one password, as this tends to be much more convenient
|
36
|
+
for shell scripts. This also assures that
|
37
|
+
.B pwgen
|
38
|
+
is compatible with other versions of this program.
|
39
|
+
.B
|
40
|
+
.SH OPTIONS
|
41
|
+
.TP
|
42
|
+
.B \-c, --capitalise, --capitalize
|
43
|
+
Include at least one capital letter in the password. This is the default
|
44
|
+
if the standard output is a tty device.
|
45
|
+
.TP
|
46
|
+
.B \-C
|
47
|
+
Print the generated passwords in columns. This is the default if the
|
48
|
+
standard output is a tty device.
|
49
|
+
.TP
|
50
|
+
.B \-n, --numerals
|
51
|
+
Include at least one number in the password. This is the default
|
52
|
+
if the standard output is a tty device.
|
53
|
+
.TP
|
54
|
+
.B \--no-numerals
|
55
|
+
Don't include a number in the generated passwords.
|
56
|
+
.TP
|
57
|
+
.B \--no-capitalise, --no-capitalize
|
58
|
+
Don't bother to include any capital letters in the generated passwords.
|
59
|
+
.TP
|
60
|
+
.B \-s, --secure
|
61
|
+
Generate completely random, hard-to-memorise paswords. These should
|
62
|
+
only be used for machine passwords, since otherwise it's almost
|
63
|
+
guaranteed that users will simply write the password on a piece of
|
64
|
+
paper taped to the monitor...
|
65
|
+
.TP
|
66
|
+
.B \-v, --version
|
67
|
+
Display the program version and exit.
|
68
|
+
.TP
|
69
|
+
.B \-h, --help
|
70
|
+
Display a help message and exit.
|
71
|
+
.TP
|
72
|
+
.B \-1
|
73
|
+
Print the generated passwords one per line.
|
74
|
+
.SH AUTHOR
|
75
|
+
This version of
|
76
|
+
.B pwgen
|
77
|
+
was written by Ian Macdonald <ian@caliban.org>.
|
78
|
+
It is modelled after a program originally written by Brandon S. Allbery and
|
79
|
+
then later extensively modified by Olaf Titz, Jim Lynch, and others. It was
|
80
|
+
later rewritten from scratch by Theodore Ts'o. This man page is lifted largely
|
81
|
+
from Theodore Ts'o's man page.
|
82
|
+
.SH SEE ALSO
|
83
|
+
.BR passwd (1)
|
data/rbcrack.c
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
/* rbcrack.c - a Ruby interface to CrackLib
|
2
|
+
*
|
3
|
+
* $Id: rbcrack.c,v 1.20 2006/03/02 19:41:44 ianmacd Exp $
|
4
|
+
*
|
5
|
+
* Version : 0.5.3
|
6
|
+
* Author : Ian Macdonald <ian@caliban.org>
|
7
|
+
*
|
8
|
+
* Copyright (C) 2002-2006 Ian Macdonald
|
9
|
+
*
|
10
|
+
* This program is free software; you can redistribute it and/or modify
|
11
|
+
* it under the terms of the GNU General Public License as published by
|
12
|
+
* the Free Software Foundation; either version 2, or (at your option)
|
13
|
+
* any later version.
|
14
|
+
*
|
15
|
+
* This program is distributed in the hope that it will be useful,
|
16
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
* GNU General Public License for more details.
|
19
|
+
*
|
20
|
+
* You should have received a copy of the GNU General Public License
|
21
|
+
* along with this program; if not, write to the Free Software Foundation,
|
22
|
+
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
23
|
+
*/
|
24
|
+
|
25
|
+
#include <ruby.h>
|
26
|
+
#include <stdio.h>
|
27
|
+
#include <stdlib.h>
|
28
|
+
#include <string.h>
|
29
|
+
#include <unistd.h>
|
30
|
+
#include <errno.h>
|
31
|
+
#include <crack.h>
|
32
|
+
|
33
|
+
#include "rbcrack.h"
|
34
|
+
|
35
|
+
|
36
|
+
VALUE ePassword_DictionaryError;
|
37
|
+
VALUE ePassword_WeakPassword;
|
38
|
+
|
39
|
+
|
40
|
+
/* <b>check</b><em>(dict=nil)</em>
|
41
|
+
*
|
42
|
+
* This interfaces to LibCrack to check the strength of the password. If
|
43
|
+
* _dict_ is given, it is the path to the CrackLib dictionary, minus the
|
44
|
+
* file's extension. For example, if the dictionary is located at
|
45
|
+
* <tt>/usr/lib/cracklib_dict.pwd</tt>, _dict_ would be
|
46
|
+
* <tt>/usr/lib/cracklib_dict</tt>. If it is not given, the dictionary found
|
47
|
+
* at build time will be used.
|
48
|
+
*
|
49
|
+
* If a path is given that does not lead to a legible dictionary, a
|
50
|
+
* Password::DictionaryError exception is raised. On success, +true+ is
|
51
|
+
* returned. On failure, a Password::WeakPassword exception is raised.
|
52
|
+
*/
|
53
|
+
static VALUE passwd_check(VALUE self, VALUE args)
|
54
|
+
{
|
55
|
+
VALUE dict;
|
56
|
+
char *objection;
|
57
|
+
char *buffer;
|
58
|
+
|
59
|
+
/* pop the one and only argument we may have been passed */
|
60
|
+
dict = rb_ary_pop(args);
|
61
|
+
|
62
|
+
if (dict == Qnil || strcmp(STR2CSTR(dict), "") == 0) {
|
63
|
+
/* no argument passed, so use default location from rbcrack.h */
|
64
|
+
dict = rb_str_new2(CRACK_DICT);
|
65
|
+
} else {
|
66
|
+
buffer = malloc(strlen(STR2CSTR(dict)) + 8);
|
67
|
+
strcpy(buffer, STR2CSTR(dict));
|
68
|
+
strcat(buffer, ".pwd");
|
69
|
+
|
70
|
+
if (access(buffer, R_OK) != 0) {
|
71
|
+
free(buffer);
|
72
|
+
rb_raise(ePassword_DictionaryError, "%s", strerror(errno));
|
73
|
+
}
|
74
|
+
|
75
|
+
free(buffer);
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
/* perform check on password */
|
80
|
+
objection = FascistCheck(STR2CSTR(self), STR2CSTR(dict));
|
81
|
+
|
82
|
+
/* return true on success; raise an exception otherwise */
|
83
|
+
if (objection) {
|
84
|
+
rb_raise(ePassword_WeakPassword, "%s", objection);
|
85
|
+
} else {
|
86
|
+
return Qtrue;
|
87
|
+
}
|
88
|
+
|
89
|
+
}
|
90
|
+
|
91
|
+
/* initialize this class */
|
92
|
+
void Init_cracklib()
|
93
|
+
{
|
94
|
+
VALUE cPassword;
|
95
|
+
|
96
|
+
/* define the Password class */
|
97
|
+
cPassword = rb_define_class("Password", rb_cString);
|
98
|
+
|
99
|
+
/* define the Password::DictionaryError exception */
|
100
|
+
ePassword_DictionaryError =
|
101
|
+
rb_define_class_under(cPassword, "DictionaryError",
|
102
|
+
rb_eStandardError);
|
103
|
+
|
104
|
+
/* define the Password::WeakPassword exception */
|
105
|
+
ePassword_WeakPassword =
|
106
|
+
rb_define_class_under(cPassword, "WeakPassword",
|
107
|
+
rb_eStandardError);
|
108
|
+
|
109
|
+
/* define the Password.check method */
|
110
|
+
rb_define_method(cPassword, "check", passwd_check, -2);
|
111
|
+
|
112
|
+
return;
|
113
|
+
}
|
data/ruby-password.spec
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
# $Id: ruby-password.spec,v 1.21 2006/03/02 19:53:18 ianmacd Exp $
|
2
|
+
#
|
3
|
+
|
4
|
+
Summary: A password handling library for Ruby with interface to CrackLib
|
5
|
+
Name: ruby-password
|
6
|
+
Version: 0.5.3
|
7
|
+
Release: 1
|
8
|
+
License: GPL
|
9
|
+
Group: Applications/Ruby
|
10
|
+
Source: http://www.caliban.org/files/ruby/%{name}-%{version}.tar.gz
|
11
|
+
URL: http://www.caliban.org/ruby/
|
12
|
+
Packager: Ian Macdonald <ian@caliban.org>
|
13
|
+
BuildRoot: /var/tmp/%{name}-%{version}
|
14
|
+
BuildRequires: ruby, cracklib, cracklib-dicts
|
15
|
+
Requires: ruby-termios, cracklib, cracklib-dicts
|
16
|
+
|
17
|
+
%define ruby18 %( [ `ruby -r rbconfig -e 'print Config::CONFIG["MAJOR"], ".", Config::CONFIG["MINOR"]'` = '1.8' ] && echo 1 || echo 0 )
|
18
|
+
|
19
|
+
# build documentation if we have rdoc on the build system
|
20
|
+
%define rdoc %( type rdoc > /dev/null && echo 1 || echo 0 )
|
21
|
+
|
22
|
+
%if %{ruby18}
|
23
|
+
Requires: ruby >= 1.8.0
|
24
|
+
%else
|
25
|
+
Requires: ruby >= 1.6.0
|
26
|
+
%endif
|
27
|
+
|
28
|
+
%description
|
29
|
+
Ruby/Password is a suite of password handling methods for Ruby. It supports
|
30
|
+
the manual entry of passwords from the keyboard in both buffered and
|
31
|
+
unbuffered modes, password strength checking, random password generation,
|
32
|
+
phonemic password generation (for easy memorisation by human-beings) and the
|
33
|
+
encryption of passwords.
|
34
|
+
|
35
|
+
%prep
|
36
|
+
%setup
|
37
|
+
|
38
|
+
%build
|
39
|
+
ruby extconf.rb
|
40
|
+
make
|
41
|
+
|
42
|
+
%clean
|
43
|
+
rm -rf $RPM_BUILD_ROOT
|
44
|
+
|
45
|
+
%install
|
46
|
+
rm -rf $RPM_BUILD_ROOT
|
47
|
+
make DESTDIR=$RPM_BUILD_ROOT install
|
48
|
+
install -d $RPM_BUILD_ROOT%{_mandir}/man1
|
49
|
+
install pwgen.1 $RPM_BUILD_ROOT%{_mandir}/man1
|
50
|
+
gzip -9 $RPM_BUILD_ROOT%{_mandir}/man1/pwgen.1
|
51
|
+
install -d $RPM_BUILD_ROOT%{_bindir}
|
52
|
+
install -m755 example/pwgen $RPM_BUILD_ROOT%{_bindir}
|
53
|
+
%if %{rdoc}
|
54
|
+
rdocpath=`ruby -rrdoc/ri/ri_paths -e 'puts RI::Paths::PATH[1] ||
|
55
|
+
RI::Paths::PATH[0]'`
|
56
|
+
rdoc -r -o $RPM_BUILD_ROOT$rdocpath -x CVS *.c lib
|
57
|
+
rm $RPM_BUILD_ROOT$rdocpath/created.rid
|
58
|
+
%endif
|
59
|
+
find $RPM_BUILD_ROOT -type f -print | \
|
60
|
+
ruby -pe 'sub(%r(^'$RPM_BUILD_ROOT'), "")' > %{name}-%{version}-filelist
|
61
|
+
%if %{rdoc}
|
62
|
+
echo '%%docdir' $rdocpath >> %{name}-%{version}-filelist
|
63
|
+
%endif
|
64
|
+
|
65
|
+
find $RPM_BUILD_ROOT -type f -print | \
|
66
|
+
ruby -pe 'sub(%r(^'$RPM_BUILD_ROOT'), "")' > %{name}-%{version}-filelist
|
67
|
+
|
68
|
+
%files -f %{name}-%{version}-filelist
|
69
|
+
%defattr(-,root,root)
|
70
|
+
%doc CHANGES COPYING INSTALL README
|
71
|
+
%doc example/example.rb
|
72
|
+
|
73
|
+
%changelog
|
74
|
+
* Thu Mar 2 2006 Ian Macdonald <ian@caliban.org> 0.5.3-1
|
75
|
+
- 0.5.3
|
76
|
+
- Build environment no longer uses packer.h if available.
|
77
|
+
- Package RDoc documentation in form usable by ri, rather than in HTML.
|
78
|
+
|
79
|
+
* Sat Sep 4 2004 Ian Macdonald <ian@caliban.org> 0.5.2-1
|
80
|
+
- 0.5.2
|
81
|
+
- Build environment modified to search for the system dictionary in the
|
82
|
+
additional location of /var/cache/cracklib/cracklib_dict.pwd, which is where
|
83
|
+
it is on Debian Linux.
|
84
|
+
|
85
|
+
* Mon Apr 12 2004 Ian Macdonald <ian@caliban.org> 0.5.1-1
|
86
|
+
- 0.5.1
|
87
|
+
- Password.get would throw an exception in the unlikely event that STDIN
|
88
|
+
reached EOF without any input.
|
89
|
+
- pwgen now supports a -v or --version flag.
|
90
|
+
|
91
|
+
* Fri Apr 9 2004 Ian Macdonald <ian@caliban.org> 0.5.0-1
|
92
|
+
- 0.5.0
|
93
|
+
- A new example program, pwgen, has been added, complete with man page.
|
94
|
+
- A new class method, Password.phonemic, generates phonemic passwords.
|
95
|
+
- The old Password.random method has been renamed Password.urandom and
|
96
|
+
replaced by a new, portable Password.random.
|
97
|
+
- Password.get will now detect whether STDIN is connected to a tty. If not, no
|
98
|
+
password prompt is displayed and no attempt will be made to manipulate
|
99
|
+
terminal echo.
|
100
|
+
- The prompt parameter to Password.get and Password.getc must now be passed in
|
101
|
+
its entirety.
|
102
|
+
- Running password.rb directly will now result in a call to Password.phonemic
|
103
|
+
and the display of the resulting password.
|
104
|
+
- The Password::BadDictionary exception has been renamed
|
105
|
+
Password::DictionaryError and made a subclass of StandardError instead of
|
106
|
+
RuntimeError.
|
107
|
+
- The CryptError exception has been moved to Password::CryptError and is now a
|
108
|
+
subclass of StandardError instead of RuntimeError.
|
109
|
+
- A new constant, PASSWD_CHARS, gives the list of characters from which
|
110
|
+
automatically generated passwords will be chosen. Note that Password.urandom
|
111
|
+
will use the additional characters '+' and '/'.
|
112
|
+
- A new constant, SALT_CHARS, gives the list of characters valid as salt
|
113
|
+
characters when invoking Password#crypt.
|
114
|
+
- Password.getc and Password.random now return an instance of Password, not
|
115
|
+
String.
|
116
|
+
- A Password::CryptError exception is now raised if the salt passed to
|
117
|
+
Password#crypt contains a bad character.
|
118
|
+
- RDoc documentation has been added.
|
119
|
+
- The old RD documentation has been removed.
|
120
|
+
- Unit-tests are now included with the software to verify its correct working.
|
121
|
+
|
122
|
+
* Wed Nov 12 2003 Ian Macdonald <ian@caliban.org> 0.4.1-1
|
123
|
+
- 0.4.1
|
124
|
+
- Warning in Ruby 1.8.x caused by use of rb_enable_super() has been fixed
|
125
|
+
|
126
|
+
* Wed Jun 10 2003 Ian Macdonald <ian@caliban.org> 0.4.0-1
|
127
|
+
- 0.4.0
|
128
|
+
- When a bad dictionary path is provided to Password#check, a
|
129
|
+
Password::BadDictionary exception is now raised
|
130
|
+
- Turn off Ruby buffering for Password.getc, as this resulted in the prompt
|
131
|
+
not being displayed when called by Ruby 1.8
|
132
|
+
|
133
|
+
* Wed Oct 2 2002 Ian Macdonald <ian@caliban.org> 0.3.0-1
|
134
|
+
- 0.3.0
|
135
|
+
- Password#check now raises a Password::WeakPassword exception when provided
|
136
|
+
with a weak password
|
137
|
+
|
138
|
+
* Sat Sep 28 2002 Ian Macdonald <ian@caliban.org> 0.2.1-1
|
139
|
+
- 0.2.1
|
140
|
+
- Portability enhancements from Akinori MUSHA <knu@iDaemons.org>
|
141
|
+
|
142
|
+
* Wed Sep 18 2002 Ian Macdonald <ian@caliban.org> 0.2.0-1
|
143
|
+
- 0.2.0
|
144
|
+
- Password#check now returns true on success, and raises a Crack::WeakPassword
|
145
|
+
exception on failure
|
146
|
+
|
147
|
+
* Tue Jun 18 2002 Ian Macdonald <ian@caliban.org> 0.1.1-1
|
148
|
+
- 0.1.1
|
149
|
+
- Password.get now returns an instance of Password, not String
|
150
|
+
- Password.new now defaults to assigning a null string
|
151
|
+
|
152
|
+
* Tue Jun 18 2002 Ian Macdonald <ian@caliban.org> 0.1.0-1
|
153
|
+
- 0.1.0
|
data/test/tc_password.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#
|
3
|
+
# $Id: tc_password.rb,v 1.3 2004/04/12 08:50:06 ianmacd Exp $
|
4
|
+
|
5
|
+
$: << File.dirname(__FILE__) + "/.." << File.dirname(__FILE__) + "/../lib"
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'password'
|
9
|
+
|
10
|
+
|
11
|
+
TIMES = 1000
|
12
|
+
LENGTH = 32
|
13
|
+
|
14
|
+
|
15
|
+
class TC_PasswordTest < Test::Unit::TestCase
|
16
|
+
|
17
|
+
def test_check
|
18
|
+
# Check for a weak password.
|
19
|
+
pw = Password.new( 'foo' )
|
20
|
+
assert_raises( Password::WeakPassword ) { pw.check }
|
21
|
+
|
22
|
+
# Check for a good password.
|
23
|
+
pw = Password.new( 'G@7flAxg' )
|
24
|
+
assert_nothing_raised { pw.check }
|
25
|
+
|
26
|
+
# Check for an exception on bad dictionary path.
|
27
|
+
assert_raises( Password::DictionaryError ) { pw.check( '/tmp/nodict' ) }
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_phonemic
|
31
|
+
TIMES.times do |t|
|
32
|
+
pw = Password.phonemic( LENGTH )
|
33
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_phonemic_one_case
|
38
|
+
TIMES.times do |t|
|
39
|
+
pw = Password.phonemic( LENGTH, Password::ONE_CASE )
|
40
|
+
assert( pw =~ /[A-Z]/, "#{pw} has no upper-case letter" )
|
41
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_phonemic_one_digit
|
46
|
+
TIMES.times do |t|
|
47
|
+
pw = Password.phonemic( LENGTH, Password::ONE_DIGIT )
|
48
|
+
assert( pw =~ /[0-9]/, "#{pw} has no digit" )
|
49
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_phonemic_one_case_one_digit
|
54
|
+
TIMES.times do |t|
|
55
|
+
pw = Password.phonemic( LENGTH, Password::ONE_CASE |
|
56
|
+
Password::ONE_DIGIT )
|
57
|
+
assert( pw =~ /[A-Z]/, "#{pw} has no upper-case letter" )
|
58
|
+
assert( pw =~ /[0-9]/, "#{pw} has no digit" )
|
59
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_random
|
64
|
+
TIMES.times do |t|
|
65
|
+
pw = Password.random( LENGTH )
|
66
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_urandom
|
71
|
+
TIMES.times do |t|
|
72
|
+
pw = Password.urandom( LENGTH )
|
73
|
+
assert( pw.length == LENGTH, "bad length: #{pw.length}, not #{LENGTH}" )
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_crypt
|
78
|
+
pw = Password.random( LENGTH )
|
79
|
+
assert_nothing_raised { pw.crypt( Password::DES ) }
|
80
|
+
assert_nothing_raised { pw.crypt( Password::MD5 ) }
|
81
|
+
assert_raises( Password::CryptError ) { pw.crypt( Password::DES, '@*' ) }
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_null_stdin
|
85
|
+
$stdin.reopen( File.new( '/dev/null' ) )
|
86
|
+
assert_nothing_raised { Password.get }
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-password
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 41
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 15
|
9
|
+
- 5
|
10
|
+
version: 0.15.5
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Albert Lash
|
14
|
+
- Ian Macdonald
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-06-29 00:00:00 -07:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: ruby-termios
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: shoulda
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
description: |-
|
51
|
+
Ruby/Password is a suite of password handling methods for Ruby. It supports
|
52
|
+
the manual entry of passwords from the keyboard in both buffered and
|
53
|
+
unbuffered modes, password strength checking, random password generation,
|
54
|
+
phonemic password generation (for easy memorisation by human-beings) and the
|
55
|
+
encryption of passwords.
|
56
|
+
email: albert.lash@docunext.com
|
57
|
+
executables: []
|
58
|
+
|
59
|
+
extensions:
|
60
|
+
- extconf.rb
|
61
|
+
extra_rdoc_files:
|
62
|
+
- README
|
63
|
+
files:
|
64
|
+
- .gitignore
|
65
|
+
- CHANGES
|
66
|
+
- COPYING
|
67
|
+
- Changelog
|
68
|
+
- INSTALL
|
69
|
+
- README
|
70
|
+
- Rakefile
|
71
|
+
- VERSION
|
72
|
+
- example/example.rb
|
73
|
+
- example/pwgen
|
74
|
+
- extconf.rb
|
75
|
+
- lib/password.rb
|
76
|
+
- pwgen.1
|
77
|
+
- rbcrack.c
|
78
|
+
- ruby-password.spec
|
79
|
+
- test/tc_password.rb
|
80
|
+
has_rdoc: true
|
81
|
+
homepage: http://www.docunext.com/
|
82
|
+
licenses: []
|
83
|
+
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options:
|
86
|
+
- --charset=UTF-8
|
87
|
+
require_paths:
|
88
|
+
- lib
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 3
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 3
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
version: "0"
|
107
|
+
requirements: []
|
108
|
+
|
109
|
+
rubyforge_project:
|
110
|
+
rubygems_version: 1.3.7
|
111
|
+
signing_key:
|
112
|
+
specification_version: 3
|
113
|
+
summary: A password handling library for Ruby with interface to CrackLib
|
114
|
+
test_files:
|
115
|
+
- test/tc_password.rb
|