Renamed test cases and added another umlaut test

This commit is contained in:
Thorsten Sommer 2020-01-04 19:29:37 +01:00
parent 807cd39192
commit 4f2a44ffbe

View File

@ -10,12 +10,10 @@ namespace Ed25519_Tests
public sealed class SignerTests public sealed class SignerTests
{ {
[Test] [Test]
public void TestSigner01() public void TestSignatureLength()
{ {
var message = Encoding.UTF8.GetBytes("This is a test message."); var message = Encoding.UTF8.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signature = Signer.Sign(message, privateKey, publicKey); var signature = Signer.Sign(message, privateKey, publicKey);
@ -23,17 +21,16 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner02() public void TestManipulatedPublicKey()
{ {
var message = Encoding.UTF8.GetBytes("This is a test message."); var message = Encoding.UTF8.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey()[2..]; var publicKey = privateKey.ExtractPublicKey()[2..];
try try
{ {
Signer.Sign(message, privateKey, publicKey); Signer.Sign(message, privateKey, publicKey);
Assert.That(false);
} }
catch (ArgumentException e) catch (ArgumentException e)
{ {
@ -42,12 +39,10 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner03() public void TestSimpleMessageValidation()
{ {
var message = Encoding.UTF8.GetBytes("This is a test message."); var message = Encoding.UTF8.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signature = Signer.Sign(message, privateKey, publicKey); var signature = Signer.Sign(message, privateKey, publicKey);
var validationResult = Signer.Validate(signature, message, publicKey); var validationResult = Signer.Validate(signature, message, publicKey);
@ -56,12 +51,10 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner04() public void TestSlightlyChangedMessageValidation()
{ {
var messageOriginal = Encoding.UTF8.GetBytes("This is a test message."); var messageOriginal = Encoding.UTF8.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signature = Signer.Sign(messageOriginal, privateKey, publicKey); var signature = Signer.Sign(messageOriginal, privateKey, publicKey);
@ -72,12 +65,10 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner05() public void TestSlightlyChangedMessageDifferentSignatures()
{ {
var messageOriginal = Encoding.UTF8.GetBytes("This is a test message."); var messageOriginal = Encoding.UTF8.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey); var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey);
@ -89,12 +80,10 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner06() public void TestMessageValidationWithDifferentEncodings()
{ {
var messageOriginal = Encoding.ASCII.GetBytes("This is a test message."); var messageOriginal = Encoding.ASCII.GetBytes("This is a test message.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey); var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey);
@ -106,12 +95,10 @@ namespace Ed25519_Tests
} }
[Test] [Test]
public void TestSigner07() public void TestMessageWithUmlautsAndDifferentEncodings()
{ {
var messageOriginal = Encoding.ASCII.GetBytes("This is a test message with umlauts äöü."); var messageOriginal = Encoding.ASCII.GetBytes("This is a test message with umlauts äöü.");
var privateKey = new Span<byte>(new byte[32]); var privateKey = Signer.GeneratePrivateKey();
RandomNumberGenerator.Create().GetBytes(privateKey);
var publicKey = privateKey.ExtractPublicKey(); var publicKey = privateKey.ExtractPublicKey();
var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey); var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey);
@ -122,9 +109,26 @@ namespace Ed25519_Tests
Assert.That(signatureOriginal.ToArray(), Is.Not.EqualTo(signatureAltered.ToArray())); Assert.That(signatureOriginal.ToArray(), Is.Not.EqualTo(signatureAltered.ToArray()));
} }
[Test]
public void TestMessageWithUmlauts()
{
var messageOriginal = Encoding.UTF8.GetBytes("This is a test message with umlauts äöü.");
var privateKey = Signer.GeneratePrivateKey();
var publicKey = privateKey.ExtractPublicKey();
var signatureOriginal = Signer.Sign(messageOriginal, privateKey, publicKey);
var message2 = Encoding.UTF8.GetBytes("This is a test message with umlauts äöü.");
var signature2 = Signer.Sign(message2, privateKey, publicKey);
var validationResult = Signer.Validate(signatureOriginal, message2, publicKey);
// Two equal messages must produce same signatures:
Assert.That(signatureOriginal.ToArray(), Is.EqualTo(signature2.ToArray()));
Assert.That(validationResult, Is.True);
}
// See https://tools.ietf.org/html/rfc8032#section-7.1 // See https://tools.ietf.org/html/rfc8032#section-7.1
[Test] [Test]
public void TestRFC8032Test01() public void TestRFC8032Test01EmptyMessage()
{ {
var message = new ReadOnlySpan<byte>(); // Empty message! var message = new ReadOnlySpan<byte>(); // Empty message!
var publicKey = new byte[] var publicKey = new byte[]
@ -156,7 +160,7 @@ namespace Ed25519_Tests
// See https://tools.ietf.org/html/rfc8032#section-7.1 // See https://tools.ietf.org/html/rfc8032#section-7.1
[Test] [Test]
public void TestRFC8032Test02() public void TestRFC8032Test02OneByteMessage()
{ {
var message = new byte[] var message = new byte[]
{ {
@ -192,7 +196,7 @@ namespace Ed25519_Tests
// See https://tools.ietf.org/html/rfc8032#section-7.1 // See https://tools.ietf.org/html/rfc8032#section-7.1
[Test] [Test]
public void TestRFC8032Test03() public void TestRFC8032Test03TwoByteMessage()
{ {
var message = new byte[] var message = new byte[]
{ {
@ -229,7 +233,7 @@ namespace Ed25519_Tests
// See https://tools.ietf.org/html/rfc8032#section-7.1 // See https://tools.ietf.org/html/rfc8032#section-7.1
[Test] [Test]
public void TestRFC8032Test04() public void TestRFC8032Test04With1kMessage()
{ {
var message = new byte[] var message = new byte[]
{ {