コード例 #1
0
class PDBFigaroTestCase(unittest.TestCase):
    password = '******'

    def setUp(self):
        self.pdb = PDBFigaro()
        self.pdb.open(self.password, fname='test/fpm.sample')

    def test_create(self):
        assert isinstance(self.pdb, PDBFigaro)

    def test_tree(self):
        'Tree should be formed correctly'
        ptree = self.pdb.getTree()
        branches = ptree.getBranches()
        bkeys = branches.keys()
        bkeys.sort()
        self.assertEqual(bkeys, ['Kedder', 'Test'])
        tree_test = ptree['Test']
        assert tree_test
        self.assertEqual(len(tree_test.getNodes()), 2)
        tree_kedder = ptree['Kedder']
        assert tree_kedder
        self.assertEqual(len(tree_kedder.getNodes()), 1)

    def test_fpmCompatibilty(self):
        ptree = self.pdb.getTree()
        pwd = ptree['Test'].locate('test2')[0]
        self.assertEqual(pwd.default, 1)
        pwd = ptree['Test'].locate('test1')[0]
        self.assertEqual(pwd.default, 0)
        pwd = ptree['Kedder'].locate('kedder1')[0]
        self.assertEqual(pwd.launcher, 'ssh')

    def test_decryption(self):
        'Test how passwords are decrypted'
        tree_test = self.pdb.getTree()['Test']
        pwds = tree_test.locate('url')
        self.assertEqual(len(pwds), 2)
        pwd_test2 = tree_test.locate('test2')
        self.assertEqual(pwd_test2[0].password, 'test2 password')

    def test_encriptionUtils(self):
        str = "FIGARO ENCRYPTION TEST"
        noised = self.pdb._addNoise(str)
        self.assertEqual(len(noised) % Blowfish.block_size, 0)
        rotated = self.pdb._rotate(noised)
        self.assertEqual(len(rotated) % Blowfish.block_size, 0)

        hex = self.pdb._bin_to_hex(rotated)
        bin = self.pdb._hex_to_bin(hex)
        self.assertEqual(bin, rotated)

        unrotated = self.pdb._unrotate(bin)
        self.assertEqual(str, unrotated)

    def test_encription(self):
        strings = ["FIGARO ENCRYPTION TEST", "small"]
        for str in strings:
            encrypted = self.pdb.encrypt(str)
            decrypted = self.pdb.decrypt(encrypted)
            self.assertEqual(str, decrypted)

    def test_passwordEncryption(self):
        'Encrypted password should be 48 character long'
        pwdstr = 'shortpass'
        encrypted = self.pdb.encrypt(pwdstr, 1)
        self.assertEqual(len(encrypted), FPM_PASSWORD_LEN * 2)
        decrypted = self.pdb.decrypt(encrypted)
        self.assertEqual(pwdstr, decrypted)

    def test_native(self):
        self.assertEqual(self.pdb.native, 0)

    def test_versions(self):
        self.assertEqual(self.pdb.FULL_VERSION, '00.53.00')
        self.assertEqual(self.pdb.MIN_VERSION, '00.50.00')
        self.assertEqual(self.pdb.DISPLAY_VERSION, '0.53')
コード例 #2
0
ファイル: test_figaro.py プロジェクト: chutzimir/kedpm
class PDBFigaroTestCase(unittest.TestCase):
    password = '******'
    def setUp(self):
        self.pdb = PDBFigaro()
        self.pdb.open(self.password, fname='test/fpm.sample')

    def test_create(self):
        assert isinstance(self.pdb, PDBFigaro)

    def test_tree(self):
        'Tree should be formed correctly'
        ptree = self.pdb.getTree()
        branches = ptree.getBranches()
        bkeys = branches.keys()
        bkeys.sort()
        self.assertEqual(bkeys, ['Kedder', 'Test'])
        tree_test = ptree['Test']
        assert tree_test
        self.assertEqual(len(tree_test.getNodes()), 2)
        tree_kedder = ptree['Kedder']
        assert tree_kedder
        self.assertEqual(len(tree_kedder.getNodes()), 1)

    def test_fpmCompatibilty(self):
        ptree = self.pdb.getTree()
        pwd = ptree['Test'].locate('test2')[0]
        self.assertEqual(pwd.default, 1)
        pwd = ptree['Test'].locate('test1')[0]
        self.assertEqual(pwd.default, 0)
        pwd = ptree['Kedder'].locate('kedder1')[0]
        self.assertEqual(pwd.launcher, 'ssh')
        
    def test_decryption(self):
        'Test how passwords are decrypted'
        tree_test = self.pdb.getTree()['Test']
        pwds = tree_test.locate('url')
        self.assertEqual(len(pwds), 2)
        pwd_test2 = tree_test.locate('test2')
        self.assertEqual(pwd_test2[0].password, 'test2 password')

    def test_encriptionUtils(self):
        str = "FIGARO ENCRYPTION TEST"
        noised = self.pdb._addNoise(str)
        self.assertEqual(len(noised) % Blowfish.block_size, 0)
        rotated = self.pdb._rotate(noised)
        self.assertEqual(len(rotated) % Blowfish.block_size, 0)

        hex = self.pdb._bin_to_hex(rotated)
        bin = self.pdb._hex_to_bin(hex)
        self.assertEqual(bin, rotated)
        
        unrotated = self.pdb._unrotate(bin)
        self.assertEqual(str, unrotated)

    def test_encription(self):
        strings = ["FIGARO ENCRYPTION TEST", "small"]
        for str in strings:
            encrypted = self.pdb.encrypt(str)
            decrypted = self.pdb.decrypt(encrypted)
            self.assertEqual(str, decrypted)

    def test_passwordEncryption(self):
        'Encrypted password should be 48 character long'
        pwdstr = 'shortpass'
        encrypted = self.pdb.encrypt(pwdstr, 1)
        self.assertEqual(len(encrypted), FPM_PASSWORD_LEN*2)
        decrypted = self.pdb.decrypt(encrypted)
        self.assertEqual(pwdstr, decrypted)

    def test_native(self):
        self.assertEqual(self.pdb.native, 0)

    def test_versions(self):
        self.assertEqual(self.pdb.FULL_VERSION, '00.53.00')
        self.assertEqual(self.pdb.MIN_VERSION, '00.50.00')
        self.assertEqual(self.pdb.DISPLAY_VERSION, '0.53')

    def test_changePassword(self):
        new_pwd = 'new_password'
        # Copy test database to new location
        shutil.copyfile('test/fpm.sample', 'test/fpm.passwdtest')
        try:
            self.pdb.open(self.password, fname='test/fpm.passwdtest')
            
            self.pdb.changePassword(new_pwd)

            # Try to open database with old password
            self.assertRaises(WrongPassword, self.pdb.open, self.password,
                              fname='test/fpm.passwdtest')

            self.pdb.open(new_pwd, fname='test/fpm.passwdtest')
        finally:
            os.unlink('test/fpm.passwdtest')
コード例 #3
0
 def test_unrotate(self):
     pdb = PDBFigaro()
     unrotated = pdb._unrotate('FIGARO\x00\xe3')
     self.assertEqual(unrotated, 'FIGARO')
コード例 #4
0
ファイル: test_figaro.py プロジェクト: chutzimir/kedpm
 def test_unrotate(self):
     pdb = PDBFigaro()
     unrotated = pdb._unrotate('FIGARO\x00\xe3')
     self.assertEqual(unrotated, 'FIGARO')