<PackageReference Include="SSH.NET" Version="2023.0.0" />

KeyExchangeEC

abstract class KeyExchangeEC : KeyExchange
using Renci.SshNet.Messages.Transport; namespace Renci.SshNet.Security { internal abstract class KeyExchangeEC : KeyExchange { protected byte[] _clientPayload; protected byte[] _serverPayload; protected byte[] _clientExchangeValue; protected byte[] _serverExchangeValue; protected byte[] _hostKey; protected byte[] _signature; protected abstract int HashSize { get; } protected override byte[] CalculateHash() { KeyExchangeHashData keyExchangeHashData = new KeyExchangeHashData { ClientVersion = base.Session.ClientVersion, ServerVersion = base.Session.ServerVersion, ClientPayload = _clientPayload, ServerPayload = _serverPayload, HostKey = _hostKey, ClientExchangeValue = _clientExchangeValue, ServerExchangeValue = _serverExchangeValue, SharedKey = base.SharedKey }; return Hash(keyExchangeHashData.GetBytes()); } protected override bool ValidateExchangeHash() { return ValidateExchangeHash(_hostKey, _signature); } public override void Start(Session session, KeyExchangeInitMessage message) { base.Start(session, message); _serverPayload = message.GetBytes(); _clientPayload = base.Session.ClientInitMessage.GetBytes(); } } }