Esempio n. 1
0
    def _test_complete_exchange(self, client_handshaker_class,
                                client_failure=False, server_failure=False):
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = client_handshaker_class(p_cli, now - 0.001, is_client=True)
        hs_srv = CryptoHandshaker(p_srv, now - 0.042)


        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value() + '\x00')
        tsrv.clear()

        if client_failure:
            self.assertIsInstance(err, failure.Failure)
            self.assertIsInstance(err.value, HandshakeFailedError)
            self.assertFalse(tcli.disconnecting, 'should not be disconnecting')
            self.assertEquals(p_cli.handshake_status, 'fail')
            self.assertEquals(p_srv.handshake_status, None)
        else:
            self.assertIdentical(err, None)
            self.assertFalse(tcli.disconnecting, 'disconnecting')
            self.assertEquals(p_cli.handshake_status, 'ok')
            self.assertEquals(p_srv.handshake_status, None)


        err = p_srv.dataReceived(tcli.value() + '\x00')
        tcli.clear()

        if server_failure:
            self.assertIsInstance(err, failure.Failure)
            self.assertIsInstance(err.value, HandshakeFailedError)
            self.assertFalse(tsrv.disconnecting, 'should not be disconnecting')
            self.assertEquals(p_srv.handshake_status, 'fail')
        else:
            self.assertIdentical(err, None)
            self.assertFalse(tsrv.disconnecting, 'disconnecting')
            self.assertEquals(p_srv.handshake_status, 'ok')
Esempio n. 2
0
    def _test_complete_exchange(self,
                                client_handshaker_class,
                                client_failure=False,
                                server_failure=False):
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = client_handshaker_class(p_cli, now - 0.001, is_client=True)
        hs_srv = CryptoHandshaker(p_srv, now - 0.042)

        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value() + '\x00')
        tsrv.clear()

        if client_failure:
            self.assertIsInstance(err, failure.Failure)
            self.assertIsInstance(err.value, HandshakeFailedError)
            self.assertFalse(tcli.disconnecting, 'should not be disconnecting')
            self.assertEquals(p_cli.handshake_status, 'fail')
            self.assertEquals(p_srv.handshake_status, None)
        else:
            self.assertIdentical(err, None)
            self.assertFalse(tcli.disconnecting, 'disconnecting')
            self.assertEquals(p_cli.handshake_status, 'ok')
            self.assertEquals(p_srv.handshake_status, None)

        err = p_srv.dataReceived(tcli.value() + '\x00')
        tcli.clear()

        if server_failure:
            self.assertIsInstance(err, failure.Failure)
            self.assertIsInstance(err.value, HandshakeFailedError)
            self.assertFalse(tsrv.disconnecting, 'should not be disconnecting')
            self.assertEquals(p_srv.handshake_status, 'fail')
        else:
            self.assertIdentical(err, None)
            self.assertFalse(tsrv.disconnecting, 'disconnecting')
            self.assertEquals(p_srv.handshake_status, 'ok')
Esempio n. 3
0
    def test_complete_exchange_plus(self):
        # almost exactly the same test as above except writing some
        # additional (garbage) data immediately (as in the same
        # "socket.read()") after the handshake data
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = Handshaker(p_cli, now - 0.001, is_client=True)
        hs_srv = Handshaker(p_srv, now - 0.042)


        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value() + '\x00')
        tsrv.clear()

        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, 'ok')
        self.assertEquals(p_srv.handshake_status, None)

        err = p_srv.dataReceived(tcli.value() + '\x00')
        tcli.clear()

        self.assertIdentical(err, None)
        self.assertFalse(tsrv.disconnecting, 'disconnecting')
        self.assertFalse(tcli.disconnecting, 'disconnecting')

        self.assertEquals(p_srv.handshake_status, 'ok')
Esempio n. 4
0
    def test_complete_exchange_plus(self):
        # almost exactly the same test as above except writing some
        # additional (garbage) data immediately (as in the same
        # "socket.read()") after the handshake data
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = Handshaker(p_cli, now - 0.001, is_client=True)
        hs_srv = Handshaker(p_srv, now - 0.042)

        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value() + '\x00')
        tsrv.clear()

        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, 'ok')
        self.assertEquals(p_srv.handshake_status, None)

        err = p_srv.dataReceived(tcli.value() + '\x00')
        tcli.clear()

        self.assertIdentical(err, None)
        self.assertFalse(tsrv.disconnecting, 'disconnecting')
        self.assertFalse(tcli.disconnecting, 'disconnecting')

        self.assertEquals(p_srv.handshake_status, 'ok')
Esempio n. 5
0
    def test_complete_exchange(self):
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = Handshaker(p_cli, now - 0.001, is_client=True)
        hs_srv = Handshaker(p_srv, now - 0.042)


        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value())
        tsrv.clear()

        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, 'ok')
        self.assertEquals(p_srv.handshake_status, None)

        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        self.assertIdentical(err, None)
        self.assertFalse(tsrv.disconnecting, 'disconnecting')
        self.assertFalse(tcli.disconnecting, 'disconnecting')

        self.assertEquals(p_srv.handshake_status, 'ok')
Esempio n. 6
0
    def test_complete_exchange(self):
        tcli = StringTransport()
        tsrv = StringTransport()

        p_cli = TestHandshakeProtocol()
        p_srv = TestHandshakeProtocol()

        now = time.time()
        hs_cli = Handshaker(p_cli, now - 0.001, is_client=True)
        hs_srv = Handshaker(p_srv, now - 0.042)

        p_srv.init_handler(hs_srv.gen_handler())
        p_cli.init_handler(hs_cli.gen_handler(), do_init=False)

        p_srv.makeConnection(tsrv)
        self.assertEquals(tsrv.value(), '')

        p_cli.makeConnection(tcli)
        self.assertEquals(tcli.value(), '')

        p_cli.init_handler()

        # self.assertEquals(len(tcli.value()), 1 + 1536)
        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        # self.assertEquals(len(tsrv.value()), 1 + 1536 + 1536)
        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, None)

        err = p_cli.dataReceived(tsrv.value())
        tsrv.clear()

        self.assertIdentical(err, None)
        self.assertEquals(p_cli.handshake_status, 'ok')
        self.assertEquals(p_srv.handshake_status, None)

        err = p_srv.dataReceived(tcli.value())
        tcli.clear()

        self.assertIdentical(err, None)
        self.assertFalse(tsrv.disconnecting, 'disconnecting')
        self.assertFalse(tcli.disconnecting, 'disconnecting')

        self.assertEquals(p_srv.handshake_status, 'ok')