001package org.apache.commons.ssl.org.bouncycastle.asn1.misc;
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.ASN1OctetString;
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.DEROctetString;
009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
010
011public class IDEACBCPar
012    extends ASN1Object
013{
014    ASN1OctetString  iv;
015
016    public static IDEACBCPar getInstance(
017        Object  o)
018    {
019        if (o instanceof IDEACBCPar)
020        {
021            return (IDEACBCPar)o;
022        }
023        else if (o != null)
024        {
025            return new IDEACBCPar(ASN1Sequence.getInstance(o));
026        }
027
028        return null;
029    }
030
031    public IDEACBCPar(
032        byte[]  iv)
033    {
034        this.iv = new DEROctetString(iv);
035    }
036
037    public IDEACBCPar(
038        ASN1Sequence  seq)
039    {
040        if (seq.size() == 1)
041        {
042            iv = (ASN1OctetString)seq.getObjectAt(0);
043        }
044        else
045        {
046            iv = null;
047        }
048    }
049
050    public byte[] getIV()
051    {
052        if (iv != null)
053        {
054            return iv.getOctets();
055        }
056        else
057        {
058            return null;
059        }
060    }
061
062    /**
063     * Produce an object suitable for an ASN1OutputStream.
064     * <pre>
065     * IDEA-CBCPar ::= SEQUENCE {
066     *                      iv    OCTET STRING OPTIONAL -- exactly 8 octets
067     *                  }
068     * </pre>
069     */
070    public ASN1Primitive toASN1Primitive()
071    {
072        ASN1EncodableVector  v = new ASN1EncodableVector();
073
074        if (iv != null)
075        {
076            v.add(iv);
077        }
078
079        return new DERSequence(v);
080    }
081}