File: md5crypt.t

package info (click to toggle)
libauthen-passphrase-perl 0.008-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 376 kB
  • sloc: perl: 1,932; makefile: 2
file content (64 lines) | stat: -r--r--r-- 1,662 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use warnings;
use strict;

use Test::More tests => 69;

BEGIN { use_ok "Authen::Passphrase::MD5Crypt"; }

my $ppr = Authen::Passphrase::MD5Crypt
		->new(salt => "NaCl", passphrase => "wibble");
ok $ppr;
is $ppr->salt, "NaCl";
is $ppr->hash_base64, "xdhxXxtV42/rvGFe//aQu/";

$ppr = Authen::Passphrase::MD5Crypt
		->new(salt_random => 1, passphrase => "wibble");
ok $ppr;
like $ppr->salt, qr#\A[./0-9A-Za-z]{8}\z#;
like $ppr->hash_base64, qr#\A[./0-9A-Za-z]{22}\z#;
ok $ppr->match("wibble");

$ppr = Authen::Passphrase::MD5Crypt
		->from_crypt('$1$Vd3f8aG6$2vsEqBwwsrvUdUYK40Dtm/');
ok $ppr;
is $ppr->salt, "Vd3f8aG6";
is $ppr->hash_base64, "2vsEqBwwsrvUdUYK40Dtm/";

$ppr = Authen::Passphrase::MD5Crypt
		->from_rfc2307('{CrYpT}$1$Vd3f8aG6$2vsEqBwwsrvUdUYK40Dtm/');
ok $ppr;
is $ppr->salt, "Vd3f8aG6";
is $ppr->hash_base64, "2vsEqBwwsrvUdUYK40Dtm/";

my %pprs;
while(<DATA>) {
	chomp;
	s/([^ \n]+) ([^ \n]+) *//;
	my($salt, $hash) = ($1, $2);
	$ppr = Authen::Passphrase::MD5Crypt
			->new(salt => $salt, hash_base64 => $hash);
	ok $ppr;
	is $ppr->salt, $salt;
	is $ppr->hash_base64, $hash;
	eval { $ppr->passphrase };
	isnt $@, "";
	is $ppr->as_crypt, "\$1\$".$salt."\$".$hash;
	is $ppr->as_rfc2307, "{CRYPT}\$1\$".$salt."\$".$hash;
	$pprs{$_} = $ppr;
}

foreach my $rightphrase (sort keys %pprs) {
	my $ppr = $pprs{$rightphrase};
	foreach my $passphrase (sort keys %pprs) {
		ok ($ppr->match($passphrase) xor $passphrase ne $rightphrase);
	}
}

1;

__DATA__
.ek8tjGw JlwHaPpGUeCpzvx6DSYt.0
ZoDb0wM1 TSZxQ/qndpG1yB9HqCMHg/ 0
Z7/4DX0p 6IBWggA5iXUKnYI7xhl6R1 1
RveEKWw9 //PkU.geQpEJRr7JoK7ey/ foo
Tdb1JRjV CTqZJJGDNwtm6ScQ2w6md/ supercalifragilisticexpialidocious