Home / Function/ tryLoading() — netty Function Reference

tryLoading() — netty Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  c933e0ba_9455_436a_b4a5_ee5470ce92d5["tryLoading()"]
  3d807587_1576_ed5a_5887_67583b16915a["BouncyCastleUtil"]
  c933e0ba_9455_436a_b4a5_ee5470ce92d5 -->|defined in| 3d807587_1576_ed5a_5887_67583b16915a
  a940954c_5e1f_29aa_d241_be9913b41a29["ensureLoaded()"]
  a940954c_5e1f_29aa_d241_be9913b41a29 -->|calls| c933e0ba_9455_436a_b4a5_ee5470ce92d5
  style c933e0ba_9455_436a_b4a5_ee5470ce92d5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/util/BouncyCastleUtil.java lines 165–233

    @SuppressWarnings("unchecked")
    private static void tryLoading() {
        AccessController.doPrivileged((PrivilegedAction<?>) () -> {
            try {
                // Check for bcprov-jdk18on or bc-fips:
                Provider provider = Security.getProvider(BC_PROVIDER_NAME);
                if (provider == null) {
                    provider = Security.getProvider(BC_FIPS_PROVIDER_NAME);
                }
                if (provider == null) {
                    ClassLoader classLoader = BouncyCastleUtil.class.getClassLoader();
                    Class<Provider> bcProviderClass;
                    try {
                        bcProviderClass = (Class<Provider>) Class.forName(BC_PROVIDER, true, classLoader);
                    } catch (ClassNotFoundException e) {
                        try {
                            bcProviderClass = (Class<Provider>) Class.forName(BC_FIPS_PROVIDER, true, classLoader);
                        } catch (ClassNotFoundException ex) {
                            ThrowableUtil.addSuppressed(e, ex);
                            throw e;
                        }
                    }
                    provider = bcProviderClass.getConstructor().newInstance();
                }
                bcProviderJce = provider;
                logger.debug("Bouncy Castle provider available");
            } catch (Throwable e) {
                logger.debug("Cannot load Bouncy Castle provider", e);
                unavailabilityCauseBcProv = e;
            }

            try {
                // Check for bcpkix-jdk18on:
                ClassLoader classLoader = BouncyCastleUtil.class.getClassLoader();
                Provider provider = bcProviderJce;
                if (provider != null) {
                    // Use provider class loader in case it was loaded by the system loader.
                    classLoader = provider.getClass().getClassLoader();
                }
                Class.forName(BC_PEMPARSER, true, classLoader);
                logger.debug("Bouncy Castle PKIX available");
            } catch (Throwable e) {
                logger.debug("Cannot load Bouncy Castle PKIX", e);
                unavailabilityCauseBcPkix = e;
            }

            try {
                // Check for bctls-jdk18on:
                ClassLoader classLoader = BouncyCastleUtil.class.getClassLoader();
                Provider provider = Security.getProvider(BC_JSSE_PROVIDER_NAME);
                if (provider != null) {
                    // Use provider class loader in case it was loaded by the system loader.
                    classLoader = provider.getClass().getClassLoader();
                } else {
                    Class<?> providerClass = Class.forName(BC_JSSE_PROVIDER, true, classLoader);
                    provider = (Provider) providerClass.getConstructor().newInstance();
                }
                bcSSLEngineClass = (Class<? extends SSLEngine>) Class.forName(BC_JSSE_SSLENGINE, true, classLoader);
                Class.forName(BC_JSSE_ALPN_SELECTOR, true, classLoader);
                bcProviderJsse = provider;
                logger.debug("Bouncy Castle JSSE available");
            } catch (Throwable e) {
                logger.debug("Cannot load Bouncy Castle TLS", e);
                unavailabilityCauseBcTls = e;
            }
            attemptedLoading = true;
            return null;
        });
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does tryLoading() do?
tryLoading() is a function in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/util/BouncyCastleUtil.java.
Where is tryLoading() defined?
tryLoading() is defined in handler/src/main/java/io/netty/handler/ssl/util/BouncyCastleUtil.java at line 165.
What calls tryLoading()?
tryLoading() is called by 1 function(s): ensureLoaded.

Analyze Your Own Codebase

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

Try Supermodel Free