Home / Class/ ExtendedOpenSslSession Class — netty Architecture

ExtendedOpenSslSession Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  835034fc_685f_5f00_94f5_614858a55cc9["ExtendedOpenSslSession"]
  c12c78b8_bda0_22c4_51a4_8212623d53b4["ExtendedOpenSslSession.java"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|defined in| c12c78b8_bda0_22c4_51a4_8212623d53b4
  13f48e57_13fa_d6ab_57e4_5f07d6bcdd48["ExtendedOpenSslSession()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 13f48e57_13fa_d6ab_57e4_5f07d6bcdd48
  ddfaea7e_ab09_929a_4b21_00d182356eb1["getRequestedServerNames()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| ddfaea7e_ab09_929a_4b21_00d182356eb1
  ee31c808_9c4e_c91b_a906_5604b2419b32["getStatusResponses()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| ee31c808_9c4e_c91b_a906_5604b2419b32
  896a5b9a_5509_2cf6_31eb_056cd34f681b["prepareHandshake()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 896a5b9a_5509_2cf6_31eb_056cd34f681b
  49cc3bb1_614b_0a21_3ade_59547e460f08["keyValueStorage()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 49cc3bb1_614b_0a21_3ade_59547e460f08
  a1248ee9_5cf8_1522_6c46_084f78846168["OpenSslSessionId()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| a1248ee9_5cf8_1522_6c46_084f78846168
  10c2e2b0_b15a_3005_ea76_3917d35acc66["setSessionDetails()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 10c2e2b0_b15a_3005_ea76_3917d35acc66
  90078637_3c63_c92c_58ca_075b57cba7a6["setLocalCertificate()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 90078637_3c63_c92c_58ca_075b57cba7a6
  9e489775_4a92_7528_507b_daf66db2b8c2["getPeerSupportedSignatureAlgorithms()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 9e489775_4a92_7528_507b_daf66db2b8c2
  07bfb221_4088_8a73_78e9_736f5107a1cb["tryExpandApplicationBufferSize()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 07bfb221_4088_8a73_78e9_736f5107a1cb
  00f75c3a_dad7_c443_c23d_4b5ef2d46ccb["getLocalSupportedSignatureAlgorithms()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| 00f75c3a_dad7_c443_c23d_4b5ef2d46ccb
  ca87c1ba_d71f_1b79_ea6b_81c069c094bd["getId()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| ca87c1ba_d71f_1b79_ea6b_81c069c094bd
  c24353f0_f7f6_92fa_644a_8055af4f315a["OpenSslSessionContext()"]
  835034fc_685f_5f00_94f5_614858a55cc9 -->|method| c24353f0_f7f6_92fa_644a_8055af4f315a

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/ExtendedOpenSslSession.java lines 37–270

abstract class ExtendedOpenSslSession extends ExtendedSSLSession implements OpenSslInternalSession {

    // TODO: use OpenSSL API to actually fetch the real data but for now just do what Conscrypt does:
    // https://github.com/google/conscrypt/blob/1.2.0/common/
    // src/main/java/org/conscrypt/Java7ExtendedSSLSession.java#L32
    private static final String[] LOCAL_SUPPORTED_SIGNATURE_ALGORITHMS = {
            "SHA512withRSA", "SHA512withECDSA", "SHA384withRSA", "SHA384withECDSA", "SHA256withRSA",
            "SHA256withECDSA", "SHA224withRSA", "SHA224withECDSA", "SHA1withRSA", "SHA1withECDSA",
            "RSASSA-PSS",
    };

    private final OpenSslInternalSession wrapped;

    ExtendedOpenSslSession(OpenSslInternalSession wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public abstract List<SNIServerName> getRequestedServerNames();

    // Do not mark as override so we can compile on java8.
    public List<byte[]> getStatusResponses() {
        // Just return an empty list for now until we support it as otherwise we will fail in java9
        // because of their sun.security.ssl.X509TrustManagerImpl class.
        return Collections.emptyList();
    }

    @Override
    public void prepareHandshake() {
        wrapped.prepareHandshake();
    }

    @Override
    public Map<String, Object> keyValueStorage() {
        return wrapped.keyValueStorage();
    }

    @Override
    public OpenSslSessionId sessionId() {
        return wrapped.sessionId();
    }

    @Override
    public void setSessionDetails(long creationTime, long lastAccessedTime, OpenSslSessionId id,
                                  Map<String, Object> keyValueStorage) {
        wrapped.setSessionDetails(creationTime, lastAccessedTime, id, keyValueStorage);
    }

    @Override
    public final void setLocalCertificate(Certificate[] localCertificate) {
        wrapped.setLocalCertificate(localCertificate);
    }

    @Override
    public String[] getPeerSupportedSignatureAlgorithms() {
        return EmptyArrays.EMPTY_STRINGS;
    }

    @Override
    public final void tryExpandApplicationBufferSize(int packetLengthDataOnly) {
        wrapped.tryExpandApplicationBufferSize(packetLengthDataOnly);
    }

    @Override
    public final String[] getLocalSupportedSignatureAlgorithms() {
        return LOCAL_SUPPORTED_SIGNATURE_ALGORITHMS.clone();
    }

    @Override
    public final byte[] getId() {
        return wrapped.getId();
    }

    @Override
    public final OpenSslSessionContext getSessionContext() {
        return wrapped.getSessionContext();
    }

    @Override
    public final long getCreationTime() {
        return wrapped.getCreationTime();

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free