API Differences between 2025.1.0 and 2020.0.2
	
		332 Additions
	
	
		133 Removals
	
Renci.SshNet
	- 
		public abstract class AuthenticationMethod : IAuthenticationMethod, IDisposable
		
	
 
	- 
		public abstract class BaseClient : IBaseClient, IDisposable
		
	
 
	- 
		public class CipherInfo
		
	
 
	- 
		public class CommandAsyncResult : IAsyncResult
		
	
 
	- 
		public class ConnectionInfo : IConnectionInfoInternal, IConnectionInfo
		
			- public IDictionary<string, Type> CompressionAlgorithms { get; }
 
			- public IOrderedDictionary<string, Func<Compressor>> CompressionAlgorithms { get; }
 
			- public IDictionary<string, CipherInfo> Encryptions { get; }
 
			- public IDictionary<string, HashInfo> HmacAlgorithms { get; }
 
			- public IOrderedDictionary<string, CipherInfo> Encryptions { get; }
 
			- public IOrderedDictionary<string, HashInfo> HmacAlgorithms { get; }
 
			- public IDictionary<string, Func<byte[], KeyHostAlgorithm>> HostKeyAlgorithms { get; }
 
			- public IOrderedDictionary<string, Func<byte[], KeyHostAlgorithm>> HostKeyAlgorithms { get; }
 
			- public IDictionary<string, Type> KeyExchangeAlgorithms { get; }
 
			- public IOrderedDictionary<string, Func<IKeyExchange>> KeyExchangeAlgorithms { get; }
 
			- public ILoggerFactory LoggerFactory { get; set; }
 
		
	 
	- 
		public class ExpectAsyncResult : AsyncResult<string>
		
	
 
	- 
		public abstract class ForwardedPort : IForwardedPort, IDisposable
		
	
 
	- 
		public class ForwardedPortDynamic : ForwardedPort
		
	
 
	- 
		public class ForwardedPortLocal : ForwardedPort
		
	
 
	- 
		public class ForwardedPortRemote : ForwardedPort
		
	
 
	- 
		public class HashInfo
		
	
 
	- 
		public interface IBaseClient : IDisposable
		
	
 
	- 
		public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>
		
			- int Count { get; }
 
			- TValue this[TKey key] { get; set; }
 
			- ICollection<TKey> Keys { get; }
 
			- ICollection<TValue> Values { get; }
 
			- bool ContainsKey(TKey key)
 
			- bool ContainsValue(TValue value)
 
			- KeyValuePair<TKey, TValue> GetAt(int index)
 
			- int IndexOf(TKey key)
 
			- void Insert(int index, TKey key, TValue value)
 
			- bool Remove(TKey key, out TValue value)
 
			- void RemoveAt(int index)
 
			- void SetAt(int index, TKey key, TValue value)
 
			- void SetAt(int index, TValue value)
 
			- void SetPosition(int index, int newIndex)
 
			- void SetPosition(TKey key, int newIndex)
 
			- bool TryAdd(TKey key, TValue value)
 
			- bool TryAdd(TKey key, TValue value, out int index)
 
			- bool TryGetValue(TKey key, out TValue value)
 
			- bool TryGetValue(TKey key, out TValue value, out int index)
 
		
	 
	- 
		public interface IPrivateKeySource
		
	
 
	- 
		public interface ISftpClient : IBaseClient, IDisposable
		
			- Task ChangeDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- Task CreateDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- Task DeleteAsync(string path, CancellationToken cancellationToken = default)
 
			- Task DeleteDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- Task DeleteFileAsync(string path, CancellationToken cancellationToken)
 
			- Task DownloadFileAsync(string path, Stream output, CancellationToken cancellationToken = default)
 
			- IEnumerable<SftpFile> EndListDirectory(IAsyncResult asyncResult)
 
			- IEnumerable<ISftpFile> EndListDirectory(IAsyncResult asyncResult)
 
			- SftpFile Get(string path)
 
			- Task<bool> ExistsAsync(string path, CancellationToken cancellationToken = default)
 
			- ISftpFile Get(string path)
 
			- Task<ISftpFile> GetAsync(string path, CancellationToken cancellationToken)
 
			- Task<SftpFileAttributes> GetAttributesAsync(string path, CancellationToken cancellationToken)
 
			- SftpFileSytemInformation GetStatus(string path)
 
			- IEnumerable<SftpFile> ListDirectory(string path, Action<int> listCallback = null)
 
			- SftpFileSystemInformation GetStatus(string path)
 
			- Task<SftpFileSystemInformation> GetStatusAsync(string path, CancellationToken cancellationToken)
 
			- IEnumerable<ISftpFile> ListDirectory(string path, Action<int> listCallback = null)
 
			- IAsyncEnumerable<ISftpFile> ListDirectoryAsync(string path, CancellationToken cancellationToken)
 
			- Task<SftpFileStream> OpenAsync(string path, FileMode mode, FileAccess access, CancellationToken cancellationToken)
 
			- Task RenameFileAsync(string oldPath, string newPath, CancellationToken cancellationToken)
 
			- void SetLastAccessTime(string path, DateTime lastAccessTime)
 
			- void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc)
 
			- void SetLastWriteTime(string path, DateTime lastWriteTime)
 
			- void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc)
 
			- Task UploadFileAsync(Stream input, string path, CancellationToken cancellationToken = default)
 
		
	 
	- 
		public interface ISshClient : IBaseClient, IDisposable
		
			- IEnumerable<ForwardedPort> ForwardedPorts { get; }
 
			- void AddForwardedPort(ForwardedPort port)
 
			- SshCommand CreateCommand(string commandText)
 
			- SshCommand CreateCommand(string commandText, Encoding encoding)
 
			- Shell CreateShell(Stream input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes, int bufferSize)
 
			- Shell CreateShell(Stream input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes)
 
			- Shell CreateShell(Stream input, Stream output, Stream extendedOutput)
 
			- Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes, int bufferSize)
 
			- Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes)
 
			- Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput)
 
			- Shell CreateShellNoTerminal(Stream input, Stream output, Stream extendedOutput, int bufferSize = -1)
 
			- ShellStream CreateShellStream(string terminalName, uint columns, uint rows, uint width, uint height, int bufferSize)
 
			- ShellStream CreateShellStream(string terminalName, uint columns, uint rows, uint width, uint height, int bufferSize, IDictionary<TerminalModes, uint> terminalModeValues)
 
			- ShellStream CreateShellStreamNoTerminal(int bufferSize = -1)
 
			- void RemoveForwardedPort(ForwardedPort port)
 
			- SshCommand RunCommand(string commandText)
 
		
	 
	- 
		public class KeyboardInteractiveAuthenticationMethod : AuthenticationMethod
		
	
 
	- 
		public class NetConfClient : BaseClient
		
			- public NetConfClient(string host, int port, string username, PrivateKeyFile[] keyFiles)
 
			- public NetConfClient(string host, string username, PrivateKeyFile[] keyFiles)
 
			- public NetConfClient(string host, int port, string username, IPrivateKeySource[] keyFiles)
 
			- public NetConfClient(string host, string username, IPrivateKeySource[] keyFiles)
 
		
	 
	- 
		public class NoneAuthenticationMethod : AuthenticationMethod
		
	
 
	- 
		public class PasswordAuthenticationMethod : AuthenticationMethod
		
	
 
	- 
		public class PrivateKeyAuthenticationMethod : AuthenticationMethod
		
	
 
	- 
		public class PrivateKeyConnectionInfo : ConnectionInfo, IDisposable
		
			- public ICollection<PrivateKeyFile> KeyFiles { get; }
 
			- public PrivateKeyConnectionInfo(string host, string username, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, string proxyPassword, PrivateKeyFile[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, string proxyPassword, PrivateKeyFile[] keyFiles)
 
			- public ICollection<IPrivateKeySource> KeyFiles { get; }
 
			- public PrivateKeyConnectionInfo(string host, string username, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, string proxyPassword, IPrivateKeySource[] keyFiles)
 
			- public PrivateKeyConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, string proxyPassword, IPrivateKeySource[] keyFiles)
 
		
	 
	- 
		public class PrivateKeyFile : IPrivateKeySource, IDisposable
		
	
 
	- 
		public class ScpClient : BaseClient
		
			- public ScpClient(string host, int port, string username, PrivateKeyFile[] keyFiles)
 
			- public ScpClient(string host, string username, PrivateKeyFile[] keyFiles)
 
			- public void Download(string filename, Stream destination)
 
			- public ScpClient(string host, int port, string username, IPrivateKeySource[] keyFiles)
 
			- public ScpClient(string host, string username, IPrivateKeySource[] keyFiles)
 
			- public void Download(string filename, Stream destination)
 
		
	 
	- 
		public sealed class Session : ISession, IDisposable
		
	
 
	- 
		public class SftpClient : BaseClient, ISftpClient, IBaseClient, IDisposable
		
			- public SftpClient(string host, int port, string username, PrivateKeyFile[] keyFiles)
 
			- public SftpClient(string host, string username, PrivateKeyFile[] keyFiles)
 
			- public SftpClient(string host, int port, string username, IPrivateKeySource[] keyFiles)
 
			- public SftpClient(string host, string username, IPrivateKeySource[] keyFiles)
 
			- public Task ChangeDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- public Task CreateDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- public Task DeleteAsync(string path, CancellationToken cancellationToken = default)
 
			- public Task DeleteDirectoryAsync(string path, CancellationToken cancellationToken = default)
 
			- public Task DeleteFileAsync(string path, CancellationToken cancellationToken)
 
			- public Task DownloadFileAsync(string path, Stream output, CancellationToken cancellationToken = default)
 
			- public IEnumerable<SftpFile> EndListDirectory(IAsyncResult asyncResult)
 
			- public IEnumerable<ISftpFile> EndListDirectory(IAsyncResult asyncResult)
 
			- public SftpFile Get(string path)
 
			- public Task<bool> ExistsAsync(string path, CancellationToken cancellationToken = default)
 
			- public ISftpFile Get(string path)
 
			- public Task<ISftpFile> GetAsync(string path, CancellationToken cancellationToken)
 
			- public Task<SftpFileAttributes> GetAttributesAsync(string path, CancellationToken cancellationToken)
 
			- public SftpFileSytemInformation GetStatus(string path)
 
			- public IEnumerable<SftpFile> ListDirectory(string path, Action<int> listCallback = null)
 
			- public SftpFileSystemInformation GetStatus(string path)
 
			- public Task<SftpFileSystemInformation> GetStatusAsync(string path, CancellationToken cancellationToken)
 
			- public IEnumerable<ISftpFile> ListDirectory(string path, Action<int> listCallback = null)
 
			- public IAsyncEnumerable<ISftpFile> ListDirectoryAsync(string path, CancellationToken cancellationToken)
 
			- public Task<SftpFileStream> OpenAsync(string path, FileMode mode, FileAccess access, CancellationToken cancellationToken)
 
			- public Task RenameFileAsync(string oldPath, string newPath, CancellationToken cancellationToken)
 
			- public Task UploadFileAsync(Stream input, string path, CancellationToken cancellationToken = default)
 
		
	 
	- 
		public sealed class Shell : IDisposable
		
			- protected virtual void Dispose(bool disposing)
 
		
	 
	- 
		public sealed class ShellStream : Stream
		
			- public event EventHandler<EventArgs> Closed
 
			- public IAsyncResult BeginExpect(TimeSpan timeout, int lookback, AsyncCallback callback, object state, ExpectAction[] expectActions)
 
			- public void ChangeWindowSize(uint columns, uint rows, uint width, uint height)
 
			- public void Expect(TimeSpan timeout, int lookback, ExpectAction[] expectActions)
 
			- public string Expect(string text, TimeSpan timeout)
 
			- public string Expect(string text, TimeSpan timeout, int lookback = -1)
 
			- public string Expect(Regex regex, TimeSpan timeout)
 
			- public string Expect(Regex regex, TimeSpan timeout, int lookback = -1)
 
		
	 
	- 
		public class SshClient : BaseClient, ISshClient, IBaseClient, IDisposable
		
			- public SshClient(string host, int port, string username, PrivateKeyFile[] keyFiles)
 
			- public SshClient(string host, string username, PrivateKeyFile[] keyFiles)
 
			- public SshClient(string host, int port, string username, IPrivateKeySource[] keyFiles)
 
			- public SshClient(string host, string username, IPrivateKeySource[] keyFiles)
 
			- public Shell CreateShellNoTerminal(Stream input, Stream output, Stream extendedOutput, int bufferSize = -1)
 
			- public ShellStream CreateShellStreamNoTerminal(int bufferSize = -1)
 
		
	 
	- 
		public sealed class SshCommand : IDisposable
		
	
 
	- 
		public static class SshNetLoggingConfiguration
		
	
 
Renci.SshNet.Common
Renci.SshNet.Compression
Renci.SshNet.Connection
Renci.SshNet.Messages
Renci.SshNet.Messages.Transport
Renci.SshNet.Security
	- 
		public class Certificate
		
	
 
	- 
		public class CertificateHostAlgorithm : KeyHostAlgorithm
		
			- public CertificateHostAlgorithm(string name)
 
			- public Certificate Certificate { get; }
 
			- public CertificateHostAlgorithm(string name, Key privateKey, Certificate certificate)
 
			- public CertificateHostAlgorithm(string name, Key privateKey, Certificate certificate, DigitalSignature digitalSignature)
 
			- public CertificateHostAlgorithm(string name, Certificate certificate, IReadOnlyDictionary<string, Func<byte[], KeyHostAlgorithm>> keyAlgorithms)
 
			- public CertificateHostAlgorithm(string name, Certificate certificate, DigitalSignature digitalSignature, IReadOnlyDictionary<string, Func<byte[], KeyHostAlgorithm>> keyAlgorithms)
 
		
	 
	- 
		public class DsaKey : Key, IDisposable
		
	
 
	- 
		public class EcdsaKey : Key, IDisposable
		
	
 
	- 
		public class ED25519Key : Key, IDisposable
		
	
 
	- 
		public interface IKeyExchange : IDisposable
		
	
 
	- 
		public abstract class Key
		
	
 
	- 
		public abstract class KeyExchange : Algorithm, IKeyExchange, IDisposable
		
	
 
	- 
		public class KeyExchangeDiffieHellman : KeyExchange
		
	
 
	- 
		public class KeyExchangeDiffieHellmanGroupExchange : KeyExchange
		
	
 
	- 
		public class KeyHostAlgorithm : HostAlgorithm
		
	
 
	- 
		public class RsaKey : Key, IDisposable
		
			- public BigInteger D { get; }
 
			- public BigInteger DP { get; }
 
			- public BigInteger DQ { get; }
 
			- public BigInteger Exponent { get; }
 
			- public BigInteger InverseQ { get; }
 
			- public BigInteger Modulus { get; }
 
			- public BigInteger P { get; }
 
			- public BigInteger Q { get; }
 
			- public RsaKey()
 
			- public BigInteger D { get; }
 
			- public BigInteger DP { get; }
 
			- public BigInteger DQ { get; }
 
			- public BigInteger Exponent { get; }
 
			- public BigInteger InverseQ { get; }
 
			- public BigInteger Modulus { get; }
 
			- public BigInteger P { get; }
 
			- public BigInteger Q { get; }
 
			- public RsaKey(SshKeyData publicKeyData)
 
			- public RsaKey(BigInteger modulus, BigInteger exponent, BigInteger d, BigInteger p, BigInteger q, BigInteger inverseQ)
 
			- public RsaKey(BigInteger modulus, BigInteger exponent, BigInteger d, BigInteger p, BigInteger q, BigInteger inverseQ)
 
		
	 
	- 
		public sealed class SshKeyData : SshData
		
	
 
Renci.SshNet.Security.Cryptography
	- 
		public abstract class AsymmetricCipher : Cipher
		
	
 
	- 
		public abstract class BlockCipher : SymmetricCipher
		
			- protected BlockCipher(byte[] key, byte blockSize, CipherMode mode, CipherPadding padding)
 
			- protected BlockCipher(byte[] key, byte blockSize, CipherMode mode, IBlockCipherPadding padding)
 
			- public abstract int DecryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
 
			- public abstract int EncryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
 
		
	 
	- 
		public abstract class Cipher
		
			- public virtual int TagSize { get; }
 
		
	 
	- 
		public abstract class CipherDigitalSignature : DigitalSignature
		
	
 
	- 
		public class DsaDigitalSignature : DigitalSignature, IDisposable
		
	
 
	- 
		public class HMACMD5 : HMACMD5
		
	
 
	- 
		public class HMACSHA1 : HMACSHA1
		
	
 
	- 
		public class HMACSHA256 : HMACSHA256
		
	
 
	- 
		public class HMACSHA384 : HMACSHA384
		
	
 
	- 
		public class HMACSHA512 : HMACSHA512
		
	
 
	- 
		public class RsaDigitalSignature : DigitalSignature, IDisposable
		
	
 
	- 
		public abstract class StreamCipher : SymmetricCipher
		
	
 
	- 
		public abstract class SymmetricCipher : Cipher
		
			- public abstract int DecryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
 
			- public abstract int EncryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
 
		
	 
Renci.SshNet.Security.Cryptography.Ciphers
Renci.SshNet.Security.Cryptography.Ciphers.Paddings
Renci.SshNet.Sftp