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