001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs;
002
003import java.math.BigInteger;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
011import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString;
012import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
013
014public class RC2CBCParameter
015    extends ASN1Object
016{
017    ASN1Integer      version;
018    ASN1OctetString iv;
019
020    public static RC2CBCParameter getInstance(
021        Object  o)
022    {
023        if (o instanceof RC2CBCParameter)
024        {
025            return (RC2CBCParameter)o;
026        }
027        if (o != null)
028        {
029            return new RC2CBCParameter(ASN1Sequence.getInstance(o));
030        }
031
032        return null;
033    }
034
035    public RC2CBCParameter(
036        byte[]  iv)
037    {
038        this.version = null;
039        this.iv = new DEROctetString(iv);
040    }
041
042    public RC2CBCParameter(
043        int     parameterVersion,
044        byte[]  iv)
045    {
046        this.version = new ASN1Integer(parameterVersion);
047        this.iv = new DEROctetString(iv);
048    }
049
050    private RC2CBCParameter(
051        ASN1Sequence  seq)
052    {
053        if (seq.size() == 1)
054        {
055            version = null;
056            iv = (ASN1OctetString)seq.getObjectAt(0);
057        }
058        else
059        {
060            version = (ASN1Integer)seq.getObjectAt(0);
061            iv = (ASN1OctetString)seq.getObjectAt(1);
062        }
063    }
064
065    public BigInteger getRC2ParameterVersion()
066    {
067        if (version == null)
068        {
069            return null;
070        }
071
072        return version.getValue();
073    }
074
075    public byte[] getIV()
076    {
077        return iv.getOctets();
078    }
079
080    public ASN1Primitive toASN1Primitive()
081    {
082        ASN1EncodableVector  v = new ASN1EncodableVector();
083
084        if (version != null)
085        {
086            v.add(version);
087        }
088
089        v.add(iv);
090
091        return new DERSequence(v);
092    }
093}