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