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== null || obj instanceof PBES2Parameters) 23 { 24 return (PBES2Parameters)obj; 25 } 26 27 if (obj instanceof ASN1Sequence) 28 { 29 return new PBES2Parameters((ASN1Sequence)obj); 30 } 31 32 throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName()); 33 } 34 35 public PBES2Parameters( 36 ASN1Sequence obj) 37 { 38 Enumeration e = obj.getObjects(); 39 ASN1Sequence funcSeq = ASN1Sequence.getInstance(((ASN1Encodable)e.nextElement()).toASN1Primitive()); 40 41 if (funcSeq.getObjectAt(0).equals(id_PBKDF2)) 42 { 43 func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1))); 44 } 45 else 46 { 47 func = new KeyDerivationFunc(funcSeq); 48 } 49 50 scheme = (EncryptionScheme)EncryptionScheme.getInstance(e.nextElement()); 51 } 52 53 public KeyDerivationFunc getKeyDerivationFunc() 54 { 55 return func; 56 } 57 58 public EncryptionScheme getEncryptionScheme() 59 { 60 return scheme; 61 } 62 63 public ASN1Primitive toASN1Primitive() 64 { 65 ASN1EncodableVector v = new ASN1EncodableVector(); 66 67 v.add(func); 68 v.add(scheme); 69 70 return new DERSequence(v); 71 } 72} 73