private JnlpProtocolHandler<? extends JnlpConnectionState> createClientProtocolHandler(Factory factory, boolean useNioHubClient) { return factory.create(null, executorService, selector, useNioHubClient ? hub : null, clientCtx.context(), useNioHubClient); }
westChannel.connect(eastServer.getLocalAddress()); SocketChannel eastChannel = eastServer.accept(); SSLEngine westEngine = context.createSSLEngine(); westEngine.setUseClientMode(false); westEngine.setNeedClientAuth(true); SSLEngine eastEngine = context.createSSLEngine(); eastEngine.setUseClientMode(true);
clientFactory.getClass().getSimpleName(), }); SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true);
private JnlpProtocolHandler<? extends JnlpConnectionState> createServerProtocolHandler(Factory factory, boolean useNioHubServer, String secretKey, boolean exists) { return factory.create(new JnlpClientDatabase() { @Override public boolean exists(String clientName) { return exists; } @Override public String getSecretOf(@Nonnull String clientName) { return secretKey; } }, executorService, selector, hub, serverCtx.context(), useNioHubServer); }
westChannel.connect(eastServer.getLocalAddress()); SocketChannel eastChannel = eastServer.accept(); SSLEngine westEngine = context.createSSLEngine(); westEngine.setUseClientMode(false); westEngine.setNeedClientAuth(true); SSLEngine eastEngine = context.createSSLEngine(); eastEngine.setUseClientMode(true);
clientSocketChannel.connect(serverServerSocketChannel.getLocalAddress()); SocketChannel serverSocketChannel = serverServerSocketChannel.accept(); SSLEngine serverEngine = context.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = context.createSSLEngine(); clientEngine.setUseClientMode(true);
westChannel.connect(eastServer.getLocalAddress()); SocketChannel eastChannel = eastServer.accept(); SSLEngine westEngine = context.createSSLEngine(); westEngine.setUseClientMode(false); westEngine.setNeedClientAuth(true); SSLEngine eastEngine = context.createSSLEngine(); eastEngine.setUseClientMode(true);
clientSocketChannel.connect(serverServerSocketChannel.getLocalAddress()); SocketChannel serverSocketChannel = serverServerSocketChannel.accept(); SSLEngine serverEngine = context.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = context.createSSLEngine(); clientEngine.setUseClientMode(true);
@Theory public void smokes(NetworkLayerFactory serverFactory, NetworkLayerFactory clientFactory) throws Exception { SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> client = ProtocolStack.on( clientFactory.create(selector.hub(), serverToClient.source(), clientToServer.sink())) .filter(new SSLEngineFilterLayer(clientEngine, null)) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> server = ProtocolStack.on( serverFactory.create(selector.hub(), clientToServer.source(), serverToClient.sink())) .filter(new SSLEngineFilterLayer(serverEngine, null)) .build(new IOBufferMatcherLayer()); byte[] expected = "Here is some sample data".getBytes("UTF-8"); ByteBuffer data = ByteBuffer.allocate(expected.length); data.put(expected); data.flip(); server.get().send(data); client.get().awaitByteContent(is(expected)); assertThat(client.get().asByteArray(), is(expected)); server.get().close(); client.get().awaitClose(); }
clientSocketChannel.connect(serverServerSocketChannel.getLocalAddress()); SocketChannel serverSocketChannel = serverServerSocketChannel.accept(); SSLEngine serverEngine = context.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = context.createSSLEngine(); clientEngine.setUseClientMode(true);
westChannel.connect(eastServer.getLocalAddress()); SocketChannel eastChannel = eastServer.accept(); SSLEngine westEngine = context.createSSLEngine(); westEngine.setUseClientMode(false); westEngine.setNeedClientAuth(true); SSLEngine eastEngine = context.createSSLEngine(); eastEngine.setUseClientMode(true);
clientSocketChannel.connect(serverServerSocketChannel.getLocalAddress()); SocketChannel serverSocketChannel = serverServerSocketChannel.accept(); SSLEngine serverEngine = context.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = context.createSSLEngine(); clientEngine.setUseClientMode(true);
serverLimit, clientLimit }); SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true);
batch }); SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true);
@Test public void pipeBasicBackToBackWithAckSSLEngine() throws Exception { Pipe eastToWest = Pipe.open(); Pipe westToEast = Pipe.open(); SSLEngine westEngine = context.createSSLEngine(); westEngine.setUseClientMode(false); westEngine.setNeedClientAuth(true); SSLEngine eastEngine = context.createSSLEngine(); eastEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> east = ProtocolStack.on(new BIONetworkLayer(selector.hub(), westToEast.source(), eastToWest.sink())) .filter(new AckFilterLayer()) .filter(new SSLEngineFilterLayer(eastEngine, null)) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> west = ProtocolStack.on(new BIONetworkLayer(selector.hub(), eastToWest.source(), westToEast.sink())) .filter(new AckFilterLayer()) .filter(new SSLEngineFilterLayer(westEngine, null)) .build(new IOBufferMatcherLayer()); byte[] expected = "Here is some sample data".getBytes("UTF-8"); ByteBuffer data = ByteBuffer.allocate(expected.length); data.put(expected); data.flip(); west.get().send(data); east.get().awaitByteContent(is(expected)); assertThat(east.get().asByteArray(), is(expected)); west.get().close(); east.get().awaitClose(); }
@Theory public void untrustingClientDoesNotConnect(NetworkLayerFactory serverFactory, NetworkLayerFactory clientFactory) throws Exception { SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = untrustingClientCtx.createSSLEngine(); clientEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> client = ProtocolStack.on( clientFactory.create(selector.hub(), serverToClient.source(), clientToServer.sink())) .filter(new SSLEngineFilterLayer(clientEngine, null)) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> server = ProtocolStack.on( serverFactory.create(selector.hub(), clientToServer.source(), serverToClient.sink())) .filter(new SSLEngineFilterLayer(serverEngine, null)) .build(new IOBufferMatcherLayer()); IOBufferMatcher clientMatcher = client.get(); IOBufferMatcher serverMatcher = server.get(); clientMatcher.awaitClose(); serverMatcher.awaitClose(); assertThat(clientMatcher.getCloseCause(), instanceOf(SSLHandshakeException.class)); assertThat(serverMatcher.getCloseCause(), instanceOf(ClosedChannelException.class)); }
@Theory public void expiredClientDoesNotConnect(NetworkLayerFactory serverFactory, NetworkLayerFactory clientFactory) throws Exception { SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = expiredClientCtx.createSSLEngine(); clientEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> client = ProtocolStack.on( clientFactory.create(selector.hub(), serverToClient.source(), clientToServer.sink())) .filter(new SSLEngineFilterLayer(clientEngine, null)) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> server = ProtocolStack.on( serverFactory.create(selector.hub(), clientToServer.source(), serverToClient.sink())) .filter(new SSLEngineFilterLayer(serverEngine, null)) .build(new IOBufferMatcherLayer()); IOBufferMatcher clientMatcher = client.get(); IOBufferMatcher serverMatcher = server.get(); clientMatcher.awaitClose(); serverMatcher.awaitClose(); assertThat(clientMatcher.getCloseCause(), instanceOf(ClosedChannelException.class)); assertThat(serverMatcher.getCloseCause(), instanceOf(SSLHandshakeException.class)); }
@Theory public void clientDoesNotConnectToNotYetValidServer(NetworkLayerFactory serverFactory, NetworkLayerFactory clientFactory) throws Exception { SSLEngine serverEngine = notYetValidServerCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = expiredClientCtx.createSSLEngine(); clientEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> client = ProtocolStack.on( clientFactory.create(selector.hub(), serverToClient.source(), clientToServer.sink())) .filter(new SSLEngineFilterLayer(clientEngine, null)) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> server = ProtocolStack.on( serverFactory.create(selector.hub(), clientToServer.source(), serverToClient.sink())) .filter(new SSLEngineFilterLayer(serverEngine, null)) .build(new IOBufferMatcherLayer()); IOBufferMatcher clientMatcher = client.get(); IOBufferMatcher serverMatcher = server.get(); clientMatcher.awaitClose(); serverMatcher.awaitClose(); assertThat(clientMatcher.getCloseCause(), instanceOf(SSLHandshakeException.class)); assertThat(serverMatcher.getCloseCause(), instanceOf(ClosedChannelException.class)); }
@Theory public void clientRejectsServer(NetworkLayerFactory serverFactory, NetworkLayerFactory clientFactory) throws Exception { SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true); ProtocolStack<IOBufferMatcher> client = ProtocolStack.on( clientFactory.create(selector.hub(), serverToClient.source(), clientToServer.sink())) .filter(new SSLEngineFilterLayer(clientEngine, new SSLEngineFilterLayer.Listener() { @Override public void onHandshakeCompleted(SSLSession session) throws ConnectionRefusalException { throw new ConnectionRefusalException("Bad server"); } })) .build(new IOBufferMatcherLayer()); ProtocolStack<IOBufferMatcher> server = ProtocolStack.on( serverFactory.create(selector.hub(), clientToServer.source(), serverToClient.sink())) .filter(new SSLEngineFilterLayer(serverEngine, null)) .build(new IOBufferMatcherLayer()); IOBufferMatcher clientMatcher = client.get(); IOBufferMatcher serverMatcher = server.get(); clientMatcher.awaitClose(); serverMatcher.awaitClose(); assertThat(clientMatcher.getCloseCause(), instanceOf(ConnectionRefusalException.class)); assertThat(serverMatcher.getCloseCause(), instanceOf(ClosedChannelException.class)); }
batch }); SSLEngine serverEngine = serverCtx.createSSLEngine(); serverEngine.setUseClientMode(false); serverEngine.setNeedClientAuth(true); SSLEngine clientEngine = clientCtx.createSSLEngine(); clientEngine.setUseClientMode(true);