def test_client_only(self, tctx: context.Context): """Test TLS with client only""" playbook, client_layer, tssl_client = make_client_tls_layer(tctx) client_layer.debug = " " assert not tctx.client.tls_established # Send ClientHello, receive ServerHello data = tutils.Placeholder(bytes) assert ( playbook >> events.DataReceived(tctx.client, tssl_client.bio_read()) << tls.TlsClienthelloHook(tutils.Placeholder()) >> tutils.reply() << tls.TlsStartHook(tutils.Placeholder()) >> reply_tls_start() << commands.SendData(tctx.client, data) ) tssl_client.bio_write(data()) tssl_client.do_handshake() # Finish Handshake interact(playbook, tctx.client, tssl_client) assert tssl_client.obj.getpeercert(True) assert tctx.client.tls_established # Echo _test_echo(playbook, tssl_client, tctx.client) other_server = context.Server(None) assert ( playbook >> events.DataReceived(other_server, b"Plaintext") << commands.SendData(other_server, b"plaintext") )
def test_basic(self): s = context.Server(("address", 22)) assert repr(s) assert str(s) s.timestamp_tls_setup = 1607780791 assert str(s) s.alpn = b"foo" s.sockname = ("127.0.0.1", 54321) assert str( s) == "Server(address:22, state=closed, alpn=foo, src_port=54321)"
def create(self, method: str, url: str) -> None: try: req = http.HTTPRequest.make(method.upper(), url) except ValueError as e: raise exceptions.CommandError("Invalid URL: %s" % e) c = context.Client(("", 0), ("", 0), req.timestamp_start - 0.0001) s = context.Server((req.host, req.port)) f = http.HTTPFlow(c, s) f.request = req f.request.headers["Host"] = req.host self.add([f])
def __init__(self, ctx: context.Context): super().__init__(ctx, context.Server(None))
def test_basic(self): s = context.Server(("address", 22)) assert repr(s)
def tconn() -> context.Server: return context.Server(None)