PKCS12PBEParams.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.pkcs;
2
3import java.math.BigInteger;
4
5import org.bouncycastle.asn1.ASN1EncodableVector;
6import org.bouncycastle.asn1.ASN1Integer;
7import org.bouncycastle.asn1.ASN1Object;
8import org.bouncycastle.asn1.ASN1OctetString;
9import org.bouncycastle.asn1.ASN1Primitive;
10import org.bouncycastle.asn1.ASN1Sequence;
11import org.bouncycastle.asn1.DEROctetString;
12import org.bouncycastle.asn1.DERSequence;
13
14public class PKCS12PBEParams
15    extends ASN1Object
16{
17    ASN1Integer      iterations;
18    ASN1OctetString iv;
19
20    public PKCS12PBEParams(
21        byte[]      salt,
22        int         iterations)
23    {
24        this.iv = new DEROctetString(salt);
25        this.iterations = new ASN1Integer(iterations);
26    }
27
28    private PKCS12PBEParams(
29        ASN1Sequence  seq)
30    {
31        iv = (ASN1OctetString)seq.getObjectAt(0);
32        iterations = ASN1Integer.getInstance(seq.getObjectAt(1));
33    }
34
35    public static PKCS12PBEParams getInstance(
36        Object  obj)
37    {
38        if (obj instanceof PKCS12PBEParams)
39        {
40            return (PKCS12PBEParams)obj;
41        }
42        else if (obj != null)
43        {
44            return new PKCS12PBEParams(ASN1Sequence.getInstance(obj));
45        }
46
47        return null;
48    }
49
50    public BigInteger getIterations()
51    {
52        return iterations.getValue();
53    }
54
55    public byte[] getIV()
56    {
57        return iv.getOctets();
58    }
59
60    public ASN1Primitive toASN1Primitive()
61    {
62        ASN1EncodableVector  v = new ASN1EncodableVector();
63
64        v.add(iv);
65        v.add(iterations);
66
67        return new DERSequence(v);
68    }
69}
70