Exemplo n.º 1
0
        def test_srp(self):
            for instance in srp_instances:
                if instance["Exception"]:
                    continue

                server = TestServer()

                server.setup(instance["Username"],
                             bytes.fromhex(instance["Modulus"]),
                             base64.b64decode(instance["Verifier"]))

                server_challenge = server.get_challenge()
                usr = self.user(instance["Password"],
                                bytes.fromhex(instance["Modulus"]))

                client_challenge = usr.get_challenge()
                client_proof = usr.process_challenge(
                    base64.b64decode(instance["Salt"]), server_challenge,
                    PM_VERSION)
                server_proof = server.process_challenge(
                    client_challenge, client_proof)
                usr.verify_session(server_proof)

                self.assertIsNotNone(
                    client_proof, "SRP exchange failed, "
                    "client_proof is none for instance: {}...".format(
                        str(instance)[:30]))

                self.assertEqual(
                    server.get_session_key(), usr.get_session_key(),
                    "Secrets do not match, instance: {}...".format(
                        str(instance)[:30]))

                self.assertTrue(
                    server.get_authenticated(),
                    "Server is not correctly authenticated, " +
                    "instance: {}...".format(str(instance)[:30]))

                self.assertTrue(
                    usr.authenticated(),
                    "User is not correctly authenticated, " +
                    "instance: {}...".format(str(instance)[:30]))