2019-07-25 16:39:43 +02:00
|
|
|
|
using ModernKeePassLib.Cryptography;
|
|
|
|
|
using ModernKeePassLib.Utility;
|
2019-07-29 17:30:15 +02:00
|
|
|
|
using NUnit.Framework;
|
2019-07-25 16:39:43 +02:00
|
|
|
|
|
|
|
|
|
namespace ModernKeePassLib.Test.Cryptography
|
|
|
|
|
{
|
2019-07-29 17:30:15 +02:00
|
|
|
|
[TestFixture]
|
2019-07-25 16:39:43 +02:00
|
|
|
|
public class CryptoRandomStreamTests
|
|
|
|
|
{
|
|
|
|
|
private void TestGetRandomBytes(CryptoRandomStream stream)
|
|
|
|
|
{
|
|
|
|
|
const uint length = 16;
|
|
|
|
|
var bytes1 = stream.GetRandomBytes(length);
|
2019-07-29 17:30:15 +02:00
|
|
|
|
Assert.That((int)length, Is.EqualTo(bytes1.Length));
|
2019-07-25 16:39:43 +02:00
|
|
|
|
var bytes2 = stream.GetRandomBytes(length);
|
2019-07-29 17:30:15 +02:00
|
|
|
|
Assert.That(MemUtil.ArraysEqual(bytes2, bytes1), Is.False);
|
2019-07-25 16:39:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-07-29 17:30:15 +02:00
|
|
|
|
[Test]
|
2019-07-25 16:39:43 +02:00
|
|
|
|
public void TestGetRandomBytesCrsAlgorithmSalsa20()
|
|
|
|
|
{
|
|
|
|
|
var stream = new CryptoRandomStream(CrsAlgorithm.Salsa20, new byte[16]);
|
|
|
|
|
TestGetRandomBytes(stream);
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-29 17:30:15 +02:00
|
|
|
|
[Test]
|
2019-07-25 16:39:43 +02:00
|
|
|
|
public void TestGetRandomBytesCrsAlgorithmArcFourVariant()
|
|
|
|
|
{
|
|
|
|
|
var stream = new CryptoRandomStream(CrsAlgorithm.ArcFourVariant, new byte[16]);
|
|
|
|
|
TestGetRandomBytes(stream);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void TestGetRandomInt64(CryptoRandomStream stream)
|
|
|
|
|
{
|
|
|
|
|
var value1 = stream.GetRandomUInt64();
|
|
|
|
|
var value2 = stream.GetRandomUInt64();
|
2019-07-29 17:30:15 +02:00
|
|
|
|
Assert.That(value2, Is.Not.EqualTo(value1));
|
2019-07-25 16:39:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-07-29 17:30:15 +02:00
|
|
|
|
[Test]
|
2019-07-25 16:39:43 +02:00
|
|
|
|
public void TestGetRandomInt64AlgorithmSalsa20()
|
|
|
|
|
{
|
|
|
|
|
var stream = new CryptoRandomStream(CrsAlgorithm.Salsa20, new byte[16]);
|
|
|
|
|
TestGetRandomInt64(stream);
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-29 17:30:15 +02:00
|
|
|
|
[Test]
|
2019-07-25 16:39:43 +02:00
|
|
|
|
public void TestGetRandomInt64AlgorithmArcFourVariant()
|
|
|
|
|
{
|
|
|
|
|
var stream = new CryptoRandomStream(CrsAlgorithm.ArcFourVariant, new byte[16]);
|
|
|
|
|
TestGetRandomInt64(stream);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|