Home / Function/ generate() — netty Function Reference

generate() — netty Function Reference

Architecture documentation for the generate() function in CertificateBuilderCertGenerator.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  89711f77_a040_a5be_19f8_69c5a51fe55c["generate()"]
  f977042f_b8a4_945b_a0f5_8b94036604f7["CertificateBuilderCertGenerator"]
  89711f77_a040_a5be_19f8_69c5a51fe55c -->|defined in| f977042f_b8a4_945b_a0f5_8b94036604f7
  style 89711f77_a040_a5be_19f8_69c5a51fe55c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/util/CertificateBuilderCertGenerator.java lines 40–83

    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();
    }

Domain

Subdomains

Frequently Asked Questions

What does generate() do?
generate() is a function in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/util/CertificateBuilderCertGenerator.java.
Where is generate() defined?
generate() is defined in handler/src/main/java/io/netty/handler/ssl/util/CertificateBuilderCertGenerator.java at line 40.

Analyze Your Own Codebase

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

Try Supermodel Free