示例#1
0
        static EncryptorFactory()
        {
            foreach (var method in NoneEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(NoneEncryptor));
                }
            }

            foreach (var method in StreamOpenSSLEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamOpenSSLEncryptor));
                }
            }


            foreach (var method in StreamSodiumEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamSodiumEncryptor));
                }
            }

            foreach (var method in StreamMbedTLSEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor));
                }
            }
        }
示例#2
0
        static EncryptorFactory()
        {
            var AEADMbedTLSEncryptorSupportedCiphers = AEADMbedTLSEncryptor.SupportedCiphers();
            var AEADSodiumEncryptorSupportedCiphers  = AEADSodiumEncryptor.SupportedCiphers();

            if (Sodium.AES256GCMAvailable)
            {
                // prefer to aes-256-gcm in libsodium
                AEADMbedTLSEncryptorSupportedCiphers.Remove("aes-256-gcm");
            }
            else
            {
                AEADSodiumEncryptorSupportedCiphers.Remove("aes-256-gcm");
            }

            foreach (string method in StreamMbedTLSEncryptor.SupportedCiphers())
            {
                _registeredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor));
            }
            foreach (string method in StreamSodiumEncryptor.SupportedCiphers())
            {
                _registeredEncryptors.Add(method, typeof(StreamSodiumEncryptor));
            }
            foreach (string method in AEADMbedTLSEncryptorSupportedCiphers)
            {
                _registeredEncryptors.Add(method, typeof(AEADMbedTLSEncryptor));
            }
            foreach (string method in AEADSodiumEncryptorSupportedCiphers)
            {
                _registeredEncryptors.Add(method, typeof(AEADSodiumEncryptor));
            }
        }
        public void TestStreamMbedTLSEncryption()
        {
            var failed = false;

            // run it once before the multi-threading test to initialize global tables
            RunSingleStreamMbedTLSEncryptionThread();
            var tasks = new List <Task>();

            foreach (var cipher in StreamMbedTLSEncryptor.SupportedCiphers())
            {
                if (cipher.EndsWith(@"-cbc"))
                {
                    continue;
                }
                var t = new Task(() =>
                {
                    try
                    {
                        RunSingleStreamMbedTLSEncryptionThread(cipher);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($@"{cipher}:{e.Message}");
                        failed = true;
                        throw;
                    }
                });
                tasks.Add(t);
                t.Start();
            }

            Task.WaitAll(tasks.ToArray());
            Assert.IsFalse(failed);
        }
        static EncryptorFactory()
        {
            foreach (var method in NoneEncryptor.SupportedCiphers().Where(method => !RegisteredEncryptors.ContainsKey(method)))
            {
                RegisteredEncryptors.Add(method, typeof(NoneEncryptor));
            }

            foreach (var method in StreamOpenSSLEncryptor.SupportedCiphers().Where(method => !RegisteredEncryptors.ContainsKey(method)))
            {
                RegisteredEncryptors.Add(method, typeof(StreamOpenSSLEncryptor));
            }

            foreach (var method in StreamSodiumEncryptor.SupportedCiphers().Where(method => !RegisteredEncryptors.ContainsKey(method)))
            {
                RegisteredEncryptors.Add(method, typeof(StreamSodiumEncryptor));
            }

            foreach (var method in StreamMbedTLSEncryptor.SupportedCiphers().Where(method => !RegisteredEncryptors.ContainsKey(method)))
            {
                RegisteredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor));
            }

            var allEncryptor = new StringBuilder(Environment.NewLine);

            allEncryptor.AppendLine(@"============================");
            allEncryptor.AppendLine(@"Registered Encryptor Info");
            foreach (var encryptor in RegisteredEncryptors)
            {
                allEncryptor.AppendLine($@"{encryptor.Key}=>{encryptor.Value.Name}");
            }
            allEncryptor.AppendLine(@"============================");
            Console.WriteLine(allEncryptor);
        }
        private void RunSingleRC4EncryptionThread()
        {
            var        method    = "rc4-md5";
            var        password  = "******";
            IEncryptor encryptor = new StreamMbedTLSEncryptor(method, password);
            IEncryptor decryptor = new StreamMbedTLSEncryptor(method, password);

            RunEncryptionTest(encryptor, decryptor);
        }
 private void RunSingleStreamMbedTLSEncryptionThread(string methodName = @"rc4-md5-6", string password = @"barfoo!")
 {
     for (var i = 0; i < 100; i++)
     {
         IEncryptor encryptor = new StreamMbedTLSEncryptor(methodName, password);
         IEncryptor decryptor = new StreamMbedTLSEncryptor(methodName, password);
         RunEncryptionRound(encryptor, decryptor);
     }
 }
示例#7
0
 private void RunSingleRC4EncryptionThread()
 {
     try
     {
         for (int i = 0; i < 100; i++)
         {
             IEncryptor encryptor = new StreamMbedTLSEncryptor("rc4-md5", "barfoo!");
             IEncryptor decryptor = new StreamMbedTLSEncryptor("rc4-md5", "barfoo!");
             RunStreamEncryptionRound(encryptor, decryptor);
         }
     }
     catch
     {
         encryptionFailed = true;
         throw;
     }
 }
示例#8
0
 private void RunSingleMbedTLSEncryptionThread()
 {
     try
     {
         for (int i = 0; i < 100; i++)
         {
             IEncryptor encryptor;
             IEncryptor decryptor;
             encryptor = new StreamMbedTLSEncryptor("aes-256-cfb", "barfoo!");
             decryptor = new StreamMbedTLSEncryptor("aes-256-cfb", "barfoo!");
             RunEncryptionRound(encryptor, decryptor);
         }
     }
     catch
     {
         encryptionFailed = true;
         throw;
     }
 }
示例#9
0
 static EncryptorFactory()
 {
     foreach (string method in StreamMbedTLSEncryptor.SupportedCiphers())
     {
         _registeredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor));
     }
     foreach (string method in StreamSodiumEncryptor.SupportedCiphers())
     {
         _registeredEncryptors.Add(method, typeof(StreamSodiumEncryptor));
     }
     foreach (string method in AEADMbedTLSEncryptor.SupportedCiphers())
     {
         _registeredEncryptors.Add(method, typeof(AEADMbedTLSEncryptor));
     }
     foreach (string method in AEADSodiumEncryptor.SupportedCiphers())
     {
         _registeredEncryptors.Add(method, typeof(AEADSodiumEncryptor));
     }
 }
示例#10
0
        static EncryptorFactory()
        {
            var AEADMbedTLSEncryptorSupportedCiphers = AEADMbedTLSEncryptor.SupportedCiphers();
            var AEADSodiumEncryptorSupportedCiphers  = AEADSodiumEncryptor.SupportedCiphers();

            if (Sodium.AES256GCMAvailable)
            {
                // prefer to aes-256-gcm in libsodium
                AEADMbedTLSEncryptorSupportedCiphers.Remove("aes-256-gcm");
            }
            else
            {
                AEADSodiumEncryptorSupportedCiphers.Remove("aes-256-gcm");
            }
#if I_KNOW_STREAM_CIPHER_IS_UNSAFE
            // XXX: sequence matters, OpenSSL > Sodium > MbedTLS
            foreach (string method in StreamOpenSSLEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamOpenSSLEncryptor));
                }
            }

            foreach (string method in StreamSodiumEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamSodiumEncryptor));
                }
            }

            foreach (string method in StreamMbedTLSEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(StreamMbedTLSEncryptor));
                }
            }
#endif

            foreach (string method in AEADOpenSSLEncryptor.SupportedCiphers())
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(AEADOpenSSLEncryptor));
                }
            }

            foreach (string method in AEADSodiumEncryptorSupportedCiphers)
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(AEADSodiumEncryptor));
                }
            }

            foreach (string method in AEADMbedTLSEncryptorSupportedCiphers)
            {
                if (!_registeredEncryptors.ContainsKey(method))
                {
                    _registeredEncryptors.Add(method, typeof(AEADMbedTLSEncryptor));
                }
            }
        }