Home / Function/ addExtensions() — netty Function Reference

addExtensions() — netty Function Reference

Architecture documentation for the addExtensions() function in CertificateBuilder.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  289e8fd2_3516_bf8c_5bc7_04d3ee513ffc["addExtensions()"]
  4aeffc80_93f6_788a_f8c6_901cee3b8997["CertificateBuilder"]
  289e8fd2_3516_bf8c_5bc7_04d3ee513ffc -->|defined in| 4aeffc80_93f6_788a_f8c6_901cee3b8997
  9b75bebe_dc8c_ed87_dffb_5dd2fde050c1["X509Bundle()"]
  9b75bebe_dc8c_ed87_dffb_5dd2fde050c1 -->|calls| 289e8fd2_3516_bf8c_5bc7_04d3ee513ffc
  style 289e8fd2_3516_bf8c_5bc7_04d3ee513ffc fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

pkitesting/src/main/java/io/netty/pkitesting/CertificateBuilder.java lines 863–916

    private void addExtensions(V3TBSCertificateGenerator tbsCert) throws Exception {
        ExtensionsGenerator generator = new ExtensionsGenerator();
        if (isCertificateAuthority) {
            final BasicConstraints basicConstraints;
            if (pathLengthConstraint.isPresent()) {
                basicConstraints = new BasicConstraints(pathLengthConstraint.getAsInt());
            } else {
                basicConstraints = new BasicConstraints(true);
            }
            final byte[] basicConstraintsBytes = basicConstraints.getEncoded("DER");
            generator.addExtension(new Extension(Extension.basicConstraints, true, basicConstraintsBytes));
        }
        if (keyUsage != null) {
            generator.addExtension(keyUsage);
        }

        if (!extendedKeyUsage.isEmpty()) {
            KeyPurposeId[] usages = new KeyPurposeId[extendedKeyUsage.size()];
            String[] usagesStrings = extendedKeyUsage.toArray(EmptyArrays.EMPTY_STRINGS);
            for (int i = 0; i < usagesStrings.length; i++) {
                usages[i] = KeyPurposeId.getInstance(new ASN1ObjectIdentifier(usagesStrings[i]));
            }
            byte[] der = new org.bouncycastle.asn1.x509.ExtendedKeyUsage(usages).getEncoded("DER");
            generator.addExtension(new Extension(Extension.extendedKeyUsage, false, der));
        }

        if (!subjectAlternativeNames.isEmpty()) {
            // SAN is critical extension if subject is empty sequence:
            boolean critical = subject.getName().isEmpty();
            byte[] result;
            GeneralNames generalNames = new GeneralNames(subjectAlternativeNames.toArray(EMPTY_GENERAL_NAMES));
            try {
                result = generalNames.getEncoded("DER");
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
            generator.addExtension(new Extension(Extension.subjectAlternativeName, critical, result));
        }

        if (!crlDistributionPoints.isEmpty()) {
            generator.addExtension(Extension.create(
                    Extension.cRLDistributionPoints,
                    false,
                    new CRLDistPoint(crlDistributionPoints.toArray(EMPTY_DIST_POINTS))));
        }

        for (BuilderCallback callback : modifierCallbacks) {
            callback.modify(generator);
        }

        if (!generator.isEmpty()) {
            tbsCert.setExtensions(generator.generate());
        }
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does addExtensions() do?
addExtensions() is a function in the netty codebase, defined in pkitesting/src/main/java/io/netty/pkitesting/CertificateBuilder.java.
Where is addExtensions() defined?
addExtensions() is defined in pkitesting/src/main/java/io/netty/pkitesting/CertificateBuilder.java at line 863.
What calls addExtensions()?
addExtensions() is called by 1 function(s): X509Bundle.

Analyze Your Own Codebase

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

Try Supermodel Free