Skip to content

Commit 2ebb953

Browse files
committed
Use BCL CipherMode enum for AesCipher class just like TripleDesCipher class; Create a dedicated AesCtrCipher class just like AesGcmCipher class.
1 parent 8712c99 commit 2ebb953

37 files changed

+457
-2915
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ The main types provided by this library are:
118118

119119
Private keys in OpenSSL traditional PEM format can be encrypted using one of the following cipher methods:
120120
* DES-EDE3-CBC
121-
* DES-EDE3-CFB
122121
* AES-128-CBC
123122
* AES-192-CBC
124123
* AES-256-CBC

src/Renci.SshNet/ConnectionInfo.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
using Renci.SshNet.Security.Cryptography;
1919
using Renci.SshNet.Security.Cryptography.Ciphers;
2020

21-
using CipherMode = System.Security.Cryptography.CipherMode;
22-
2321
namespace Renci.SshNet
2422
{
2523
/// <summary>
@@ -377,16 +375,16 @@ public ConnectionInfo(string host, int port, string username, ProxyTypes proxyTy
377375

378376
Encryptions = new OrderedDictionary<string, CipherInfo>
379377
{
380-
{ "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
381-
{ "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
382-
{ "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
378+
{ "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCtrCipher(key, iv)) },
379+
{ "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCtrCipher(key, iv)) },
380+
{ "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCtrCipher(key, iv)) },
383381
{ "[email protected]", new CipherInfo(128, (key, iv) => new AesGcmCipher(key, iv, aadLength: 4), isAead: true) },
384382
{ "[email protected]", new CipherInfo(256, (key, iv) => new AesGcmCipher(key, iv, aadLength: 4), isAead: true) },
385383
{ "[email protected]", new CipherInfo(512, (key, iv) => new ChaCha20Poly1305Cipher(key, aadLength: 4), isAead: true) },
386-
{ "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
387-
{ "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
388-
{ "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
389-
{ "3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false)) },
384+
{ "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, CipherMode.CBC)) },
385+
{ "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, CipherMode.CBC)) },
386+
{ "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, CipherMode.CBC)) },
387+
{ "3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC)) },
390388
};
391389

392390
HmacAlgorithms = new OrderedDictionary<string, HashInfo>

src/Renci.SshNet/PrivateKeyFile.OpenSSH.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22
using System;
33
using System.Globalization;
44
using System.Linq;
5+
using System.Security.Cryptography;
56
using System.Text;
67

78
using Renci.SshNet.Common;
89
using Renci.SshNet.Security;
910
using Renci.SshNet.Security.Cryptography;
1011
using Renci.SshNet.Security.Cryptography.Ciphers;
1112

12-
using CipherMode = System.Security.Cryptography.CipherMode;
13-
1413
namespace Renci.SshNet
1514
{
1615
public partial class PrivateKeyFile
@@ -92,25 +91,25 @@ public Key Parse()
9291
{
9392
case "3des-cbc":
9493
ivLength = 8;
95-
cipherInfo = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false));
94+
cipherInfo = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC));
9695
break;
9796
case "aes128-cbc":
98-
cipherInfo = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false));
97+
cipherInfo = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, CipherMode.CBC));
9998
break;
10099
case "aes192-cbc":
101-
cipherInfo = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false));
100+
cipherInfo = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, CipherMode.CBC));
102101
break;
103102
case "aes256-cbc":
104-
cipherInfo = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false));
103+
cipherInfo = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, CipherMode.CBC));
105104
break;
106105
case "aes128-ctr":
107-
cipherInfo = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false));
106+
cipherInfo = new CipherInfo(128, (key, iv) => new AesCtrCipher(key, iv));
108107
break;
109108
case "aes192-ctr":
110-
cipherInfo = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false));
109+
cipherInfo = new CipherInfo(192, (key, iv) => new AesCtrCipher(key, iv));
111110
break;
112111
case "aes256-ctr":
113-
cipherInfo = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false));
112+
cipherInfo = new CipherInfo(256, (key, iv) => new AesCtrCipher(key, iv));
114113
break;
115114
116115
cipherInfo = new CipherInfo(128, (key, iv) => new AesGcmCipher(key, iv, aadLength: 0), isAead: true);

src/Renci.SshNet/PrivateKeyFile.PKCS1.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
using Renci.SshNet.Security;
1111
using Renci.SshNet.Security.Cryptography.Ciphers;
1212

13-
using CipherMode = System.Security.Cryptography.CipherMode;
14-
1513
namespace Renci.SshNet
1614
{
1715
public partial class PrivateKeyFile
@@ -50,17 +48,14 @@ public Key Parse()
5048
case "DES-EDE3-CBC":
5149
cipher = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
5250
break;
53-
case "DES-EDE3-CFB":
54-
cipher = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CFB, pkcs7Padding: false));
55-
break;
5651
case "AES-128-CBC":
57-
cipher = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
52+
cipher = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
5853
break;
5954
case "AES-192-CBC":
60-
cipher = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
55+
cipher = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
6156
break;
6257
case "AES-256-CBC":
63-
cipher = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
58+
cipher = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
6459
break;
6560
default:
6661
throw new SshException(string.Format(CultureInfo.InvariantCulture, "Private key cipher \"{0}\" is not supported.", _cipherName));

src/Renci.SshNet/PrivateKeyFile.PuTTY.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public Key Parse()
106106
throw new SshException("PuTTY key file version " + _version + " is not supported");
107107
}
108108

109-
using (var cipher = new AesCipher(cipherKey, cipherIV, AesCipherMode.CBC, pkcs7Padding: false))
109+
using (var cipher = new AesCipher(cipherKey, cipherIV, CipherMode.CBC))
110110
{
111111
privateKey = cipher.Decrypt(_data);
112112
}

src/Renci.SshNet/PrivateKeyFile.SSHCOM.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
using Renci.SshNet.Security;
1010
using Renci.SshNet.Security.Cryptography.Ciphers;
1111

12-
using CipherMode = System.Security.Cryptography.CipherMode;
13-
1412
namespace Renci.SshNet
1513
{
1614
public partial class PrivateKeyFile
@@ -53,7 +51,7 @@ public Key Parse()
5351
}
5452

5553
var key = GetCipherKey(_passPhrase, 192 / 8);
56-
using var ssh2Сipher = new TripleDesCipher(key, new byte[8], CipherMode.CBC, pkcs7Padding: false);
54+
using var ssh2Сipher = new TripleDesCipher(key, new byte[8], CipherMode.CBC);
5755
keyData = ssh2Сipher.Decrypt(dataReader.ReadBytes(blobSize));
5856
}
5957
else

src/Renci.SshNet/PrivateKeyFile.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ namespace Renci.SshNet
4040
/// <description>DES-EDE3-CBC</description>
4141
/// </item>
4242
/// <item>
43-
/// <description>DES-EDE3-CFB</description>
44-
/// </item>
45-
/// <item>
4643
/// <description>AES-128-CBC</description>
4744
/// </item>
4845
/// <item>

src/Renci.SshNet/Security/Cryptography/BlockCipher.cs

Lines changed: 0 additions & 223 deletions
This file was deleted.

0 commit comments

Comments
 (0)