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 TestAEADudp() { string pass = "******"; 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 }; AEADEncryptor encryptor = new AEADMbedTLSEncryptor("aes-256-gcm", pass); AEADEncryptor decryptor = new AEADMbedTLSEncryptor("aes-256-gcm", pass); byte[] plain = new byte[1500]; byte[] cipher = new byte[2048]; byte[] plain2 = new byte[1500]; int cipherLen; int plain2Len; _random.NextBytes(plain); encryptor.InitCipher(saltBytes, true, true); encryptor.EncryptUDP(plain, 1500, cipher, out cipherLen); decryptor.InitCipher(saltBytes, false, true); decryptor.DecryptUDP(cipher, cipherLen, plain2, out plain2Len); Assert.IsTrue(plain2Len == 1500); for (int i = 0; i < 1500; i++) { Assert.AreEqual(plain[i], plain2[i]); } }
private void RunSingleAEADMbedTLSEncryptionThread() { try { for (int i = 0; i < 100; i++) { IEncryptor encryptor = new AEADMbedTLSEncryptor("aes-256-gcm", "barfoo!"); IEncryptor decryptor = new AEADMbedTLSEncryptor("aes-256-gcm", "barfoo!"); encryptor.AddrBufLength = abufLength; RunAEADEncryptionRound(encryptor, decryptor); } } catch { encryptionFailed = true; throw; } }
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)); } }
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)); } } }