package org.bouncycastle.asn1.pkcs; import java.util.Enumeration; import org.bouncycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.ASN1Object; import org.bouncycastle.asn1.ASN1Primitive; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.DERSequence; public class PBES2Parameters extends ASN1Object implements PKCSObjectIdentifiers { private KeyDerivationFunc func; private EncryptionScheme scheme; public static PBES2Parameters getInstance( Object obj) { if (obj instanceof PBES2Parameters) { return (PBES2Parameters)obj; } if (obj != null) { return new PBES2Parameters(ASN1Sequence.getInstance(obj)); } return null; } public PBES2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme) { this.func = keyDevFunc; this.scheme = encScheme; } private PBES2Parameters( ASN1Sequence obj) { Enumeration e = obj.getObjects(); ASN1Sequence funcSeq = ASN1Sequence.getInstance(((ASN1Encodable)e.nextElement()).toASN1Primitive()); if (funcSeq.getObjectAt(0).equals(id_PBKDF2)) { func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1))); } else { func = KeyDerivationFunc.getInstance(funcSeq); } scheme = EncryptionScheme.getInstance(e.nextElement()); } public KeyDerivationFunc getKeyDerivationFunc() { return func; } public EncryptionScheme getEncryptionScheme() { return scheme; } public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(func); v.add(scheme); return new DERSequence(v); } }