15faee297baafbc31667954a404d0451916ef5c59Brian Carlstrompackage org.bouncycastle.asn1.pkcs; 25faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 35faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport java.util.Enumeration; 45faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 55faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.ASN1Encodable; 65faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 95faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.ASN1Sequence; 105faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.DERSequence; 115faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 125faee297baafbc31667954a404d0451916ef5c59Brian Carlstrompublic class PBES2Parameters 134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 145faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom implements PKCSObjectIdentifiers 155faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom{ 16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private KeyDerivationFunc func; 17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private EncryptionScheme scheme; 185faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static PBES2Parameters getInstance( 206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom Object obj) 216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 22a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom if (obj instanceof PBES2Parameters) 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return (PBES2Parameters)obj; 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 26a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom if (obj != null) 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 28a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom return new PBES2Parameters(ASN1Sequence.getInstance(obj)); 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 31a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom return null; 32a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 33a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 34a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBES2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme) 35a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 36a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom this.func = keyDevFunc; 37a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom this.scheme = encScheme; 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 40a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private PBES2Parameters( 415faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom ASN1Sequence obj) 425faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 435faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom Enumeration e = obj.getObjects(); 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1Sequence funcSeq = ASN1Sequence.getInstance(((ASN1Encodable)e.nextElement()).toASN1Primitive()); 455faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 465faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom if (funcSeq.getObjectAt(0).equals(id_PBKDF2)) 475faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 485faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1))); 495faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 505faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom else 515faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 52a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom func = KeyDerivationFunc.getInstance(funcSeq); 535faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 545faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 55a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom scheme = EncryptionScheme.getInstance(e.nextElement()); 565faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 575faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 585faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom public KeyDerivationFunc getKeyDerivationFunc() 595faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 605faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom return func; 615faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 625faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 635faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom public EncryptionScheme getEncryptionScheme() 645faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 655faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom return scheme; 665faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 675faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 695faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom { 705faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom ASN1EncodableVector v = new ASN1EncodableVector(); 715faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 725faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom v.add(func); 735faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom v.add(scheme); 745faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom 755faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom return new DERSequence(v); 765faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom } 775faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom} 78