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 PKCS12PBEParams
015    extends ASN1Object
016{
017    ASN1Integer      iterations;
018    ASN1OctetString iv;
019
020    public PKCS12PBEParams(
021        byte[]      salt,
022        int         iterations)
023    {
024        this.iv = new DEROctetString(salt);
025        this.iterations = new ASN1Integer(iterations);
026    }
027
028    private PKCS12PBEParams(
029        ASN1Sequence  seq)
030    {
031        iv = (ASN1OctetString)seq.getObjectAt(0);
032        iterations = ASN1Integer.getInstance(seq.getObjectAt(1));
033    }
034
035    public static PKCS12PBEParams getInstance(
036        Object  obj)
037    {
038        if (obj instanceof PKCS12PBEParams)
039        {
040            return (PKCS12PBEParams)obj;
041        }
042        else if (obj != null)
043        {
044            return new PKCS12PBEParams(ASN1Sequence.getInstance(obj));
045        }
046
047        return null;
048    }
049
050    public BigInteger getIterations()
051    {
052        return iterations.getValue();
053    }
054
055    public byte[] getIV()
056    {
057        return iv.getOctets();
058    }
059
060    public ASN1Primitive toASN1Primitive()
061    {
062        ASN1EncodableVector  v = new ASN1EncodableVector();
063
064        v.add(iv);
065        v.add(iterations);
066
067        return new DERSequence(v);
068    }
069}