Home / Class/ CertificateBuilderCertGenerator Class — netty Architecture

CertificateBuilderCertGenerator Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  f977042f_b8a4_945b_a0f5_8b94036604f7["CertificateBuilderCertGenerator"]
  48c2ab83_579a_5a83_c3ad_aa919f8ec601["CertificateBuilderCertGenerator.java"]
  f977042f_b8a4_945b_a0f5_8b94036604f7 -->|defined in| 48c2ab83_579a_5a83_c3ad_aa919f8ec601
  ef65f963_b7a9_4b43_8c0c_ef7e0a27371a["CertificateBuilderCertGenerator()"]
  f977042f_b8a4_945b_a0f5_8b94036604f7 -->|method| ef65f963_b7a9_4b43_8c0c_ef7e0a27371a
  36718317_aa84_47f2_5363_6aca5fc97078["isAvailable()"]
  f977042f_b8a4_945b_a0f5_8b94036604f7 -->|method| 36718317_aa84_47f2_5363_6aca5fc97078
  89711f77_a040_a5be_19f8_69c5a51fe55c["generate()"]
  f977042f_b8a4_945b_a0f5_8b94036604f7 -->|method| 89711f77_a040_a5be_19f8_69c5a51fe55c

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/util/CertificateBuilderCertGenerator.java lines 27–84

final class CertificateBuilderCertGenerator {
    private CertificateBuilderCertGenerator() {
    }

    static boolean isAvailable() {
        try {
            new CertificateBuilder();
            return true;
        } catch (Throwable ignore) {
            return false;
        }
    }

    static void generate(SelfSignedCertificate.Builder config) throws Exception {
        String fqdn = config.fqdn;
        Date notBefore = config.notBefore;
        Date notAfter = config.notAfter;
        String algorithm = config.algorithm;
        SecureRandom random = config.random;
        int bits = config.bits;
        CertificateBuilder builder = new CertificateBuilder();
        builder.setIsCertificateAuthority(true);
        if (fqdn.contains("=")) {
            builder.subject(fqdn);
        } else {
            builder.subject("CN=" + fqdn);
        }
        builder.notBefore(Instant.ofEpochMilli(notBefore.getTime()));
        builder.notAfter(Instant.ofEpochMilli(notAfter.getTime()));
        if (random != null) {
            builder.secureRandom(random);
        }
        if ("RSA".equals(algorithm)) {
            CertificateBuilder.Algorithm alg;
            switch (bits) {
                case 2048: alg = CertificateBuilder.Algorithm.rsa2048; break;
                case 3072: alg = CertificateBuilder.Algorithm.rsa3072; break;
                case 4096: alg = CertificateBuilder.Algorithm.rsa4096; break;
                case 8192: alg = CertificateBuilder.Algorithm.rsa8192; break;
                default:
                    throw new IllegalArgumentException("Unsupported RSA bit-width: " + bits);
            }
            builder.algorithm(alg);
        } else if ("EC".equals(algorithm)) {
            if (bits == 256) {
                builder.algorithm(CertificateBuilder.Algorithm.ecp256);
            } else if (bits == 384) {
                builder.algorithm(CertificateBuilder.Algorithm.ecp384);
            } else {
                throw new IllegalArgumentException("Unsupported EC-P bit-width: " + bits);
            }
        }
        X509Bundle bundle = builder.buildSelfSigned();
        config.paths = newSelfSignedCertificate(fqdn, bundle.getKeyPair().getPrivate(), bundle.getCertificate());
        config.keypair = bundle.getKeyPair();
        config.privateKey = bundle.getKeyPair().getPrivate();
    }
}

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free