Home / Class/ OpenSslPrivateKeyMaterial Class — netty Architecture

OpenSslPrivateKeyMaterial Class — netty Architecture

Architecture documentation for the OpenSslPrivateKeyMaterial class in OpenSslPrivateKey.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  a6dbc94e_3a02_6296_d20b_1145e0783a46["OpenSslPrivateKeyMaterial"]
  27aebda7_19ca_4bfd_9f97_d477e1270b96["OpenSslPrivateKey.java"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|defined in| 27aebda7_19ca_4bfd_9f97_d477e1270b96
  dd83a43e_c893_f73f_d89a_246009c9bc08["OpenSslPrivateKeyMaterial()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| dd83a43e_c893_f73f_d89a_246009c9bc08
  312dfe1d_544b_c0b7_d17e_6f655f8b99b0["certificateChain()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| 312dfe1d_544b_c0b7_d17e_6f655f8b99b0
  ee232ac5_c622_350b_0e78_32709c51e83b["certificateChainAddress()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| ee232ac5_c622_350b_0e78_32709c51e83b
  2a43686b_ae87_548e_fd02_2b486115069e["privateKeyAddress()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| 2a43686b_ae87_548e_fd02_2b486115069e
  aacaaf90_5d9d_1597_dc4e_6fa762359890["OpenSslKeyMaterial()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| aacaaf90_5d9d_1597_dc4e_6fa762359890
  2c378a23_fcdd_b9d3_ffd0_66a115342a4c["deallocate()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| 2c378a23_fcdd_b9d3_ffd0_66a115342a4c
  02b3bf1d_21f6_b114_5567_723b99140446["releaseChain()"]
  a6dbc94e_3a02_6296_d20b_1145e0783a46 -->|method| 02b3bf1d_21f6_b114_5567_723b99140446

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKey.java lines 122–190

    final class OpenSslPrivateKeyMaterial extends AbstractReferenceCounted implements OpenSslKeyMaterial {

        // Package-private for unit-test only
        long certificateChain;
        private final X509Certificate[] x509CertificateChain;

        OpenSslPrivateKeyMaterial(long certificateChain, X509Certificate[] x509CertificateChain) {
            this.certificateChain = certificateChain;
            this.x509CertificateChain = x509CertificateChain == null ?
                    EmptyArrays.EMPTY_X509_CERTIFICATES : x509CertificateChain;
            OpenSslPrivateKey.this.retain();
        }

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

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

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

        @Override
        public OpenSslKeyMaterial touch(Object hint) {
            OpenSslPrivateKey.this.touch(hint);
            return this;
        }

        @Override
        public OpenSslKeyMaterial retain() {
            super.retain();
            return this;
        }

        @Override
        public OpenSslKeyMaterial retain(int increment) {
            super.retain(increment);
            return this;
        }

        @Override
        public OpenSslKeyMaterial touch() {
            OpenSslPrivateKey.this.touch();
            return this;
        }

        @Override
        protected void deallocate() {
            releaseChain();
            OpenSslPrivateKey.this.release();
        }

        private void releaseChain() {
            SSL.freeX509Chain(certificateChain);
            certificateChain = 0;
        }
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free