| @@ -76,7 +76,7 @@ def genkeypair(): | |||||
| return pub, priv | return pub, priv | ||||
| class TwistedNoiseServerProtocol(twisted.internet.protocol.Protocol): | |||||
| class TwistedNoiseProtocol(twisted.internet.protocol.Protocol): | |||||
| '''This class acts as a Noise Protocol responder. The factory that | '''This class acts as a Noise Protocol responder. The factory that | ||||
| creates this Protocol is required to have the properties server_key | creates this Protocol is required to have the properties server_key | ||||
| and endpoint. | and endpoint. | ||||
| @@ -109,21 +109,28 @@ class TwistedNoiseServerProtocol(twisted.internet.protocol.Protocol): | |||||
| if not self.noise.handshake_finished: | if not self.noise.handshake_finished: | ||||
| self.transport.write(self.noise.write_message()) | self.transport.write(self.noise.write_message()) | ||||
| if self.noise.handshake_finished: | if self.noise.handshake_finished: | ||||
| self.transport.pauseProducing() | |||||
| # start the connection to the endpoint | |||||
| ep = endpoints.clientFromString(reactor, self.factory.endpoint) | |||||
| epdef = ep.connect(ClientProxyFactory(self)) | |||||
| epdef.addCallback(self.proxyConnected) | |||||
| self.handshakeFinished() | |||||
| else: | else: | ||||
| r = self.noise.decrypt(data) | r = self.noise.decrypt(data) | ||||
| self.endpoint.transport.write(r) | self.endpoint.transport.write(r) | ||||
| def proxyConnected(self, endpoint): | |||||
| def handshakeFinished(self): | |||||
| raise NotImplementedError | |||||
| def plaintextConnected(self, endpoint): | |||||
| self.endpoint = endpoint | self.endpoint = endpoint | ||||
| self.transport.resumeProducing() | self.transport.resumeProducing() | ||||
| class TwistedNoiseServerProtocol(TwistedNoiseProtocol): | |||||
| def handshakeFinished(self): | |||||
| self.transport.pauseProducing() | |||||
| # start the connection to the endpoint | |||||
| ep = endpoints.clientFromString(reactor, self.factory.endpoint) | |||||
| epdef = ep.connect(ClientProxyFactory(self)) | |||||
| epdef.addCallback(self.plaintextConnected) | |||||
| class ClientProxyProtocol(twisted.internet.protocol.Protocol): | class ClientProxyProtocol(twisted.internet.protocol.Protocol): | ||||
| def dataReceived(self, data): | def dataReceived(self, data): | ||||
| self.factory.noiseproto.encData(data) | self.factory.noiseproto.encData(data) | ||||
| @@ -189,7 +196,7 @@ class TNServerTest(unittest.TestCase): | |||||
| self.tempdir = None | self.tempdir = None | ||||
| @defer.inlineCallbacks | @defer.inlineCallbacks | ||||
| def test_testprotocol(self): | |||||
| def test_testserver(self): | |||||
| # | # | ||||
| # How this test is plumbed: | # How this test is plumbed: | ||||
| # | # | ||||