Skip to content

Commit

Permalink
Renamed some tests so we can now what they are supposed to be testing…
Browse files Browse the repository at this point in the history
… only by looking at the name.

Added some comments inside tests to make it more clear.
Remove duplications and not used stuff inside tests.
  • Loading branch information
leandrogm committed Sep 2, 2016
1 parent efe0052 commit 99f7e47
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 82 deletions.
2 changes: 1 addition & 1 deletion src/TweetNaCl.Tests/LibsodiumTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public class LibsodiumTests

/* API requires first 32 bytes to be 0 */
static readonly Byte[] m =
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0xbe, 0x07, 0x5f, 0xc5,
0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b,
Expand Down
181 changes: 100 additions & 81 deletions src/TweetNaCl.Tests/TweetNaClTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,25 @@ namespace NaCl.Tests
public class TweetNaClTests
{
[Test]
public void TestForRandomBytesGeneration()
public void RandomBytesGeneration_Should_Maintain_Length()
{
Byte[] b200 = new Byte[200];
Byte[] b100 = new Byte[100];
Byte[] b10 = new Byte[10];
//Arrange
Byte[] b1 = new Byte[1];
Byte[] b10 = new Byte[10];
Byte[] b100 = new Byte[100];
Byte[] b200 = new Byte[200];

TweetNaCl.RandomBytes(b10);
//Act
TweetNaCl.RandomBytes(b1);
TweetNaCl.RandomBytes(b10);
TweetNaCl.RandomBytes(b100);
TweetNaCl.RandomBytes(b200);

String text10 = Encoding.ASCII.GetString(b10);
//Assert
String text1 = Encoding.ASCII.GetString(b1);
String text10 = Encoding.ASCII.GetString(b10);
String text100 = Encoding.ASCII.GetString(b100);
String text200 = Encoding.ASCII.GetString(b200);
String text1 = Encoding.ASCII.GetString(b1);

Assert.AreEqual(1, text1.Length);
Assert.AreEqual(10, text10.Length);
Expand All @@ -65,168 +68,175 @@ public void TestForRandomBytesGeneration()
}

[Test]
public void TestForCryptoScalarmult()
public void CryptoScalarmult_Should_Success()
{
//Arrange
Byte[] n = new Byte[TweetNaCl.ScalarmultBytes];
Byte[] p = new Byte[TweetNaCl.ScalarBytes];
Byte[] q = new Byte[TweetNaCl.ScalarmultBytes];

TweetNaCl.RandomBytes(n);
TweetNaCl.RandomBytes(p);

//Act
q = TweetNaCl.CryptoScalarmult(n, p);
Assert.AreEqual(Encoding.ASCII.GetString(q).Length, 32, "wrong size for resulting group element q.");
}

[Test]
public void TestForCryptoScalarmultBase()
{
Byte[] n = new Byte[TweetNaCl.ScalarmultBytes];
Byte[] p = new Byte[TweetNaCl.ScalarBytes];
Byte[] q = new Byte[TweetNaCl.ScalarmultBytes];

TweetNaCl.RandomBytes(n);
TweetNaCl.RandomBytes(p);

q = TweetNaCl.CryptoScalarmult(n, p);
//Assert
Assert.AreEqual(Encoding.ASCII.GetString(q).Length, 32, "wrong size for resulting group element q.");
}

[Test]
public void TestForGenerateEncryptionKeyPair()
public void CryptoBoxKeypair_Should_Success()
{
//Arrange
Byte[] pk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] sk = new Byte[TweetNaCl.BoxSecretKeyBytes];

//Act
pk = TweetNaCl.CryptoBoxKeypair(sk);
Assert.AreEqual(Encoding.ASCII.GetString(pk).Length, 32, "key generation failed.");

String pk64 = Convert.ToBase64String(pk);
String sk64 = Convert.ToBase64String(sk);
//Assert
Assert.AreEqual(Encoding.ASCII.GetString(pk).Length, 32, "key generation failed.");
}

[Test]
public void TestForMessageEncryptionWithCryptoBoxBeforenm()
public void CryptoBoxBeforenm_MessageEncryption_Should_Success()
{
//Arrange
Byte[] pk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] sk = new Byte[TweetNaCl.BoxSecretKeyBytes];

pk = TweetNaCl.CryptoBoxKeypair(sk);
Assert.AreEqual(Encoding.ASCII.GetString(pk).Length, 32, "key generation failed.");

String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] paddedMessage = new Byte[TweetNaCl.BoxZeroBytes + bMessage.Length];
Byte[] encMessage = new Byte[paddedMessage.Length];
Byte[] decMessage = new Byte[encMessage.Length];
Byte[] nonce = new Byte[TweetNaCl.BoxNonceBytes];

TweetNaCl.RandomBytes(nonce);

String pubKey = Encoding.ASCII.GetString(pk);
String secKey = Encoding.ASCII.GetString(sk);
//Act
var k = TweetNaCl.CryptoBoxBeforenm(pk, sk);

var k = TweetNaCl.CryptoBoxBeforenm( pk, sk);
Assert.AreEqual(k.Length, TweetNaCl.BoxBeforenmBytes,"generation of K for encryption failed.");
//Assert
Assert.AreEqual(k.Length, TweetNaCl.BoxBeforenmBytes, "generation of K for encryption failed.");
}

[Test]
public void TestForMessageEncryptionWithCryptoBoxAfternm()
public void CryptoBoxAfternm_MessageEncryption_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] pk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] sk = new Byte[TweetNaCl.BoxSecretKeyBytes];
Byte[] nonce = new Byte[TweetNaCl.BoxNonceBytes];

var result = 1;
TweetNaCl.RandomBytes(nonce);

pk = TweetNaCl.CryptoBoxKeypair(sk);
Assert.AreEqual(Encoding.ASCII.GetString(pk).Length, 32, "key generation failed.");

TweetNaCl.RandomBytes(nonce);
Assert.AreNotEqual(result, -1, "randombytes generation failed.");

var k = TweetNaCl.CryptoBoxBeforenm(pk, sk);

//Act
var encMessage = TweetNaCl.CryptoBoxAfternm(bMessage, nonce, k);

//Assert
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");
}

[Test]
public void TestForMessageEncryptionWithCryptoBoxOpenAfternm()
public void CryptoBoxOpenAfternm_Decryption_Should_Success()
{
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
//Arrange
String expectedMessage = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(expectedMessage);
Byte[] pk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] sk = new Byte[TweetNaCl.BoxSecretKeyBytes];
Byte[] nonce = new Byte[TweetNaCl.BoxNonceBytes];

pk = TweetNaCl.CryptoBoxKeypair(sk);

TweetNaCl.RandomBytes(nonce);

var k = TweetNaCl.CryptoBoxBeforenm(pk, sk);
Assert.AreEqual(k.Length, TweetNaCl.BoxBeforenmBytes, "K generation for encryption failed.");

//Act
var encMessage = TweetNaCl.CryptoBoxAfternm(bMessage, nonce, k);
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");

var decMessage = TweetNaCl.CryptoBoxOpenAfternm(encMessage, nonce, k);

//Assert
Assert.AreEqual(decMessage.Length, bMessage.Length, "decryption failed.");
Assert.AreEqual(decMessage, bMessage, "decryption failed.");

var resultMessage = Encoding.ASCII.GetString(decMessage);
Assert.AreEqual(resultMessage, expectedMessage, "decryption failed.");
}


[Test]
public void TestForMessageEncryption()
public void CryptoBox_MessageEncryption_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] pk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] sk = new Byte[TweetNaCl.BoxSecretKeyBytes];
Byte[] nonce = new Byte[TweetNaCl.BoxNonceBytes];
Byte[] k = new Byte[TweetNaCl.BoxBeforenmBytes];

pk = TweetNaCl.CryptoBoxKeypair(sk);
TweetNaCl.RandomBytes(nonce);

//Act
var encMessage = TweetNaCl.CryptoBox(bMessage, nonce, pk, sk);

//Assert
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");
}

[Test]
public void TestForMessageDecryptionDifferentKeyPair()
public void CryptoBoxOpen_DecryptionDifferentKeyPair_Should_Success()
{
//Arrange
Byte[] apk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] ask = new Byte[TweetNaCl.BoxSecretKeyBytes];

Byte[] bpk = new Byte[TweetNaCl.BoxPublicKeyBytes];
Byte[] bsk = new Byte[TweetNaCl.BoxSecretKeyBytes];

String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
String expectedMessage = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(expectedMessage);
Byte[] nonce = new Byte[TweetNaCl.BoxNonceBytes];
Byte[] k = new Byte[TweetNaCl.BoxBeforenmBytes];

apk = TweetNaCl.CryptoBoxKeypair(ask);
bpk = TweetNaCl.CryptoBoxKeypair(bsk);

TweetNaCl.RandomBytes(nonce);

//Act
var encMessage = TweetNaCl.CryptoBox(bMessage, nonce, bpk, ask);
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");
var decMessage = TweetNaCl.CryptoBoxOpen(encMessage, nonce, apk, bsk);

//Assert
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");
Assert.AreEqual(decMessage.Length, bMessage.Length, "decryption failed.");

var decMessage = TweetNaCl.CryptoBoxOpen(encMessage, nonce, apk, bsk);
Assert.AreEqual(decMessage.Length, bMessage.Length, "encryption failed.");
var resultMessage = Encoding.ASCII.GetString(decMessage);
Assert.AreEqual(resultMessage, expectedMessage, "decryption failed.");
}

[Test]
public void TestForMessageDecryptionSecretBox()
public void CryptoSecretBox_Should_Success()
{
Byte[] bsk = new Byte[TweetNaCl.SecretBoxNonceBytes];
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] sk = new Byte[TweetNaCl.SecretBoxKeyBytes];
Byte[] nonce = new Byte[TweetNaCl.SecretBoxNonceBytes];
TweetNaCl.RandomBytes(sk);
TweetNaCl.RandomBytes(nonce);

//Act
var encMessage = TweetNaCl.CryptoSecretBox(bMessage, nonce, sk);

//Assert
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");
}

[Test]
public void CryptoSecretBoxOpen_Decryption_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] sk = new Byte[TweetNaCl.SecretBoxKeyBytes];
Expand All @@ -236,61 +246,70 @@ public void TestForMessageDecryptionSecretBox()
TweetNaCl.RandomBytes(nonce);

var encMessage = TweetNaCl.CryptoSecretBox(bMessage, nonce, sk);
Assert.AreEqual(encMessage.Length, bMessage.Length + TweetNaCl.BoxBoxZeroBytes, "encryption failed.");

//Act
var decMessage = TweetNaCl.CryptoSecretBoxOpen(encMessage, nonce, sk);
Assert.AreEqual(decMessage.Length, bMessage.Length, "decryption failed.");
Assert.AreEqual(decMessage, bMessage, "decryption failed.");
}

[Test]
public void TestForMessageHashing()
public void CryptoHash_MessageHashing_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] hsh1 = new Byte[TweetNaCl.HashBytes];
Byte[] hsh2 = new Byte[TweetNaCl.HashBytes];

var result = -10;

TweetNaCl.CryptoHash(hsh1, bMessage, bMessage.Length);
Assert.AreNotEqual(result, -1, "First hashing call for message generation failed.");

TweetNaCl.CryptoHash(hsh2, bMessage, bMessage.Length);
Assert.AreNotEqual(result, -1, "Second hashing call for message generation failed.");
var firstResult = 0;
var secontResult = 0;

//Act
firstResult = TweetNaCl.CryptoHash(hsh1, bMessage, bMessage.Length);
secontResult = TweetNaCl.CryptoHash(hsh2, bMessage, bMessage.Length);

//Assert
Assert.AreNotEqual(firstResult, -1, "First hashing call for message generation failed.");
Assert.AreNotEqual(secontResult, -1, "Second hashing call for message generation failed.");
Assert.AreEqual(hsh1, hsh2, "hash for message are not equal.");
}

[Test]
public void TestForMessageSignKeypair()
public void CryptoSignKeypair_Generation_Should_Success()
{

//Arrange
Byte[] ssk = new Byte[TweetNaCl.SignSecretKeyBytes];

//Act
Byte[] spk = TweetNaCl.CryptoSignKeypair(ssk);

//Assert
Assert.AreEqual(Encoding.ASCII.GetString(spk).Length, 32, "Public Key for message sign generation failed.");
Assert.AreEqual(Encoding.ASCII.GetString(ssk).Length, 64, "Secret Key for message sign generation failed.");
}

[Test]
public void TestForMessageSign()
public void CryptoSign_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] ssk = new Byte[TweetNaCl.SignSecretKeyBytes];
Byte[] sMessage;

//Act
var spk = TweetNaCl.CryptoSignKeypair(ssk);

sMessage = TweetNaCl.CryptoSign(bMessage, ssk);

//Assert
Assert.AreEqual(Encoding.ASCII.GetString(sMessage).Length, bMessage.Length + TweetNaCl.SignBytes, "Message sign failed.");
}

[Test]
public void TestForMessageSignOpen()
public void CryptoSignOpen_Should_Success()
{
//Arrange
String message = "test";
Byte[] bMessage = Encoding.UTF8.GetBytes(message);
Byte[] ssk = new Byte[TweetNaCl.SignSecretKeyBytes];
Expand All @@ -299,8 +318,8 @@ public void TestForMessageSignOpen()

var spk = TweetNaCl.CryptoSignKeypair(ssk);
sMessage = TweetNaCl.CryptoSign(bMessage, ssk);
Assert.AreEqual(sMessage.Length, bMessage.Length + TweetNaCl.SignBytes, "Message sign failed.");

//Act
cMessage = TweetNaCl.CryptoSignOpen(sMessage, spk);
Assert.AreEqual(cMessage.Length, bMessage.Length, "Message sign verification failed.");
Assert.AreEqual(Encoding.UTF8.GetString(cMessage), message, "Messages sign verification failed.");
Expand Down

0 comments on commit 99f7e47

Please sign in to comment.