public PbeS2Parameters(
            Asn1Sequence seq)
        {
			if (seq.Count != 2)
				throw new ArgumentException("Wrong number of elements in sequence", "seq");

			Asn1Sequence funcSeq = (Asn1Sequence)seq[0].ToAsn1Object();

			// TODO Not sure if this special case is really necessary/appropriate
			if (funcSeq[0].Equals(PkcsObjectIdentifiers.IdPbkdf2))
            {
				func = new KeyDerivationFunc(PkcsObjectIdentifiers.IdPbkdf2,
					Pbkdf2Params.GetInstance(funcSeq[1]));
			}
            else
            {
                func = new KeyDerivationFunc(funcSeq);
            }

			scheme = EncryptionScheme.GetInstance(seq[1].ToAsn1Object());
        }