public async Task Secure() { var state = 0; var block = new AutoResetEvent(false); var raw = File.ReadAllBytes("localhost.pfx"); var certificate = new X509Certificate2(raw, "test"); using (var server = new FeatherTcpServer <BinaryMessage>()) { server.OnMessageReceived += (endPoint, message) => { if (state == 0) { Assert.Equal(TestPayload1, message.Export().ToArray()); state++; } else if (state == 1) { Assert.Equal(TestPayload2, message.Export().ToArray()); state++; block.Set(); } else { throw new Exception(); } }; server.ListenSecure(13008, certificate); using (var client = new FeatherTcpClient <BinaryMessage>()) { await client.ConnectSecureAsync("localhost", 13008, "localhost", (object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return(true); // Ignore that it's a self-signed cert }); await client.SendAsync(TestMessage1); await client.SendAsync(TestMessage2); block.WaitOne(1000); } } Assert.Equal(2, state); }