<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" />

PbeS2Parameters

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Pkcs { public class PbeS2Parameters : Asn1Encodable { private readonly KeyDerivationFunc m_func; private readonly EncryptionScheme m_scheme; public KeyDerivationFunc KeyDerivationFunc => m_func; public EncryptionScheme EncryptionScheme => m_scheme; public static PbeS2Parameters GetInstance(object obj) { if (obj == null) return null; PbeS2Parameters pbeS2Parameters = obj as PbeS2Parameters; if (pbeS2Parameters != null) return pbeS2Parameters; return new PbeS2Parameters(Asn1Sequence.GetInstance(obj)); } public static PbeS2Parameters GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PbeS2Parameters(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static PbeS2Parameters GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PbeS2Parameters(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private PbeS2Parameters(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); AlgorithmIdentifier instance = AlgorithmIdentifier.GetInstance(seq[0]); m_func = new KeyDerivationFunc(instance.Algorithm, instance.Parameters); m_scheme = EncryptionScheme.GetInstance(seq[1]); } public PbeS2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme) { if (keyDevFunc == null) throw new ArgumentNullException("keyDevFunc"); m_func = keyDevFunc; if (encScheme == null) throw new ArgumentNullException("encScheme"); m_scheme = encScheme; } public override Asn1Object ToAsn1Object() { return new DerSequence(m_func, m_scheme); } } }