Пример #1
0
 def test_ldap_password_valid(self):
     """test the ldap auth method with all the schemes"""
     salt = b"UVVAQvrMyXMF3FF3"
     schemes_salt = [b"{SMD5}", b"{SSHA}", b"{SSHA256}", b"{SSHA384}", b"{SSHA512}"]
     schemes_nosalt = [b"{MD5}", b"{SHA}", b"{SHA256}", b"{SHA384}", b"{SHA512}"]
     hashed_password1 = []
     for scheme in schemes_salt:
         hashed_password1.append(
             utils.LdapHashUserPassword.hash(scheme, self.password1, salt, charset="utf8")
         )
     for scheme in schemes_nosalt:
         hashed_password1.append(
             utils.LdapHashUserPassword.hash(scheme, self.password1, charset="utf8")
         )
     hashed_password1.append(
         utils.LdapHashUserPassword.hash(
             b"{CRYPT}",
             self.password1,
             b"$6$UVVAQvrMyXMF3FF3",
             charset="utf8"
         )
     )
     for hp1 in hashed_password1:
         self.assertIsInstance(hp1, bytes)
         self.assertTrue(utils.check_password("ldap", self.password1, hp1, "utf8"))
         self.assertFalse(utils.check_password("ldap", self.password2, hp1, "utf8"))
Пример #2
0
 def test_ldap_password_valid(self):
     """test the ldap auth method with all the schemes"""
     salt = b"UVVAQvrMyXMF3FF3"
     schemes_salt = [
         b"{SMD5}", b"{SSHA}", b"{SSHA256}", b"{SSHA384}", b"{SSHA512}"
     ]
     schemes_nosalt = [
         b"{MD5}", b"{SHA}", b"{SHA256}", b"{SHA384}", b"{SHA512}"
     ]
     hashed_password1 = []
     for scheme in schemes_salt:
         hashed_password1.append(
             utils.LdapHashUserPassword.hash(scheme,
                                             self.password1,
                                             salt,
                                             charset="utf8"))
     for scheme in schemes_nosalt:
         hashed_password1.append(
             utils.LdapHashUserPassword.hash(scheme,
                                             self.password1,
                                             charset="utf8"))
     hashed_password1.append(
         utils.LdapHashUserPassword.hash(b"{CRYPT}",
                                         self.password1,
                                         b"$6$UVVAQvrMyXMF3FF3",
                                         charset="utf8"))
     for hp1 in hashed_password1:
         self.assertIsInstance(hp1, bytes)
         self.assertTrue(
             utils.check_password("ldap", self.password1, hp1, "utf8"))
         self.assertFalse(
             utils.check_password("ldap", self.password2, hp1, "utf8"))
Пример #3
0
 def test_plain_unicode(self):
     """test the plain auth method with unicode input"""
     self.assertTrue(
         utils.check_password("plain", self.password1.decode("utf8"),
                              self.password1.decode("utf8"), "utf8"))
     self.assertFalse(
         utils.check_password("plain", self.password1.decode("utf8"),
                              self.password2.decode("utf8"), "utf8"))
Пример #4
0
 def test_plain(self):
     """test the plain auth method"""
     self.assertTrue(
         utils.check_password("plain", self.password1, self.password1,
                              "utf8"))
     self.assertFalse(
         utils.check_password("plain", self.password1, self.password2,
                              "utf8"))
Пример #5
0
 def test_hex(self):
     """test all the hex_HASH method: the hashed password is a simple hash of the password"""
     hashes = ["md5", "sha1", "sha224", "sha256", "sha384", "sha512"]
     hashed_password1 = []
     for hash_scheme in hashes:
         hashed_password1.append(
             (
                 "hex_%s" % hash_scheme,
                 getattr(utils.hashlib, hash_scheme)(self.password1).hexdigest()
             )
         )
     for (method, hp1) in hashed_password1:
         self.assertTrue(utils.check_password(method, self.password1, hp1, "utf8"))
         self.assertFalse(utils.check_password(method, self.password2, hp1, "utf8"))
Пример #6
0
 def test_hex(self):
     """test all the hex_HASH method: the hashed password is a simple hash of the password"""
     hashes = ["md5", "sha1", "sha224", "sha256", "sha384", "sha512"]
     hashed_password1 = []
     for hash_scheme in hashes:
         hashed_password1.append(
             ("hex_%s" % hash_scheme,
              getattr(utils.hashlib,
                      hash_scheme)(self.password1).hexdigest()))
     for (method, hp1) in hashed_password1:
         self.assertTrue(
             utils.check_password(method, self.password1, hp1, "utf8"))
         self.assertFalse(
             utils.check_password(method, self.password2, hp1, "utf8"))
Пример #7
0
 def test_plain_unicode(self):
     """test the plain auth method with unicode input"""
     self.assertTrue(
         utils.check_password(
             "plain",
             self.password1.decode("utf8"),
             self.password1.decode("utf8"),
             "utf8"
         )
     )
     self.assertFalse(
         utils.check_password(
             "plain",
             self.password1.decode("utf8"),
             self.password2.decode("utf8"),
             "utf8"
         )
     )
Пример #8
0
    def test_crypt(self):
        """test the crypt auth method"""
        salts = ["$6$UVVAQvrMyXMF3FF3", "aa"]
        hashed_password1 = []
        for salt in salts:
            if six.PY3:
                hashed_password1.append(
                    utils.crypt.crypt(
                        self.password1.decode("utf8"),
                        salt
                    ).encode("utf8")
                )
            else:
                hashed_password1.append(utils.crypt.crypt(self.password1, salt))

        for hp1 in hashed_password1:
            self.assertTrue(utils.check_password("crypt", self.password1, hp1, "utf8"))
            self.assertFalse(utils.check_password("crypt", self.password2, hp1, "utf8"))

        with self.assertRaises(ValueError):
            utils.check_password("crypt", self.password1, b"$truc$s$dsdsd", "utf8")
Пример #9
0
    def test_crypt(self):
        """test the crypt auth method"""
        salts = ["$6$UVVAQvrMyXMF3FF3", "aa"]
        hashed_password1 = []
        for salt in salts:
            if six.PY3:
                hashed_password1.append(
                    utils.crypt.crypt(
                        self.password1.decode("utf8"),
                        salt
                    ).encode("utf8")
                )
            else:
                hashed_password1.append(utils.crypt.crypt(self.password1, salt))

        for hp1 in hashed_password1:
            self.assertTrue(utils.check_password("crypt", self.password1, hp1, "utf8"))
            self.assertFalse(utils.check_password("crypt", self.password2, hp1, "utf8"))

        with self.assertRaises(ValueError):
            utils.check_password("crypt", self.password1, b"$truc$s$dsdsd", "utf8")
Пример #10
0
    def test_ldap_password_fail(self):
        """test the ldap auth method with malformed hash or bad schemes"""
        salt = b"UVVAQvrMyXMF3FF3"
        schemes_salt = [b"{SMD5}", b"{SSHA}", b"{SSHA256}", b"{SSHA384}", b"{SSHA512}"]
        schemes_nosalt = [b"{MD5}", b"{SHA}", b"{SHA256}", b"{SHA384}", b"{SHA512}"]

        # first try to hash with bad parameters
        with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
            utils.LdapHashUserPassword.hash(b"TOTO", self.password1)
        for scheme in schemes_nosalt:
            with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
                utils.LdapHashUserPassword.hash(scheme, self.password1, salt)
        for scheme in schemes_salt:
            with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
                utils.LdapHashUserPassword.hash(scheme, self.password1)
        with self.assertRaises(utils.LdapHashUserPassword.BadSalt):
            utils.LdapHashUserPassword.hash(b'{CRYPT}', self.password1, b"$truc$toto")

        # then try to check hash with bad hashes
        with self.assertRaises(utils.LdapHashUserPassword.BadHash):
            utils.check_password("ldap", self.password1, b"TOTOssdsdsd", "utf8")
        for scheme in schemes_salt:
            # bad length
            with self.assertRaises(utils.LdapHashUserPassword.BadHash):
                utils.check_password("ldap", self.password1, scheme + b"dG90b3E8ZHNkcw==", "utf8")
            # bad base64
            with self.assertRaises(utils.LdapHashUserPassword.BadHash):
                utils.check_password("ldap", self.password1, scheme + b"dG90b3E8ZHNkcw", "utf8")
Пример #11
0
    def test_ldap_password_fail(self):
        """test the ldap auth method with malformed hash or bad schemes"""
        salt = b"UVVAQvrMyXMF3FF3"
        schemes_salt = [b"{SMD5}", b"{SSHA}", b"{SSHA256}", b"{SSHA384}", b"{SSHA512}"]
        schemes_nosalt = [b"{MD5}", b"{SHA}", b"{SHA256}", b"{SHA384}", b"{SHA512}"]

        # first try to hash with bad parameters
        with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
            utils.LdapHashUserPassword.hash(b"TOTO", self.password1)
        for scheme in schemes_nosalt:
            with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
                utils.LdapHashUserPassword.hash(scheme, self.password1, salt)
        for scheme in schemes_salt:
            with self.assertRaises(utils.LdapHashUserPassword.BadScheme):
                utils.LdapHashUserPassword.hash(scheme, self.password1)
        with self.assertRaises(utils.LdapHashUserPassword.BadSalt):
            utils.LdapHashUserPassword.hash(b'{CRYPT}', self.password1, b"$truc$toto")

        # then try to check hash with bad hashes
        with self.assertRaises(utils.LdapHashUserPassword.BadHash):
            utils.check_password("ldap", self.password1, b"TOTOssdsdsd", "utf8")
        for scheme in schemes_salt:
            # bad length
            with self.assertRaises(utils.LdapHashUserPassword.BadHash):
                utils.check_password("ldap", self.password1, scheme + b"dG90b3E8ZHNkcw==", "utf8")
            # bad base64
            with self.assertRaises(utils.LdapHashUserPassword.BadHash):
                utils.check_password("ldap", self.password1, scheme + b"dG90b3E8ZHNkcw", "utf8")
Пример #12
0
 def test_plain(self):
     """test the plain auth method"""
     self.assertTrue(utils.check_password("plain", self.password1, self.password1, "utf8"))
     self.assertFalse(utils.check_password("plain", self.password1, self.password2, "utf8"))
Пример #13
0
 def test_bad_method(self):
     """try to check password with a bad method, should raise a ValueError"""
     with self.assertRaises(ValueError):
         utils.check_password("test", self.password1, b"$truc$s$dsdsd", "utf8")
Пример #14
0
 def test_bad_method(self):
     """try to check password with a bad method, should raise a ValueError"""
     with self.assertRaises(ValueError):
         utils.check_password("test", self.password1, b"$truc$s$dsdsd",
                              "utf8")