コード例 #1
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));
            }
        }
コード例 #2
0
        public void TestDeriveSessionKey()
        {
            string pass = "******";

            byte[] skey_test = new byte[32];
            byte[] saltBytes =
            {
                0x8c, 0xfe, 0x67, 0x9a, 0x4c, 0x05, 0xfe, 0x36, 0xca, 0x00, 0x9c, 0x90, 0xe9, 0x66, 0x5b,
                0x48, 0x35, 0x1c, 0x07, 0x55, 0x18, 0x94, 0x32, 0x72, 0xc8, 0x40, 0xd2, 0xfd, 0x1f, 0xd4, 0xf1, 0x22
            };
            byte[] masterKeyBytes =
            {
                0x4d, 0x79, 0xd4, 0x6e, 0x63, 0x7d, 0xb5, 0x0d, 0xd1, 0x7b, 0x24, 0xe3, 0xb8, 0xdf,
                0xf3, 0xb5, 0xde, 0xba, 0x42, 0xaf, 0x3a, 0x2e, 0x94, 0xbf, 0xb2, 0xf4, 0x37, 0x91, 0xae, 0xd4, 0x65,
                0x04
            };
            byte[] skey_ref =
            {
                0x60, 0xc7, 0xa8, 0xe5, 0x59, 0x6b, 0x7a, 0xcd, 0x65, 0xd8, 0xe5, 0x54, 0x31, 0x57, 0x89,
                0xf2, 0x39, 0xa7, 0xf8, 0x96, 0x37, 0x88, 0x90, 0x9e, 0xc1, 0xe1, 0xc2, 0xb7, 0xf0, 0x9f, 0x6f, 0xd9
            };
            AEADSodiumEncryptor encryptor = new AEADSodiumEncryptor("chacha20-ietf-poly1305", pass);

            encryptor.DeriveSessionKey(saltBytes, masterKeyBytes, skey_test);
            string skey1str = Convert.ToBase64String(skey_test);
            string skey2str = Convert.ToBase64String(skey_ref);

            Assert.IsTrue(skey1str == skey2str);
        }
コード例 #3
0
 private void RunSingleAEADSodiumEncryptionThread()
 {
     try
     {
         for (int i = 0; i < 100; i++)
         {
             IEncryptor encryptor = new AEADSodiumEncryptor("chacha20-poly1305", "barfoo!");
             IEncryptor decryptor = new AEADSodiumEncryptor("chacha20-poly1305", "barfoo!");
             encryptor.AddrBufLength = abufLength;
             RunAEADEncryptionRound(encryptor, decryptor);
         }
     }
     catch
     {
         encryptionFailed = true;
         throw;
     }
 }
コード例 #4
0
        public void TestDeriveKey()
        {
            string pass = "******";

            byte[] passBytes = Encoding.UTF8.GetBytes(pass);
            byte[] key_test  = new byte[32];
            AEADSodiumEncryptor encryptor = new AEADSodiumEncryptor("chacha20-ietf-poly1305", pass);

            encryptor.DeriveKey(passBytes, key_test, 32);
            byte[] key_ref =
            {
                0xb5, 0x02, 0xe1, 0x43, 0x31, 0x6e, 0xea, 0xad, 0x3d, 0x9d, 0xd2, 0x9f, 0x1c, 0xdc, 0x1a,
                0xe9, 0xbd, 0x48, 0x2c, 0xda, 0xa8, 0x21, 0x99, 0x3b, 0x85, 0x45, 0x22, 0x34, 0x9a, 0x91, 0x33, 0xfd
            };
            string key1str = Convert.ToBase64String(key_test);
            string key2str = Convert.ToBase64String(key_ref);

            Assert.IsTrue(key1str == key2str);
        }
コード例 #5
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));
     }
 }
コード例 #6
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));
                }
            }
        }