Home / Function/ QuicheQuicSslContext() — netty Function Reference

QuicheQuicSslContext() — netty Function Reference

Architecture documentation for the QuicheQuicSslContext() function in QuicheQuicSslContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  4c11817f_e3df_d049_1a15_4c91d56786ee["QuicheQuicSslContext()"]
  ea71e2fc_ba66_6542_2be3_948d21522ebd["QuicheQuicSslContext"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|defined in| ea71e2fc_ba66_6542_2be3_948d21522ebd
  f51fe718_2235_ebd0_fc8b_48e726612e61["add()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| f51fe718_2235_ebd0_fc8b_48e726612e61
  d259fbec_d17c_642c_2c9b_3340441ddb81["BoringSSLAsyncPrivateKeyMethodAdapter()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| d259fbec_d17c_642c_2c9b_3340441ddb81
  c847f4c9_fcd2_70a9_1528_191d4644c2b6["QuicClientSessionCache()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| c847f4c9_fcd2_70a9_1528_191d4644c2b6
  7aa1baed_7f72_e9ff_a127_01873d1e70f8["boringSSLVerifyModeForServer()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 7aa1baed_7f72_e9ff_a127_01873d1e70f8
  e2670f42_d48b_71bc_c2f9_9d72ac3e79d9["NativeSslContext()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| e2670f42_d48b_71bc_c2f9_9d72ac3e79d9
  7bfe1cde_1667_3525_a51b_1e3b08810110["QuicheQuicApplicationProtocolNegotiator()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 7bfe1cde_1667_3525_a51b_1e3b08810110
  3c4d5e66_b349_d95a_63ea_c8d3f70edbb8["address()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 3c4d5e66_b349_d95a_63ea_c8d3f70edbb8
  572858d2_7081_a4cf_a817_6c9232607380["QuicheQuicSslSessionContext()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 572858d2_7081_a4cf_a817_6c9232607380
  3fc73f85_9f2a_b38b_ae96_69d69b1158ae["setSessionCacheSize()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 3fc73f85_9f2a_b38b_ae96_69d69b1158ae
  3bae5a84_999d_bbba_ea27_bb9f1888b685["setSessionTimeout()"]
  4c11817f_e3df_d049_1a15_4c91d56786ee -->|calls| 3bae5a84_999d_bbba_ea27_bb9f1888b685
  style 4c11817f_e3df_d049_1a15_4c91d56786ee fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicSslContext.java lines 154–283

    QuicheQuicSslContext(boolean server, long sessionTimeout, long sessionCacheSize,
                         ClientAuth clientAuth, @Nullable TrustManagerFactory trustManagerFactory,
                         @Nullable KeyManagerFactory keyManagerFactory, String password,
                         @Nullable Mapping<? super String, ? extends QuicSslContext> mapping,
                         @Nullable Boolean earlyData, @Nullable BoringSSLKeylog keylog,
                         String[] applicationProtocols, Map.Entry<SslContextOption<?>, Object>... ctxOptions) {
        Quic.ensureAvailability();
        this.server = server;
        this.clientAuth = server ? checkNotNull(clientAuth, "clientAuth") : ClientAuth.NONE;
        final X509TrustManager trustManager;
        if (trustManagerFactory == null) {
            try {
                trustManagerFactory =
                        TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                trustManagerFactory.init((KeyStore) null);
                trustManager = chooseTrustManager(trustManagerFactory);
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
        } else {
            trustManager = chooseTrustManager(trustManagerFactory);
        }
        final X509ExtendedKeyManager keyManager;
        if (keyManagerFactory == null) {
            if (server) {
                throw new IllegalArgumentException("No KeyManagerFactory");
            }
            keyManager = null;
        } else {
            keyManager = chooseKeyManager(keyManagerFactory);
        }
        String[] groups = NAMED_GROUPS;
        String[] sigalgs = EmptyArrays.EMPTY_STRINGS;
        Map<String, String> serverKeyTypes = null;
        Set<String> clientKeyTypes = null;

        if (ctxOptions != null) {
            for (Map.Entry<SslContextOption<?>, Object> ctxOpt : ctxOptions) {
                SslContextOption<?> option = ctxOpt.getKey();

                if (option == BoringSSLContextOption.GROUPS) {
                    String[] groupsArray = (String[]) ctxOpt.getValue();
                    Set<String> groupsSet = new LinkedHashSet<String>(groupsArray.length);
                    for (String group : groupsArray) {
                        groupsSet.add(GroupsConverter.toBoringSSL(group));
                    }
                    groups = groupsSet.toArray(EmptyArrays.EMPTY_STRINGS);
                } else if (option == BoringSSLContextOption.SIGNATURE_ALGORITHMS) {
                    String[] sigalgsArray = (String[]) ctxOpt.getValue();
                    Set<String> sigalgsSet = new LinkedHashSet<String>(sigalgsArray.length);
                    for (String sigalg : sigalgsArray) {
                        sigalgsSet.add(sigalg);
                    }
                    sigalgs = sigalgsSet.toArray(EmptyArrays.EMPTY_STRINGS);
                } else if (option == BoringSSLContextOption.CLIENT_KEY_TYPES) {
                    clientKeyTypes = (Set<String>) ctxOpt.getValue();
                } else if (option == BoringSSLContextOption.SERVER_KEY_TYPES) {
                    serverKeyTypes = (Map<String, String>) ctxOpt.getValue();
                } else {
                    LOGGER.debug("Skipping unsupported " + SslContextOption.class.getSimpleName()
                            + ": " + ctxOpt.getKey());
                }
            }
        }
        final BoringSSLPrivateKeyMethod privateKeyMethod;
        if (keyManagerFactory instanceof  BoringSSLKeylessManagerFactory) {
            privateKeyMethod = new BoringSSLAsyncPrivateKeyMethodAdapter(engineMap,
                    ((BoringSSLKeylessManagerFactory) keyManagerFactory).privateKeyMethod);
        } else {
            privateKeyMethod = null;
        }
        sessionCache = server ? null : new QuicClientSessionCache();
        int verifyMode = server ? boringSSLVerifyModeForServer(this.clientAuth) : BoringSSL.SSL_VERIFY_PEER;
        nativeSslContext = new NativeSslContext(BoringSSL.SSLContext_new(server, applicationProtocols,
                new BoringSSLHandshakeCompleteCallback(engineMap),
                new BoringSSLCertificateCallback(engineMap, keyManager, password, serverKeyTypes, clientKeyTypes),
                new BoringSSLCertificateVerifyCallback(engineMap, trustManager),
                mapping == null ? null : new BoringSSLTlsextServernameCallback(engineMap, mapping),
                keylog == null ? null : new BoringSSLKeylogCallback(engineMap, keylog),
                server ? null : new BoringSSLSessionCallback(engineMap, sessionCache), privateKeyMethod,
                sessionTicketCallback, verifyMode,

Domain

Subdomains

Frequently Asked Questions

What does QuicheQuicSslContext() do?
QuicheQuicSslContext() is a function in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicSslContext.java.
Where is QuicheQuicSslContext() defined?
QuicheQuicSslContext() is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicSslContext.java at line 154.
What does QuicheQuicSslContext() call?
QuicheQuicSslContext() calls 10 function(s): BoringSSLAsyncPrivateKeyMethodAdapter, NativeSslContext, QuicClientSessionCache, QuicheQuicApplicationProtocolNegotiator, QuicheQuicSslSessionContext, add, address, boringSSLVerifyModeForServer, and 2 more.

Analyze Your Own Codebase

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

Try Supermodel Free