001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs; 002 003import java.util.Enumeration; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 011 012public class PBES2Parameters 013 extends ASN1Object 014 implements PKCSObjectIdentifiers 015{ 016 private KeyDerivationFunc func; 017 private EncryptionScheme scheme; 018 019 public static PBES2Parameters getInstance( 020 Object obj) 021 { 022 if (obj instanceof PBES2Parameters) 023 { 024 return (PBES2Parameters)obj; 025 } 026 if (obj != null) 027 { 028 return new PBES2Parameters(ASN1Sequence.getInstance(obj)); 029 } 030 031 return null; 032 } 033 034 public PBES2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme) 035 { 036 this.func = keyDevFunc; 037 this.scheme = encScheme; 038 } 039 040 private PBES2Parameters( 041 ASN1Sequence obj) 042 { 043 Enumeration e = obj.getObjects(); 044 ASN1Sequence funcSeq = ASN1Sequence.getInstance(((ASN1Encodable)e.nextElement()).toASN1Primitive()); 045 046 if (funcSeq.getObjectAt(0).equals(id_PBKDF2)) 047 { 048 func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1))); 049 } 050 else 051 { 052 func = KeyDerivationFunc.getInstance(funcSeq); 053 } 054 055 scheme = EncryptionScheme.getInstance(e.nextElement()); 056 } 057 058 public KeyDerivationFunc getKeyDerivationFunc() 059 { 060 return func; 061 } 062 063 public EncryptionScheme getEncryptionScheme() 064 { 065 return scheme; 066 } 067 068 public ASN1Primitive toASN1Primitive() 069 { 070 ASN1EncodableVector v = new ASN1EncodableVector(); 071 072 v.add(func); 073 v.add(scheme); 074 075 return new DERSequence(v); 076 } 077}