KeyExchange public abstract class KeyExchange : Algorithm, IKeyExchange, IDisposable Documentation Code public byte[] ExchangeHash { get; } protected Session Session { get; } public byte[] SharedKey { get; protected set; } public event EventHandler<HostKeyEventArgs> HostKeyReceived protected KeyExchange() protected abstract byte[] CalculateHash() protected bool CanTrustHostKey(KeyHostAlgorithm host) public Cipher CreateClientCipher(out bool isAead) public HashAlgorithm CreateClientHash(out bool isEncryptThenMAC) public Compressor CreateCompressor() public Compressor CreateDecompressor() public Cipher CreateServerCipher(out bool isAead) public HashAlgorithm CreateServerHash(out bool isEncryptThenMAC) public void Dispose() protected virtual void Dispose(bool disposing) public virtual void Finish() protected abstract byte[] Hash(byte[] hashData) protected void SendMessage(Message message) public virtual void Start(Session session, KeyExchangeInitMessage message, bool sendClientInitMessage) protected abstract bool ValidateExchangeHash()