tech.ydb.shaded.bouncycastle.asn1.cmc.GetCRL Maven / Gradle / Ivy
package org.bouncycastle.asn1.cmc;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1GeneralizedTime;
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.x500.X500Name;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.ReasonFlags;
/**
 * 
 * id-cmc-getCRL OBJECT IDENTIFIER ::= {id-cmc 16}
 *
 * GetCRL ::= SEQUENCE {
 *    issuerName    Name,
 *    cRLName       GeneralName OPTIONAL,
 *    time          GeneralizedTime OPTIONAL,
 *    reasons       ReasonFlags OPTIONAL }
 * 
 */
public class GetCRL
    extends ASN1Object
{
    private final X500Name issuerName;
    private GeneralName cRLName;
    private ASN1GeneralizedTime time;
    private ReasonFlags reasons;
    public GetCRL(X500Name issuerName, GeneralName cRLName, ASN1GeneralizedTime time, ReasonFlags reasons)
    {
        this.issuerName = issuerName;
        this.cRLName = cRLName;
        this.time = time;
        this.reasons = reasons;
    }
    private GetCRL(ASN1Sequence seq)
    {
        if (seq.size() < 1 || seq.size() > 4)
        {
            throw new IllegalArgumentException("incorrect sequence size");
        }
        this.issuerName = X500Name.getInstance(seq.getObjectAt(0));
        int index = 1;
        if (seq.size() > index && seq.getObjectAt(index).toASN1Primitive() instanceof ASN1TaggedObject)
        {
            this.cRLName = GeneralName.getInstance(seq.getObjectAt(index++));
        }
        if (seq.size() > index && seq.getObjectAt(index).toASN1Primitive() instanceof ASN1GeneralizedTime)
        {
            this.time = ASN1GeneralizedTime.getInstance(seq.getObjectAt(index++));
        }
        if (seq.size() > index && seq.getObjectAt(index).toASN1Primitive() instanceof DERBitString)
        {
            this.reasons = new ReasonFlags(DERBitString.getInstance(seq.getObjectAt(index)));
        }
    }
    public static GetCRL getInstance(Object o)
    {
        if (o instanceof GetCRL)
        {
            return (GetCRL)o;
        }
        if (o != null)
        {
            return new GetCRL(ASN1Sequence.getInstance(o));
        }
        return null;
    }
    public X500Name getIssuerName()
    {
        return issuerName;
    }
    public GeneralName getcRLName()
    {
        return cRLName;
    }
    public ASN1GeneralizedTime getTime()
    {
        return time;
    }
    public ReasonFlags getReasons()
    {
        return reasons;
    }
    public ASN1Primitive toASN1Primitive()
    {
        ASN1EncodableVector v = new ASN1EncodableVector();
        v.add(issuerName);
        if (cRLName != null)
        {
            v.add(cRLName);
        }
        if (time != null)
        {
            v.add(time);
        }
        if (reasons != null)
        {
            v.add(reasons);
        }
        return new DERSequence(v);
    }
}
    © 2015 - 2025 Weber Informatics LLC | Privacy Policy