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 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); }
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; } }
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); }
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)); } } }