Skip to content

Commit 0a89a35

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 e5ad82c commit 0a89a35

33 files changed

+375
-2847
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: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
using Renci.SshNet.Security.Cryptography;
1818
using Renci.SshNet.Security.Cryptography.Ciphers;
1919

20-
using CipherMode = System.Security.Cryptography.CipherMode;
21-
2220
namespace Renci.SshNet
2321
{
2422
/// <summary>
@@ -370,15 +368,15 @@ public ConnectionInfo(string host, int port, string username, ProxyTypes proxyTy
370368

371369
Encryptions = new OrderedDictionary<string, CipherInfo>
372370
{
373-
{ "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
374-
{ "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
375-
{ "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
371+
{ "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCtrCipher(key, iv)) },
372+
{ "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCtrCipher(key, iv)) },
373+
{ "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCtrCipher(key, iv)) },
376374
{ "aes128-gcm@openssh.com", new CipherInfo(128, (key, iv) => new AesGcmCipher(key, iv, aadLength: 4), isAead: true) },
377375
{ "aes256-gcm@openssh.com", new CipherInfo(256, (key, iv) => new AesGcmCipher(key, iv, aadLength: 4), isAead: true) },
378376
{ "chacha20-poly1305@openssh.com", new CipherInfo(512, (key, iv) => new ChaCha20Poly1305Cipher(key, aadLength: 4), isAead: true) },
379-
{ "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
380-
{ "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
381-
{ "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
377+
{ "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false)) },
378+
{ "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false)) },
379+
{ "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false)) },
382380
{ "3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false)) },
383381
};
384382

src/Renci.SshNet/PrivateKeyFile.OpenSSH.cs

Lines changed: 7 additions & 8 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
@@ -95,22 +94,22 @@ public Key Parse()
9594
cipherInfo = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: false));
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, pkcs7Padding: false));
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, pkcs7Padding: false));
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, pkcs7Padding: false));
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
case "aes128-gcm@openssh.com":
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
@@ -53,17 +51,14 @@ public Key Parse()
5351
case "DES-EDE3-CBC":
5452
cipher = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
5553
break;
56-
case "DES-EDE3-CFB":
57-
cipher = new CipherInfo(192, (key, iv) => new TripleDesCipher(key, iv, CipherMode.CFB, pkcs7Padding: false));
58-
break;
5954
case "AES-128-CBC":
60-
cipher = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
55+
cipher = new CipherInfo(128, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
6156
break;
6257
case "AES-192-CBC":
63-
cipher = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
58+
cipher = new CipherInfo(192, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
6459
break;
6560
case "AES-256-CBC":
66-
cipher = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: true));
61+
cipher = new CipherInfo(256, (key, iv) => new AesCipher(key, iv, CipherMode.CBC, pkcs7Padding: true));
6762
break;
6863
default:
6964
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
@@ -111,7 +111,7 @@ public Key Parse()
111111
throw new SshException("PuTTY key file version " + _version + " is not supported");
112112
}
113113

114-
using (var cipher = new AesCipher(cipherKey, cipherIV, AesCipherMode.CBC, pkcs7Padding: false))
114+
using (var cipher = new AesCipher(cipherKey, cipherIV, CipherMode.CBC, pkcs7Padding: false))
115115
{
116116
privateKey = cipher.Decrypt(_data);
117117
}

src/Renci.SshNet/PrivateKeyFile.SSHCOM.cs

Lines changed: 0 additions & 2 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

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)