001package org.apache.commons.ssl.org.bouncycastle.asn1.dvcs;
002
003import java.io.IOException;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Choice;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
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.DERTaggedObject;
011
012/**
013 * <pre>
014 *     DVCSResponse ::= CHOICE
015 *     {
016 *         dvCertInfo         DVCSCertInfo ,
017 *         dvErrorNote        [0] DVCSErrorNotice
018 *     }
019 * </pre>
020 */
021
022public class DVCSResponse
023    extends ASN1Object
024    implements ASN1Choice
025{
026    private DVCSCertInfo dvCertInfo;
027    private DVCSErrorNotice dvErrorNote;
028
029    public DVCSResponse(DVCSCertInfo dvCertInfo)
030    {
031        this.dvCertInfo = dvCertInfo;
032    }
033
034    public DVCSResponse(DVCSErrorNotice dvErrorNote)
035    {
036        this.dvErrorNote = dvErrorNote;
037    }
038
039    public static DVCSResponse getInstance(Object obj)
040    {
041        if (obj == null || obj instanceof DVCSResponse)
042        {
043            return (DVCSResponse)obj;
044        }
045        else
046        {
047            if (obj instanceof byte[])
048            {
049                try
050                {
051                    return getInstance(ASN1Primitive.fromByteArray((byte[])obj));
052                }
053                catch (IOException e)
054                {
055                    throw new IllegalArgumentException("failed to construct sequence from byte[]: " + e.getMessage());
056                }
057            }
058            if (obj instanceof ASN1Sequence)
059            {
060                DVCSCertInfo dvCertInfo = DVCSCertInfo.getInstance(obj);
061
062                return new DVCSResponse(dvCertInfo);
063            }
064            if (obj instanceof ASN1TaggedObject)
065            {
066                ASN1TaggedObject t = ASN1TaggedObject.getInstance(obj);
067                DVCSErrorNotice dvErrorNote = DVCSErrorNotice.getInstance(t, false);
068
069                return new DVCSResponse(dvErrorNote);
070            }
071        }
072
073        throw new IllegalArgumentException("Couldn't convert from object to DVCSResponse: " + obj.getClass().getName());
074    }
075
076    public static DVCSResponse getInstance(
077        ASN1TaggedObject obj,
078        boolean explicit)
079    {
080        return getInstance(ASN1Sequence.getInstance(obj, explicit));
081    }
082
083    public DVCSCertInfo getCertInfo()
084    {
085        return dvCertInfo;
086    }
087
088    public DVCSErrorNotice getErrorNotice()
089    {
090        return dvErrorNote;
091    }
092
093    public ASN1Primitive toASN1Primitive()
094    {
095        if (dvCertInfo != null)
096        {
097            return dvCertInfo.toASN1Primitive();
098        }
099        else
100        {
101            return new DERTaggedObject(0, dvErrorNote);
102        }
103    }
104
105    public String toString()
106    {
107        if (dvCertInfo != null)
108        {
109            return "DVCSResponse {\ndvCertInfo: " + dvCertInfo.toString() + "}\n";
110        }
111        if (dvErrorNote != null)
112        {
113            return "DVCSResponse {\ndvErrorNote: " + dvErrorNote.toString() + "}\n";
114        }
115        return null;
116    }
117}