Home / Class/ DefaultOpenSslKeyMaterial Class — netty Architecture

DefaultOpenSslKeyMaterial Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  df379969_28dd_4cf9_4d9f_dc7173ff2664["DefaultOpenSslKeyMaterial"]
  93e4b63a_3505_0416_695c_b9a9240d2d12["DefaultOpenSslKeyMaterial.java"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|defined in| 93e4b63a_3505_0416_695c_b9a9240d2d12
  982e3c85_64d6_f6d5_07b8_c94982585d12["DefaultOpenSslKeyMaterial()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 982e3c85_64d6_f6d5_07b8_c94982585d12
  0ecb0c33_c9ba_9f4d_e150_59533a4deeaa["certificateChain()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 0ecb0c33_c9ba_9f4d_e150_59533a4deeaa
  9427c313_2bda_f346_b6df_dbe5d533cb03["certificateChainAddress()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 9427c313_2bda_f346_b6df_dbe5d533cb03
  3c8d90df_dec6_0d53_1138_95b17892768c["privateKeyAddress()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 3c8d90df_dec6_0d53_1138_95b17892768c
  3cdf3b9b_74b9_8c55_9059_7678d869028e["deallocate()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 3cdf3b9b_74b9_8c55_9059_7678d869028e
  4ad55462_f0a0_9cca_e987_98be7f0222dd["release()"]
  df379969_28dd_4cf9_4d9f_dc7173ff2664 -->|method| 4ad55462_f0a0_9cca_e987_98be7f0222dd

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/DefaultOpenSslKeyMaterial.java lines 27–126

final class DefaultOpenSslKeyMaterial extends AbstractReferenceCounted implements OpenSslKeyMaterial {

    private static final ResourceLeakDetector<DefaultOpenSslKeyMaterial> leakDetector =
            ResourceLeakDetectorFactory.instance().newResourceLeakDetector(DefaultOpenSslKeyMaterial.class);
    private final ResourceLeakTracker<DefaultOpenSslKeyMaterial> leak;
    private final X509Certificate[] x509CertificateChain;
    private long chain;
    private long privateKey;

    DefaultOpenSslKeyMaterial(long chain, long privateKey, X509Certificate[] x509CertificateChain) {
        this.chain = chain;
        this.privateKey = privateKey;
        this.x509CertificateChain = x509CertificateChain;
        leak = leakDetector.track(this);
    }

    @Override
    public X509Certificate[] certificateChain() {
        return x509CertificateChain.clone();
    }

    @Override
    public long certificateChainAddress() {
        if (refCnt() <= 0) {
            throw new IllegalReferenceCountException();
        }
        return chain;
    }

    @Override
    public long privateKeyAddress() {
        if (refCnt() <= 0) {
            throw new IllegalReferenceCountException();
        }
        return privateKey;
    }

    @Override
    protected void deallocate() {
        SSL.freeX509Chain(chain);
        chain = 0;
        SSL.freePrivateKey(privateKey);
        privateKey = 0;
        if (leak != null) {
            boolean closed = leak.close(this);
            assert closed;
        }
    }

    @Override
    public DefaultOpenSslKeyMaterial retain() {
        if (leak != null) {
            leak.record();
        }
        super.retain();
        return this;
    }

    @Override
    public DefaultOpenSslKeyMaterial retain(int increment) {
        if (leak != null) {
            leak.record();
        }
        super.retain(increment);
        return this;
    }

    @Override
    public DefaultOpenSslKeyMaterial touch() {
        if (leak != null) {
            leak.record();
        }
        super.touch();
        return this;
    }

    @Override
    public DefaultOpenSslKeyMaterial touch(Object hint) {
        if (leak != null) {
            leak.record(hint);
        }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free