From 5280c580d02624ad29e6b19032fedcbd843b0b53 Mon Sep 17 00:00:00 2001 From: Student Main Date: Fri, 14 Feb 2020 20:54:54 +0800 Subject: [PATCH] register native rc4 --- .../Encryption/EncryptorFactory.cs | 6 ++++++ .../Encryption/Stream/StreamNativeEncryptor.cs | 18 ++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/shadowsocks-csharp/Encryption/EncryptorFactory.cs b/shadowsocks-csharp/Encryption/EncryptorFactory.cs index fcae221a..79715149 100644 --- a/shadowsocks-csharp/Encryption/EncryptorFactory.cs +++ b/shadowsocks-csharp/Encryption/EncryptorFactory.cs @@ -28,6 +28,12 @@ namespace Shadowsocks.Encryption } // XXX: sequence matters, OpenSSL > Sodium > MbedTLS + foreach (string method in StreamNativeEncryptor.SupportedCiphers()) + { + if (!_registeredEncryptors.ContainsKey(method)) + _registeredEncryptors.Add(method, typeof(StreamNativeEncryptor)); + } + foreach (string method in StreamOpenSSLEncryptor.SupportedCiphers()) { if (!_registeredEncryptors.ContainsKey(method)) diff --git a/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs b/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs index 465e316f..ecc72535 100644 --- a/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs +++ b/shadowsocks-csharp/Encryption/Stream/StreamNativeEncryptor.cs @@ -49,12 +49,22 @@ namespace Shadowsocks.Encryption.Stream Array.Copy(t, outbuf, length); } + private static readonly Dictionary _ciphers = new Dictionary + { + { "rc4", new EncryptorInfo("RC4", 16, 16, 1) }, + { "rc4-md5", new EncryptorInfo("RC4", 16, 16, 1) }, + // it's using ivLen=16, not compatible + //{ "chacha20-ietf", new EncryptorInfo("chacha20", 32, 12, CIPHER_CHACHA20_IETF) } + }; + + public static IEnumerable SupportedCiphers() + { + return _ciphers.Keys; + } + protected override Dictionary getCiphers() { - return new Dictionary() - { - { "rc4-md5", new EncryptorInfo("rc4", 16, 16, 1) } - }; + return _ciphers; } class Context