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

X25519Agreement

public sealed class X25519Agreement : IRawAgreement
using Org.BouncyCastle.Crypto.Parameters; using System; namespace Org.BouncyCastle.Crypto.Agreement { public sealed class X25519Agreement : IRawAgreement { private X25519PrivateKeyParameters m_privateKey; public int AgreementSize => X25519PrivateKeyParameters.SecretSize; public void Init(ICipherParameters parameters) { m_privateKey = (X25519PrivateKeyParameters)parameters; } public void CalculateAgreement(ICipherParameters publicKey, byte[] buf, int off) { CalculateAgreement(publicKey, buf.AsSpan(off)); } public void CalculateAgreement(ICipherParameters publicKey, Span<byte> buf) { m_privateKey.GenerateSecret((X25519PublicKeyParameters)publicKey, buf); } } }