SniClientJava8TestUtil Class — netty Architecture
Architecture documentation for the SniClientJava8TestUtil class in SniClientJava8TestUtil.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 25960dec_3844_5bbd_3083_848ea070caef["SniClientJava8TestUtil"] b26d2292_889b_aec4_10cf_88501f539099["SniClientJava8TestUtil.java"] 25960dec_3844_5bbd_3083_848ea070caef -->|defined in| b26d2292_889b_aec4_10cf_88501f539099 6c0dcf4a_72f0_d4fa_656f_46a24d964782["SniClientJava8TestUtil()"] 25960dec_3844_5bbd_3083_848ea070caef -->|method| 6c0dcf4a_72f0_d4fa_656f_46a24d964782 75c3f3bc_b7dc_66da_afec_39001e55721e["testSniClient()"] 25960dec_3844_5bbd_3083_848ea070caef -->|method| 75c3f3bc_b7dc_66da_afec_39001e55721e 9ca4cda7_1660_5ecb_777f_e15c90a21b7f["assertSSLSession()"] 25960dec_3844_5bbd_3083_848ea070caef -->|method| 9ca4cda7_1660_5ecb_777f_e15c90a21b7f 6f311a48_e6cc_8776_114c_ab1b7baaa41b["TrustManagerFactory()"] 25960dec_3844_5bbd_3083_848ea070caef -->|method| 6f311a48_e6cc_8776_114c_ab1b7baaa41b 86227cee_7e5a_5a57_a651_a59222fa026e["KeyManagerFactory()"] 25960dec_3844_5bbd_3083_848ea070caef -->|method| 86227cee_7e5a_5a57_a651_a59222fa026e
Relationship Graph
Source Code
handler/src/test/java/io/netty/handler/ssl/SniClientJava8TestUtil.java lines 78–347
final class SniClientJava8TestUtil {
private SniClientJava8TestUtil() { }
static void testSniClient(SslProvider sslClientProvider, SslProvider sslServerProvider, final boolean match)
throws Exception {
final String sniHost = "sni.netty.io";
SelfSignedCertificate cert = CachedSelfSignedCertificate.getCachedCertificate();
LocalAddress address = new LocalAddress("test");
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, LocalIoHandler.newFactory());
SslContext sslServerContext = null;
SslContext sslClientContext = null;
Channel sc = null;
Channel cc = null;
try {
sslServerContext = SslContextBuilder.forServer(cert.key(), cert.cert())
.sslProvider(sslServerProvider).build();
final Promise<Void> promise = group.next().newPromise();
ServerBootstrap sb = new ServerBootstrap();
final SslContext finalContext = sslServerContext;
sc = sb.group(group).channel(LocalServerChannel.class).childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
SslHandler handler = finalContext.newHandler(ch.alloc());
SSLParameters parameters = handler.engine().getSSLParameters();
SNIMatcher matcher = new SNIMatcher(0) {
@Override
public boolean matches(SNIServerName sniServerName) {
return match;
}
};
parameters.setSNIMatchers(Collections.singleton(matcher));
handler.engine().setSSLParameters(parameters);
ch.pipeline().addFirst(handler);
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof SslHandshakeCompletionEvent) {
SslHandshakeCompletionEvent event = (SslHandshakeCompletionEvent) evt;
if (match) {
if (event.isSuccess()) {
promise.setSuccess(null);
} else {
promise.setFailure(event.cause());
}
} else {
if (event.isSuccess()) {
promise.setFailure(new AssertionError("expected SSLException"));
} else {
Throwable cause = event.cause();
if (cause instanceof SSLException) {
promise.setSuccess(null);
} else {
promise.setFailure(
new AssertionError("cause not of type SSLException: " + cause));
}
}
}
}
}
});
}
}).bind(address).syncUninterruptibly().channel();
sslClientContext = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE)
.sslProvider(sslClientProvider).build();
SslHandler sslHandler = new SslHandler(
sslClientContext.newEngine(ByteBufAllocator.DEFAULT, sniHost, -1));
Bootstrap cb = new Bootstrap();
cc = cb.group(group).channel(LocalChannel.class).handler(sslHandler)
.connect(address).syncUninterruptibly().channel();
promise.syncUninterruptibly();
sslHandler.handshakeFuture().syncUninterruptibly();
} finally {
if (cc != null) {
cc.close().syncUninterruptibly();
Source
Frequently Asked Questions
What is the SniClientJava8TestUtil class?
SniClientJava8TestUtil is a class in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SniClientJava8TestUtil.java.
Where is SniClientJava8TestUtil defined?
SniClientJava8TestUtil is defined in handler/src/test/java/io/netty/handler/ssl/SniClientJava8TestUtil.java at line 78.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free