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.ASN1GeneralizedTime;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ocsp.ResponderID;
010
011/**
012 * <pre>
013 * OcspIdentifier ::= SEQUENCE {
014 *     ocspResponderID ResponderID, -- As in OCSP response data
015 *     producedAt GeneralizedTime -- As in OCSP response data
016 * }
017 * </pre>
018 */
019public class OcspIdentifier
020    extends ASN1Object
021{
022    private ResponderID ocspResponderID;
023    private ASN1GeneralizedTime producedAt;
024
025    public static OcspIdentifier getInstance(Object obj)
026    {
027        if (obj instanceof OcspIdentifier)
028        {
029            return (OcspIdentifier)obj;
030        }
031        else if (obj != null)
032        {
033            return new OcspIdentifier(ASN1Sequence.getInstance(obj));
034        }
035
036        return null;
037    }
038
039    private OcspIdentifier(ASN1Sequence seq)
040    {
041        if (seq.size() != 2)
042        {
043            throw new IllegalArgumentException("Bad sequence size: "
044                + seq.size());
045        }
046        this.ocspResponderID = ResponderID.getInstance(seq.getObjectAt(0));
047        this.producedAt = (ASN1GeneralizedTime)seq.getObjectAt(1);
048    }
049
050    public OcspIdentifier(ResponderID ocspResponderID, ASN1GeneralizedTime producedAt)
051    {
052        this.ocspResponderID = ocspResponderID;
053        this.producedAt = producedAt;
054    }
055
056    public ResponderID getOcspResponderID()
057    {
058        return this.ocspResponderID;
059    }
060
061    public ASN1GeneralizedTime getProducedAt()
062    {
063        return this.producedAt;
064    }
065
066    public ASN1Primitive toASN1Primitive()
067    {
068        ASN1EncodableVector v = new ASN1EncodableVector();
069        v.add(this.ocspResponderID);
070        v.add(this.producedAt);
071        return new DERSequence(v);
072    }
073}