1package org.bouncycastle.asn1.pkcs;
2
3import java.util.Enumeration;
4
5import org.bouncycastle.asn1.ASN1Encodable;
6import org.bouncycastle.asn1.ASN1EncodableVector;
7import org.bouncycastle.asn1.ASN1Object;
8import org.bouncycastle.asn1.ASN1Primitive;
9import org.bouncycastle.asn1.ASN1Sequence;
10import org.bouncycastle.asn1.DERSequence;
11
12public class PBES2Parameters
13    extends ASN1Object
14    implements PKCSObjectIdentifiers
15{
16    private KeyDerivationFunc func;
17    private EncryptionScheme scheme;
18
19    public static PBES2Parameters getInstance(
20        Object  obj)
21    {
22        if (obj instanceof PBES2Parameters)
23        {
24            return (PBES2Parameters)obj;
25        }
26        if (obj != null)
27        {
28            return new PBES2Parameters(ASN1Sequence.getInstance(obj));
29        }
30
31        return null;
32    }
33
34    public PBES2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme)
35    {
36        this.func = keyDevFunc;
37        this.scheme = encScheme;
38    }
39
40    private PBES2Parameters(
41        ASN1Sequence  obj)
42    {
43        Enumeration e = obj.getObjects();
44        ASN1Sequence  funcSeq = ASN1Sequence.getInstance(((ASN1Encodable)e.nextElement()).toASN1Primitive());
45
46        if (funcSeq.getObjectAt(0).equals(id_PBKDF2))
47        {
48            func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1)));
49        }
50        else
51        {
52            func = KeyDerivationFunc.getInstance(funcSeq);
53        }
54
55        scheme = EncryptionScheme.getInstance(e.nextElement());
56    }
57
58    public KeyDerivationFunc getKeyDerivationFunc()
59    {
60        return func;
61    }
62
63    public EncryptionScheme getEncryptionScheme()
64    {
65        return scheme;
66    }
67
68    public ASN1Primitive toASN1Primitive()
69    {
70        ASN1EncodableVector  v = new ASN1EncodableVector();
71
72        v.add(func);
73        v.add(scheme);
74
75        return new DERSequence(v);
76    }
77}
78