~ubuntu-branches/ubuntu/vivid/krb5-strength/vivid

« back to all changes in this revision

Viewing changes to tests/tools/wordlist-cdb-t

  • Committer: Package Import Robot
  • Author(s): Russ Allbery
  • Date: 2014-03-26 00:04:13 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20140326000413-654u047o55e1vllq
Tags: 3.0-1
* New upstream release.
  - SQLite password dictionaries are now supported and can be used to
    reject passwords within edit distance one of any dictionary word.
  - cdbmake-wordlist has been renamed to krb5-strength-wordlist and can
    also generate SQLite databases compatible with this plugin and
    Heimdal quality check program.
  - heimdal-history, a password history implementation for Heimdal, has
    been added and can be stacked with heimdal-strength to check both
    history and password strength.
  - New configuration option, minimum_different, which sets the minimum
    number of different characters required in a password.
* Add the upstream signing key to debian/upstream/signing-key.asc and
  configure uscan to do signature validation.  Configure uscan to
  download the xz tarball instead of the gz tarball.
* Create a _history user and group and a /var/lib/heimdal-history
  directory on package installation for the use of heimdal-history,
  remove the user and the standard database on purge, and remove the
  directory if empty on package purge or removal.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# Test suite for the CDB handling in the krb5-strength-wordlist utility.
 
4
#
 
5
# Written by Russ Allbery <eagle@eyrie.org>
 
6
# Copyright 2013, 2014
 
7
#     The Board of Trustees of the Leland Stanford Junior University
 
8
#
 
9
# See LICENSE for licensing terms.
 
10
 
 
11
. "$SOURCE/tap/libtap.sh"
 
12
cd "$BUILD"
 
13
 
 
14
# We can't run this test without the cdb utility.
 
15
if ! command -v cdb >/dev/null 2>&1 ; then
 
16
    skip_all 'cdb utility required for test'
 
17
fi
 
18
 
 
19
# Output the test plan.
 
20
plan 18
 
21
 
 
22
# Create a temporary directory and wordlist and ensure it's writable.
 
23
tmpdir=`test_tmpdir`
 
24
wordlist=`test_file_path data/wordlist`
 
25
if [ -z "$wordlist" ] ; then
 
26
    bail 'cannot find data/wordlist in test suite'
 
27
fi
 
28
cp "$wordlist" "$tmpdir/wordlist"
 
29
chmod 644 "$tmpdir/wordlist"
 
30
 
 
31
# Add a non-ASCII word to the wordlist.
 
32
echo 'عربى' >> "$tmpdir/wordlist"
 
33
 
 
34
# Test generation of the basic cdb file.
 
35
makelist="$SOURCE/../tools/krb5-strength-wordlist"
 
36
ok_program 'Database generation' 0 '' \
 
37
    "$makelist" -c "$tmpdir/wordlist.cdb" "$tmpdir/wordlist"
 
38
 
 
39
# Check the contents.
 
40
ok_program 'Database contains password' 0 '1' \
 
41
    cdb -q "$tmpdir/wordlist.cdb" password
 
42
ok_program 'Database contains one' 0 '1' \
 
43
    cdb -q "$tmpdir/wordlist.cdb" one
 
44
ok_program 'Database does not contain three' 100 '' \
 
45
    cdb -q "$tmpdir/wordlist.cdb" three
 
46
ok_program 'Database contains non-ASCII password' 0 '1' \
 
47
    cdb -q "$tmpdir/wordlist.cdb" 'عربى'
 
48
 
 
49
# Regenerate the database, filtering out short passwords.
 
50
rm "$tmpdir/wordlist.cdb"
 
51
ok_program 'Database generation with no short passwords' 0 '' \
 
52
    "$makelist" -c "$tmpdir/wordlist.cdb" -l 8 "$tmpdir/wordlist"
 
53
ok_program 'Database still contains password' 0 '1' \
 
54
    cdb -q "$tmpdir/wordlist.cdb" password
 
55
ok_program 'Database does not contain one' 100 '' \
 
56
    cdb -q "$tmpdir/wordlist.cdb" one
 
57
 
 
58
# Regenerate the database, filtering out non-ASCII words.
 
59
rm "$tmpdir/wordlist.cdb"
 
60
ok_program 'Database generation with no non-ASCII' 0 '' \
 
61
    "$makelist" -c "$tmpdir/wordlist.cdb" -a "$tmpdir/wordlist"
 
62
ok_program 'Database still contains password' 0 '1' \
 
63
    cdb -q "$tmpdir/wordlist.cdb" password
 
64
ok_program 'Database does not contain non-ASCII password' 100 '' \
 
65
    cdb -q "$tmpdir/wordlist.cdb" 'عربى'
 
66
 
 
67
# Regenerate the database, filtering out long passwords.
 
68
rm "$tmpdir/wordlist.cdb"
 
69
ok_program 'Database generation with no long passwords' 0 '' \
 
70
    "$makelist" -c "$tmpdir/wordlist.cdb" -L 10 "$tmpdir/wordlist"
 
71
ok_program 'Database still contains bitterbane' 0 '1' \
 
72
    cdb -q "$tmpdir/wordlist.cdb" bitterbane
 
73
ok_program 'Database does not contain happenstance' 100 '' \
 
74
    cdb -q "$tmpdir/wordlist.cdb" happenstance
 
75
 
 
76
# Regenerate the database, filtering out words starting with b or ending in d.
 
77
rm "$tmpdir/wordlist.cdb"
 
78
ok_program 'Database generation with no b passwords' 0 '' \
 
79
    "$makelist" -c "$tmpdir/wordlist.cdb" -x '\Ab' -x '.*d' "$tmpdir/wordlist"
 
80
ok_program 'Database does not contain bitterbane' 100 '' \
 
81
    cdb -q "$tmpdir/wordlist.cdb" bitterbane
 
82
ok_program 'Database still contains happenstance' 0 '1' \
 
83
    cdb -q "$tmpdir/wordlist.cdb" happenstance
 
84
ok_program 'Database does not contain password' 100 '' \
 
85
    cdb -q "$tmpdir/wordlist.cdb" password
 
86
 
 
87
# Clean up.
 
88
rm -f "$tmpdir/wordlist.cdb"
 
89
rm -f "$tmpdir/wordlist"
 
90
rmdir "$tmpdir" 2>/dev/null