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 * OcspResponsesID ::= SEQUENCE {
012 *    ocspIdentifier OcspIdentifier,
013 *    ocspRepHash OtherHash OPTIONAL
014 * }
015 * </pre>
016 */
017public class OcspResponsesID
018    extends ASN1Object
019{
020
021    private OcspIdentifier ocspIdentifier;
022    private OtherHash ocspRepHash;
023
024    public static OcspResponsesID getInstance(Object obj)
025    {
026        if (obj instanceof OcspResponsesID)
027        {
028            return (OcspResponsesID)obj;
029        }
030        else if (obj != null)
031        {
032            return new OcspResponsesID(ASN1Sequence.getInstance(obj));
033        }
034
035        return null;
036    }
037
038    private OcspResponsesID(ASN1Sequence seq)
039    {
040        if (seq.size() < 1 || seq.size() > 2)
041        {
042            throw new IllegalArgumentException("Bad sequence size: "
043                + seq.size());
044        }
045        this.ocspIdentifier = OcspIdentifier.getInstance(seq.getObjectAt(0));
046        if (seq.size() > 1)
047        {
048            this.ocspRepHash = OtherHash.getInstance(seq.getObjectAt(1));
049        }
050    }
051
052    public OcspResponsesID(OcspIdentifier ocspIdentifier)
053    {
054        this(ocspIdentifier, null);
055    }
056
057    public OcspResponsesID(OcspIdentifier ocspIdentifier, OtherHash ocspRepHash)
058    {
059        this.ocspIdentifier = ocspIdentifier;
060        this.ocspRepHash = ocspRepHash;
061    }
062
063    public OcspIdentifier getOcspIdentifier()
064    {
065        return this.ocspIdentifier;
066    }
067
068    public OtherHash getOcspRepHash()
069    {
070        return this.ocspRepHash;
071    }
072
073    public ASN1Primitive toASN1Primitive()
074    {
075        ASN1EncodableVector v = new ASN1EncodableVector();
076        v.add(this.ocspIdentifier);
077        if (null != this.ocspRepHash)
078        {
079            v.add(this.ocspRepHash);
080        }
081        return new DERSequence(v);
082    }
083}