Home / Class/ OpenJdkSelfSignedCertGenerator Class — netty Architecture

OpenJdkSelfSignedCertGenerator Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  1da85bed_718c_a614_6e29_892846cb43ba["OpenJdkSelfSignedCertGenerator"]
  3e17b364_1670_faba_2f27_0648d8d71f4c["OpenJdkSelfSignedCertGenerator.java"]
  1da85bed_718c_a614_6e29_892846cb43ba -->|defined in| 3e17b364_1670_faba_2f27_0648d8d71f4c
  11376dd1_3e7a_c28c_d430_db387ea86275["generate()"]
  1da85bed_718c_a614_6e29_892846cb43ba -->|method| 11376dd1_3e7a_c28c_d430_db387ea86275
  e727e14a_c301_7f06_d536_d137189988d5["OpenJdkSelfSignedCertGenerator()"]
  1da85bed_718c_a614_6e29_892846cb43ba -->|method| e727e14a_c301_7f06_d536_d137189988d5

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/util/OpenJdkSelfSignedCertGenerator.java lines 44–342

final class OpenJdkSelfSignedCertGenerator {
    private static final InternalLogger logger =
            InternalLoggerFactory.getInstance(OpenJdkSelfSignedCertGenerator.class);
    private static final MethodHandle CERT_INFO_SET_HANDLE;
    private static final MethodHandle ISSUER_NAME_CONSTRUCTOR;
    private static final MethodHandle CERT_IMPL_CONSTRUCTOR;
    private static final MethodHandle X509_CERT_INFO_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_VERSION_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_SUBJECT_NAME_CONSTRUCTOR;
    private static final MethodHandle X500_NAME_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_SERIAL_NUMBER_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_VALIDITY_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_X509_KEY_CONSTRUCTOR;
    private static final MethodHandle CERTIFICATE_ALORITHM_ID_CONSTRUCTOR;
    private static final MethodHandle CERT_IMPL_GET_HANDLE;
    private static final MethodHandle CERT_IMPL_SIGN_HANDLE;
    private static final MethodHandle ALGORITHM_ID_GET_HANDLE;

    private static final boolean SUPPORTED;

    // Use reflection as JDK20+ did change things quite a bit.
    static {
        final MethodHandles.Lookup lookup = MethodHandles.lookup();

        final Class<?> x509CertInfoClass;
        final Class<?> x500NameClass;
        final Class<?> certificateIssuerNameClass;
        final Class<?> x509CertImplClass;
        final Class<?> certificateVersionClass;
        final Class<?> certificateSubjectNameClass;
        final Class<?> certificateSerialNumberClass;
        final Class<?> certificateValidityClass;
        final Class<?> certificateX509KeyClass;
        final Class<?> algorithmIdClass;
        final Class<?> certificateAlgorithmIdClass;

        boolean supported;
        MethodHandle certInfoSetHandle = null;
        MethodHandle x509CertInfoConstructor = null;
        MethodHandle issuerNameConstructor = null;
        MethodHandle certImplConstructor = null;
        MethodHandle x500NameConstructor = null;
        MethodHandle certificateVersionConstructor = null;
        MethodHandle certificateSubjectNameConstructor = null;
        MethodHandle certificateSerialNumberConstructor = null;
        MethodHandle certificateValidityConstructor = null;
        MethodHandle certificateX509KeyConstructor = null;
        MethodHandle certificateAlgorithmIdConstructor = null;
        MethodHandle certImplGetHandle = null;
        MethodHandle certImplSignHandle = null;
        MethodHandle algorithmIdGetHandle = null;

        try {
            Object maybeClasses = AccessController.doPrivileged(new PrivilegedAction<Object>() {
                @Override
                public Object run() {
                    try {
                        List<Class<?>> classes = new ArrayList<>();
                        classes.add(Class.forName("sun.security.x509.X509CertInfo", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.X500Name", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateIssuerName", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.X509CertImpl", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateVersion", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateSubjectName", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateSerialNumber", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateValidity", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateX509Key", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.AlgorithmId", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));
                        classes.add(Class.forName("sun.security.x509.CertificateAlgorithmId", false,
                                PlatformDependent.getClassLoader(OpenJdkSelfSignedCertGenerator.class)));

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free