001package org.apache.commons.ssl.org.bouncycastle.asn1.esf;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
007import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
008
009/**
010 * <pre>
011 * CrlValidatedID ::= SEQUENCE {
012 *   crlHash OtherHash,
013 *   crlIdentifier CrlIdentifier OPTIONAL }
014 * </pre>
015 */
016public class CrlValidatedID
017    extends ASN1Object
018{
019
020    private OtherHash crlHash;
021    private CrlIdentifier crlIdentifier;
022
023    public static CrlValidatedID getInstance(Object obj)
024    {
025        if (obj instanceof CrlValidatedID)
026        {
027            return (CrlValidatedID)obj;
028        }
029        else if (obj != null)
030        {
031            return new CrlValidatedID(ASN1Sequence.getInstance(obj));
032        }
033
034        return null;
035    }
036
037    private CrlValidatedID(ASN1Sequence seq)
038    {
039        if (seq.size() < 1 || seq.size() > 2)
040        {
041            throw new IllegalArgumentException("Bad sequence size: "
042                + seq.size());
043        }
044        this.crlHash = OtherHash.getInstance(seq.getObjectAt(0));
045        if (seq.size() > 1)
046        {
047            this.crlIdentifier = CrlIdentifier.getInstance(seq.getObjectAt(1));
048        }
049    }
050
051    public CrlValidatedID(OtherHash crlHash)
052    {
053        this(crlHash, null);
054    }
055
056    public CrlValidatedID(OtherHash crlHash, CrlIdentifier crlIdentifier)
057    {
058        this.crlHash = crlHash;
059        this.crlIdentifier = crlIdentifier;
060    }
061
062    public OtherHash getCrlHash()
063    {
064        return this.crlHash;
065    }
066
067    public CrlIdentifier getCrlIdentifier()
068    {
069        return this.crlIdentifier;
070    }
071
072    public ASN1Primitive toASN1Primitive()
073    {
074        ASN1EncodableVector v = new ASN1EncodableVector();
075        v.add(this.crlHash.toASN1Primitive());
076        if (null != this.crlIdentifier)
077        {
078            v.add(this.crlIdentifier.toASN1Primitive());
079        }
080        return new DERSequence(v);
081    }
082}