|
@@ -55,7 +55,9 @@ namespace Renci.SshNet
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// Gets supported encryptions for this connection.
|
|
/// Gets supported encryptions for this connection.
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
|
|
+#pragma warning disable CA1859 // Use concrete types when possible for improved performance
|
|
|
public IDictionary<string, CipherInfo> Encryptions { get; private set; }
|
|
public IDictionary<string, CipherInfo> Encryptions { get; private set; }
|
|
|
|
|
+#pragma warning restore CA1859 // Use concrete types when possible for improved performance
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// Gets supported hash algorithms for this connection.
|
|
/// Gets supported hash algorithms for this connection.
|
|
@@ -380,25 +382,30 @@ namespace Renci.SshNet
|
|
|
{ "diffie-hellman-group1-sha1", () => new KeyExchangeDiffieHellmanGroup1Sha1() },
|
|
{ "diffie-hellman-group1-sha1", () => new KeyExchangeDiffieHellmanGroup1Sha1() },
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- Encryptions = new Dictionary<string, CipherInfo>
|
|
|
|
|
- {
|
|
|
|
|
- { "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
|
|
|
|
|
- { "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
|
|
|
|
|
- { "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
|
|
|
|
|
- { "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
|
|
|
|
|
- { "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
|
|
|
|
|
- { "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
|
|
|
|
|
- { "3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "blowfish-cbc", new CipherInfo(128, (key, iv) => new BlowfishCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "twofish-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "twofish192-cbc", new CipherInfo(192, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "twofish128-cbc", new CipherInfo(128, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "twofish256-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- { "arcfour", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: false)) },
|
|
|
|
|
- { "arcfour128", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)) },
|
|
|
|
|
- { "arcfour256", new CipherInfo(256, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)) },
|
|
|
|
|
- { "cast128-cbc", new CipherInfo(128, (key, iv) => new CastCipher(key, new CbcCipherMode(iv), padding: null)) },
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ Encryptions = new Dictionary<string, CipherInfo>();
|
|
|
|
|
+ Encryptions.Add("aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
|
|
|
|
|
+ Encryptions.Add("aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
|
|
|
|
|
+ Encryptions.Add("aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
|
|
|
|
|
+#if NET6_0_OR_GREATER
|
|
|
|
|
+ if (AesGcm.IsSupported)
|
|
|
|
|
+ {
|
|
|
|
|
+ Encryptions.Add("aes128-gcm@openssh.com", new CipherInfo(128, (key, iv) => new AesGcmCipher(key, iv), isAead: true));
|
|
|
|
|
+ Encryptions.Add("aes256-gcm@openssh.com", new CipherInfo(256, (key, iv) => new AesGcmCipher(key, iv), isAead: true));
|
|
|
|
|
+ }
|
|
|
|
|
+#endif
|
|
|
|
|
+ Encryptions.Add("aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
|
|
|
|
|
+ Encryptions.Add("aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
|
|
|
|
|
+ Encryptions.Add("aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
|
|
|
|
|
+ Encryptions.Add("3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("blowfish-cbc", new CipherInfo(128, (key, iv) => new BlowfishCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("twofish-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("twofish192-cbc", new CipherInfo(192, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("twofish128-cbc", new CipherInfo(128, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("twofish256-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
+ Encryptions.Add("arcfour", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: false)));
|
|
|
|
|
+ Encryptions.Add("arcfour128", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)));
|
|
|
|
|
+ Encryptions.Add("arcfour256", new CipherInfo(256, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)));
|
|
|
|
|
+ Encryptions.Add("cast128-cbc", new CipherInfo(128, (key, iv) => new CastCipher(key, new CbcCipherMode(iv), padding: null)));
|
|
|
|
|
|
|
|
#pragma warning disable IDE0200 // Remove unnecessary lambda expression; We want to prevent instantiating the HashAlgorithm objects.
|
|
#pragma warning disable IDE0200 // Remove unnecessary lambda expression; We want to prevent instantiating the HashAlgorithm objects.
|
|
|
HmacAlgorithms = new Dictionary<string, HashInfo>
|
|
HmacAlgorithms = new Dictionary<string, HashInfo>
|