1 """
2 Test cases for the ldaptor.samba.smbpassword module.
3 """
4
5 from twisted.trial import unittest
6 from ldaptor.samba import smbpassword
7 from ldaptor import config
8
10 knownValues=(
11 ('', '31D6CFE0D16AE931B73C59D7E0C089C0'),
12 ('foo', 'AC8E657F83DF82BEEA5D43BDAF7800CC'),
13 (127*'x', '25900FAB94A048BCF438615217776562'),
14 (128*'x', '65681023D0CB5E7E96FF662150EF060D'),
15 (129*'x', '65681023D0CB5E7E96FF662150EF060D'),
16 (1000*'x', '65681023D0CB5E7E96FF662150EF060D'),
17 )
18
20 """nthash(...) gives known results"""
21 for password, expected_result in self.knownValues:
22 result = smbpassword.nthash(password)
23 if result != expected_result:
24 raise AssertionError, 'nthash(%s)=%s, expected %s' \
25 % (repr(password), repr(result), repr(expected_result))
26
28 knownValues=(
29 ('', 'AAD3B435B51404EEAAD3B435B51404EE'),
30 ('foo', '5BFAFBEBFB6A0942AAD3B435B51404EE'),
31 (13*'x', '3AA62DBBEFDB676366B4159AF5A7C45C'),
32 (14*'x', '3AA62DBBEFDB67633AA62DBBEFDB6763'),
33 (15*'x', '3AA62DBBEFDB67633AA62DBBEFDB6763'),
34 (100*'x', '3AA62DBBEFDB67633AA62DBBEFDB6763'),
35 ('1234567abcdefg', '0182BD0BD4444BF8E0C510199CC66ABD'),
36 ('XXXXXXXabcdefg', '3AA62DBBEFDB6763E0C510199CC66ABD'),
37 ('1234567XXXXXXX', '0182BD0BD4444BF83AA62DBBEFDB6763'),
38 )
39
41 """lmhash(...) gives known results"""
42 cfg = config.loadConfig()
43 for password, expected_result in self.knownValues:
44 cfg.set('samba', 'use-lmhash', 'no')
45 disabled = smbpassword.lmhash(password)
46 self.assertEquals(disabled, 32*'X',
47 "Disabled lmhash must be X's: %r" % disabled)
48
49 cfg.set('samba', 'use-lmhash', 'yes')
50 result = smbpassword.lmhash(password)
51 if result != expected_result:
52 raise AssertionError, 'lmhash(%s)=%s, expected %s' \
53 % (repr(password), repr(result), repr(expected_result))
54