diff --git a/shadowsocks-csharp/Encryption/AEAD/AEADNativeEncryptor.cs b/shadowsocks-csharp/Encryption/AEAD/AEADNativeEncryptor.cs new file mode 100644 index 00000000..ea4533a8 --- /dev/null +++ b/shadowsocks-csharp/Encryption/AEAD/AEADNativeEncryptor.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shadowsocks.Encryption.AEAD +{ + public class AEADNativeEncryptor : AEADEncryptor + { + public AEADNativeEncryptor(string method, string password) + : base(method, password) + { + } + + public override void cipherDecrypt(byte[] ciphertext, uint clen, byte[] plaintext, ref uint plen) + { + Array.Copy(ciphertext, plaintext, 0); + plen = clen; + + } + + public override void cipherEncrypt(byte[] plaintext, uint plen, byte[] ciphertext, ref uint clen) + { + Array.Copy(plaintext, ciphertext, 0); + clen = plen; + } + + public override void Dispose() + { + return; + } + + private static Dictionary _ciphers = new Dictionary() + { + {"plain-aeadfmt",new EncryptorInfo("PLAIN",0,0,0,0,0) } + }; + + + protected override Dictionary getCiphers() + { + return _ciphers; + } + + public static IEnumerable SupportedCiphers() + { + return _ciphers.Keys; + } + + } +} diff --git a/shadowsocks-csharp/Encryption/EncryptorFactory.cs b/shadowsocks-csharp/Encryption/EncryptorFactory.cs index 79715149..92ed8008 100644 --- a/shadowsocks-csharp/Encryption/EncryptorFactory.cs +++ b/shadowsocks-csharp/Encryption/EncryptorFactory.cs @@ -52,6 +52,11 @@ namespace Shadowsocks.Encryption _registeredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor)); } + foreach (string method in AEADNativeEncryptor.SupportedCiphers()) + { + if (!_registeredEncryptors.ContainsKey(method)) + _registeredEncryptors.Add(method, typeof(AEADNativeEncryptor)); + } foreach (string method in AEADOpenSSLEncryptor.SupportedCiphers()) { diff --git a/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs b/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs index f30bedd4..c51450ad 100644 --- a/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs +++ b/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs @@ -93,7 +93,7 @@ namespace Shadowsocks.Encryption.Stream { {"plain", new EncryptorInfo("PLAIN", 0, 0, Plain) }, {"table", new EncryptorInfo("TABLE", 0, 0, Table) }, - { "rc4", new EncryptorInfo("RC4", 16, 16, Rc4) }, + { "rc4", new EncryptorInfo("RC4", 16, 0, Rc4) }, // original RC4 doesn't use IV { "rc4-md5", new EncryptorInfo("RC4", 16, 16, Rc4Md5) }, }; diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 5cbc4d78..64cf5a2d 100644 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -116,6 +116,7 @@ +