Home / Type/ SslEngineProvider Type — netty Architecture

SslEngineProvider Type — netty Architecture

Architecture documentation for the SslEngineProvider type/interface in AbstractSslEngineBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  dcad5906_1a2b_354d_622a_4f0edf3c8630["SslEngineProvider"]
  6665b9e5_1220_a33a_5278_90a78eece30a["AbstractSslEngineBenchmark.java"]
  dcad5906_1a2b_354d_622a_4f0edf3c8630 -->|defined in| 6665b9e5_1220_a33a_5278_90a78eece30a
  style dcad5906_1a2b_354d_622a_4f0edf3c8630 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java lines 40–101

    public enum SslEngineProvider {
        JDK {
            @Override
            SslProvider sslProvider() {
                return SslProvider.JDK;
            }
        },
        OPENSSL {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL;
            }
        },
        OPENSSL_REFCNT {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL_REFCNT;
            }
        };
        private final SslContext clientContext = newClientContext();
        private final SslContext serverContext = newServerContext();

        private SslContext newClientContext() {
            try {
                return SslContextBuilder.forClient()
                        .sslProvider(sslProvider())
                        .trustManager(InsecureTrustManagerFactory.INSTANCE)
                        .build();
            } catch (SSLException e) {
                throw new IllegalStateException(e);
            }
        }

        private SslContext newServerContext() {
            try {
                File keyFile = new File(getClass().getResource("test_unencrypted.pem").getFile());
                File crtFile = new File(getClass().getResource("test.crt").getFile());

                return SslContextBuilder.forServer(crtFile, keyFile)
                        .sslProvider(sslProvider())
                        .build();
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
        }

        SSLEngine newClientEngine(ByteBufAllocator allocator, String cipher) {
            return configureEngine(clientContext.newHandler(allocator).engine(), cipher);
        }

        SSLEngine newServerEngine(ByteBufAllocator allocator, String cipher) {
            return configureEngine(serverContext.newHandler(allocator).engine(), cipher);
        }

        abstract SslProvider sslProvider();

        static SSLEngine configureEngine(SSLEngine engine, String cipher) {
            engine.setEnabledProtocols(new String[]{ PROTOCOL_TLS_V1_2 });
            engine.setEnabledCipherSuites(new String[]{ cipher });
            return engine;
        }
    }

Frequently Asked Questions

What is the SslEngineProvider type?
SslEngineProvider is a type/interface in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java.
Where is SslEngineProvider defined?
SslEngineProvider is defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java at line 40.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free