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