package io.github.olivierlemasle.ca.ext; import org.bouncycastle.asn1.x509.CRLDistPoint; import org.bouncycastle.asn1.x509.DistributionPoint; import org.bouncycastle.asn1.x509.DistributionPointName; import org.bouncycastle.asn1.x509.Extension; import org.bouncycastle.asn1.x509.GeneralName; import org.bouncycastle.asn1.x509.GeneralNames; import org.bouncycastle.asn1.x509.ReasonFlags; /** * CRL Distribution Points */ public class CrlDistPointExtension extends CertExtension { CrlDistPointExtension(final DistributionPoint... points) { super(Extension.cRLDistributionPoints, false, new CRLDistPoint(points)); } /** * Creates a {@link CrlDistPointExtension} with only a {@code distributionPoint} URI (no {@code reasons}, no * {@code cRLIssuer} specified). */ public static CrlDistPointExtension create(final String uri) { return create(NameType.URI, uri); } /** * Creates a {@link CrlDistPointExtension} with only a {@code distributionPoint} {@link GeneralName} (no * {@code reasons}, no {@code cRLIssuer} specified). */ public static CrlDistPointExtension create(final NameType type, final String name) { return create(type, name, null, null, null); } public static CrlDistPointExtension create(final NameType distribPointNameType, final String distribPointName, final NameType crlIssuerNameType, final String crlIssuer, final ReasonFlags reasons) { final DistributionPointName dp = new DistributionPointName( distribPointNameType.generalNames(distribPointName)); final GeneralNames crl; if (crlIssuerNameType != null && crlIssuer != null) { crl = crlIssuerNameType.generalNames(crlIssuer); } else { crl = null; } return create(dp, reasons, crl); } public static CrlDistPointExtension create(final DistributionPointName distributionPoint, final ReasonFlags reasons, final GeneralNames cRLIssuer) { final DistributionPoint p = new DistributionPoint(distributionPoint, reasons, cRLIssuer); return create(p); } public static CrlDistPointExtension create(final DistributionPoint... points) { return new CrlDistPointExtension(points); } }