Added a factory class for instantiating crypto providers

This commit is contained in:
David Sparer
2016-07-11 18:07:22 -06:00
parent 12165ac9a6
commit 4f86e0da62
6 changed files with 177 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
using mRemoteNG.Security;
using NUnit.Framework;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
namespace mRemoteNGTests.Security
{
[TestFixture]
public class CryptographyProviderFactoryTests
{
private CryptographyProviderFactory _cryptographyProviderFactory;
[SetUp]
public void SetUp()
{
_cryptographyProviderFactory = new CryptographyProviderFactory();
}
[TearDown]
public void TearDown()
{
_cryptographyProviderFactory = null;
}
[Test]
public void CanCreateAesGcm()
{
var engine = BlockCipherEngines.AES;
var mode = BlockCipherModes.GCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateAesCcm()
{
var engine = BlockCipherEngines.AES;
var mode = BlockCipherModes.CCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateAesEax()
{
var engine = BlockCipherEngines.AES;
var mode = BlockCipherModes.EAX;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateSerpentGcm()
{
var engine = BlockCipherEngines.Serpent;
var mode = BlockCipherModes.GCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateSerpentCcm()
{
var engine = BlockCipherEngines.Serpent;
var mode = BlockCipherModes.CCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateSerpentEax()
{
var engine = BlockCipherEngines.Serpent;
var mode = BlockCipherModes.EAX;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateTwofishCcm()
{
var engine = BlockCipherEngines.Twofish;
var mode = BlockCipherModes.CCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateTwofishEax()
{
var engine = BlockCipherEngines.Twofish;
var mode = BlockCipherModes.EAX;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
[Test]
public void CanCreateTwofishGcm()
{
var engine = BlockCipherEngines.Twofish;
var mode = BlockCipherModes.GCM;
var cryptoProvider = _cryptographyProviderFactory.CreateAeadCryptographyProvider(engine, mode);
Assert.That(cryptoProvider.CipherEngine, Is.EqualTo($"{engine}/{mode}"));
}
}
}