001package org.apache.commons.ssl.org.bouncycastle.asn1.dvcs;
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.ASN1TaggedObject;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.cmp.PKIStatusInfo;
010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.GeneralName;
011
012/**
013 * <pre>
014 *     DVCSErrorNotice ::= SEQUENCE {
015 *         transactionStatus           PKIStatusInfo ,
016 *         transactionIdentifier       GeneralName OPTIONAL
017 *     }
018 * </pre>
019 */
020public class DVCSErrorNotice
021    extends ASN1Object
022{
023    private PKIStatusInfo transactionStatus;
024    private GeneralName transactionIdentifier;
025
026    public DVCSErrorNotice(PKIStatusInfo status)
027    {
028        this(status, null);
029    }
030
031    public DVCSErrorNotice(PKIStatusInfo status, GeneralName transactionIdentifier)
032    {
033        this.transactionStatus = status;
034        this.transactionIdentifier = transactionIdentifier;
035    }
036
037    private DVCSErrorNotice(ASN1Sequence seq)
038    {
039        this.transactionStatus = PKIStatusInfo.getInstance(seq.getObjectAt(0));
040        if (seq.size() > 1)
041        {
042            this.transactionIdentifier = GeneralName.getInstance(seq.getObjectAt(1));
043        }
044    }
045
046    public static DVCSErrorNotice getInstance(Object obj)
047    {
048        if (obj instanceof DVCSErrorNotice)
049        {
050            return (DVCSErrorNotice)obj;
051        }
052        else if (obj != null)
053        {
054            return new DVCSErrorNotice(ASN1Sequence.getInstance(obj));
055        }
056
057        return null;
058    }
059
060    public static DVCSErrorNotice getInstance(
061        ASN1TaggedObject obj,
062        boolean explicit)
063    {
064        return getInstance(ASN1Sequence.getInstance(obj, explicit));
065    }
066
067    public ASN1Primitive toASN1Primitive()
068    {
069        ASN1EncodableVector v = new ASN1EncodableVector();
070        v.add(transactionStatus);
071        if (transactionIdentifier != null)
072        {
073            v.add(transactionIdentifier);
074        }
075        return new DERSequence(v);
076    }
077
078    public String toString()
079    {
080        return "DVCSErrorNotice {\n" +
081            "transactionStatus: " + transactionStatus + "\n" +
082            (transactionIdentifier != null ? "transactionIdentifier: " + transactionIdentifier + "\n" : "") +
083            "}\n";
084    }
085
086
087    public PKIStatusInfo getTransactionStatus()
088    {
089        return transactionStatus;
090    }
091
092    public GeneralName getTransactionIdentifier()
093    {
094        return transactionIdentifier;
095    }
096}