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

BasicAgreementWithKdf

static class BasicAgreementWithKdf
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Crypto.Agreement.Kdf; using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Crypto.Agreement { internal static class BasicAgreementWithKdf { internal static BigInteger CalculateAgreementWithKdf(string algorithm, IDerivationFunction kdf, int fieldSize, BigInteger result) { int defaultKeySize = GeneratorUtilities.GetDefaultKeySize(algorithm); DHKdfParameters parameters = new DHKdfParameters(new DerObjectIdentifier(algorithm), defaultKeySize, BigIntegers.AsUnsignedByteArray(fieldSize, result)); kdf.Init(parameters); byte[] array = new byte[defaultKeySize / 8]; kdf.GenerateBytes(array, 0, array.Length); return new BigInteger(1, array); } } }