All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.asn1.x509.DistributionPoint Maven / Gradle / Ivy

There is a newer version: 1.70_1
Show newest version
package org.bouncycastle.asn1.x509;

import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.util.Strings;

/**
 * The DistributionPoint object.
 * 
 * DistributionPoint ::= SEQUENCE {
 *      distributionPoint [0] DistributionPointName OPTIONAL,
 *      reasons           [1] ReasonFlags OPTIONAL,
 *      cRLIssuer         [2] GeneralNames OPTIONAL
 * }
 * 
*/ public class DistributionPoint extends ASN1Object { DistributionPointName distributionPoint; ReasonFlags reasons; GeneralNames cRLIssuer; public static DistributionPoint getInstance( ASN1TaggedObject obj, boolean explicit) { return getInstance(ASN1Sequence.getInstance(obj, explicit)); } public static DistributionPoint getInstance( Object obj) { if(obj == null || obj instanceof DistributionPoint) { return (DistributionPoint)obj; } if(obj instanceof ASN1Sequence) { return new DistributionPoint((ASN1Sequence)obj); } throw new IllegalArgumentException("Invalid DistributionPoint: " + obj.getClass().getName()); } public DistributionPoint( ASN1Sequence seq) { for (int i = 0; i != seq.size(); i++) { ASN1TaggedObject t = ASN1TaggedObject.getInstance(seq.getObjectAt(i)); switch (t.getTagNo()) { case 0: distributionPoint = DistributionPointName.getInstance(t, true); break; case 1: reasons = new ReasonFlags(DERBitString.getInstance(t, false)); break; case 2: cRLIssuer = GeneralNames.getInstance(t, false); break; default: throw new IllegalArgumentException("Unknown tag encountered in structure: " + t.getTagNo()); } } } public DistributionPoint( DistributionPointName distributionPoint, ReasonFlags reasons, GeneralNames cRLIssuer) { this.distributionPoint = distributionPoint; this.reasons = reasons; this.cRLIssuer = cRLIssuer; } public DistributionPointName getDistributionPoint() { return distributionPoint; } public ReasonFlags getReasons() { return reasons; } public GeneralNames getCRLIssuer() { return cRLIssuer; } public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(3); if (distributionPoint != null) { // // as this is a CHOICE it must be explicitly tagged // v.add(new DERTaggedObject(0, distributionPoint)); } if (reasons != null) { v.add(new DERTaggedObject(false, 1, reasons)); } if (cRLIssuer != null) { v.add(new DERTaggedObject(false, 2, cRLIssuer)); } return new DERSequence(v); } public String toString() { String sep = Strings.lineSeparator(); StringBuffer buf = new StringBuffer(); buf.append("DistributionPoint: ["); buf.append(sep); if (distributionPoint != null) { appendObject(buf, sep, "distributionPoint", distributionPoint.toString()); } if (reasons != null) { appendObject(buf, sep, "reasons", reasons.toString()); } if (cRLIssuer != null) { appendObject(buf, sep, "cRLIssuer", cRLIssuer.toString()); } buf.append("]"); buf.append(sep); return buf.toString(); } private void appendObject(StringBuffer buf, String sep, String name, String value) { String indent = " "; buf.append(indent); buf.append(name); buf.append(":"); buf.append(sep); buf.append(indent); buf.append(indent); buf.append(value); buf.append(sep); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy