Home / Class/ EnhancingX509ExtendedTrustManager Class — netty Architecture

EnhancingX509ExtendedTrustManager Class — netty Architecture

Architecture documentation for the EnhancingX509ExtendedTrustManager class in EnhancingX509ExtendedTrustManager.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  c5d2be08_7d10_3353_b854_1b0eee00afa0["EnhancingX509ExtendedTrustManager"]
  f62f442f_06ad_b026_feed_262f1225047c["EnhancingX509ExtendedTrustManager.java"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|defined in| f62f442f_06ad_b026_feed_262f1225047c
  2c5ac77e_291c_f472_a5c8_30076b80f389["EnhancingX509ExtendedTrustManager()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| 2c5ac77e_291c_f472_a5c8_30076b80f389
  c9ec471a_d240_2cbf_fddc_0146f7d1f102["checkClientTrusted()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| c9ec471a_d240_2cbf_fddc_0146f7d1f102
  7cb09430_ae31_2f23_9ea0_20866ef3f4bf["checkServerTrusted()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| 7cb09430_ae31_2f23_9ea0_20866ef3f4bf
  fe325a82_54fa_8fcb_6347_a85659a94ef3["getAcceptedIssuers()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| fe325a82_54fa_8fcb_6347_a85659a94ef3
  2eeb261a_bf22_8fb6_3cda_596b5ab85a9f["throwEnhancedCertificateException()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| 2eeb261a_bf22_8fb6_3cda_596b5ab85a9f
  6e8b10cb_ec1a_f08a_e4d5_84ac7850db3c["String()"]
  c5d2be08_7d10_3353_b854_1b0eee00afa0 -->|method| 6e8b10cb_ec1a_f08a_e4d5_84ac7850db3c

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/EnhancingX509ExtendedTrustManager.java lines 40–195

final class EnhancingX509ExtendedTrustManager extends X509ExtendedTrustManager {

    // Constants for subject alt names of type DNS and IP. See X509Certificate#getSubjectAlternativeNames() javadocs.
    static final int ALTNAME_DNS = 2;
    static final int ALTNAME_URI = 6;
    static final int ALTNAME_IP = 7;
    private static final String SEPARATOR = ", ";

    private final X509ExtendedTrustManager wrapped;

    EnhancingX509ExtendedTrustManager(X509TrustManager wrapped) {
        this.wrapped = (X509ExtendedTrustManager) wrapped;
    }

    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket)
            throws CertificateException {
        wrapped.checkClientTrusted(chain, authType, socket);
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket)
            throws CertificateException {
        try {
            wrapped.checkServerTrusted(chain, authType, socket);
        } catch (CertificateException e) {
            throwEnhancedCertificateException(e, chain,
                    socket instanceof SSLSocket ? ((SSLSocket) socket).getHandshakeSession() : null);
        }
    }

    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine)
            throws CertificateException {
        wrapped.checkClientTrusted(chain, authType, engine);
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine)
            throws CertificateException {
        try {
            wrapped.checkServerTrusted(chain, authType, engine);
        } catch (CertificateException e) {
            throwEnhancedCertificateException(e, chain, engine != null ? engine.getHandshakeSession() : null);
        }
    }

    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        wrapped.checkClientTrusted(chain, authType);
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        try {
            wrapped.checkServerTrusted(chain, authType);
        } catch (CertificateException e) {
            throwEnhancedCertificateException(e, chain, null);
        }
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return wrapped.getAcceptedIssuers();
    }

    private static void throwEnhancedCertificateException(CertificateException e, X509Certificate[] chain,
                                                          SSLSession session) throws CertificateException {
        // Matching the message is the best we can do sadly.
        String message = e.getMessage();
        if (message != null &&
                (message.startsWith("No subject alternative") || message.startsWith("No name matching"))) {
            StringBuilder sb = new StringBuilder(128);
            sb.append(message);
            // Some exception messages from sun.security.util.HostnameChecker may end with a dot that we don't need
            if (message.charAt(message.length() - 1) == '.') {
                sb.setLength(sb.length() - 1);
            }
            if (session != null) {

Frequently Asked Questions

What is the EnhancingX509ExtendedTrustManager class?
EnhancingX509ExtendedTrustManager is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/EnhancingX509ExtendedTrustManager.java.
Where is EnhancingX509ExtendedTrustManager defined?
EnhancingX509ExtendedTrustManager is defined in handler/src/main/java/io/netty/handler/ssl/EnhancingX509ExtendedTrustManager.java at line 40.

Analyze Your Own Codebase

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

Try Supermodel Free