001package org.apache.commons.ssl.org.bouncycastle.asn1.ocsp;
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.ASN1ObjectIdentifier;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject;
010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
011
012public class ResponseBytes
013    extends ASN1Object
014{
015    ASN1ObjectIdentifier    responseType;
016    ASN1OctetString        response;
017
018    public ResponseBytes(
019        ASN1ObjectIdentifier responseType,
020        ASN1OctetString     response)
021    {
022        this.responseType = responseType;
023        this.response = response;
024    }
025
026    public ResponseBytes(
027        ASN1Sequence    seq)
028    {
029        responseType = (ASN1ObjectIdentifier)seq.getObjectAt(0);
030        response = (ASN1OctetString)seq.getObjectAt(1);
031    }
032
033    public static ResponseBytes getInstance(
034        ASN1TaggedObject obj,
035        boolean          explicit)
036    {
037        return getInstance(ASN1Sequence.getInstance(obj, explicit));
038    }
039
040    public static ResponseBytes getInstance(
041        Object  obj)
042    {
043        if (obj == null || obj instanceof ResponseBytes)
044        {
045            return (ResponseBytes)obj;
046        }
047        else if (obj instanceof ASN1Sequence)
048        {
049            return new ResponseBytes((ASN1Sequence)obj);
050        }
051
052        throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName());
053    }
054
055    public ASN1ObjectIdentifier getResponseType()
056    {
057        return responseType;
058    }
059
060    public ASN1OctetString getResponse()
061    {
062        return response;
063    }
064
065    /**
066     * Produce an object suitable for an ASN1OutputStream.
067     * <pre>
068     * ResponseBytes ::=       SEQUENCE {
069     *     responseType   OBJECT IDENTIFIER,
070     *     response       OCTET STRING }
071     * </pre>
072     */
073    public ASN1Primitive toASN1Primitive()
074    {
075        ASN1EncodableVector    v = new ASN1EncodableVector();
076
077        v.add(responseType);
078        v.add(response);
079
080        return new DERSequence(v);
081    }
082}