mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Key file implemented!
Key Derivation setting added More unit tests created Some cleanup in lib WIP Argon2 save
This commit is contained in:
@@ -44,6 +44,41 @@ namespace ModernKeePassLib.Test.Cryptography.Hash
|
||||
HmacEval(pbKey, pbMsg, pbExpc);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestHmacSha1ComputeHash()
|
||||
{
|
||||
var expectedHash = "AC2C2E614882CE7158F69B7E3B12114465945D01";
|
||||
var message = StrUtil.Utf8.GetBytes("testing123");
|
||||
var key = StrUtil.Utf8.GetBytes("hello");
|
||||
using (var result = new HMACSHA1(key))
|
||||
{
|
||||
Assert.That(ByteToString(result.ComputeHash(message)), Is.EqualTo(expectedHash));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestHmacSha256ComputeHash()
|
||||
{
|
||||
var expectedHash = "09C1BD2DE4E5659C0EFAF9E6AE4723E9CF96B69609B4E562F6AFF1745D7BF4E0";
|
||||
var message = StrUtil.Utf8.GetBytes("testing123");
|
||||
var key = StrUtil.Utf8.GetBytes("hello");
|
||||
using (var result = new HMACSHA256(key))
|
||||
{
|
||||
Assert.That(ByteToString(result.ComputeHash(message)), Is.EqualTo(expectedHash));
|
||||
}
|
||||
}
|
||||
|
||||
public static string ByteToString(byte[] buff)
|
||||
{
|
||||
string sbinary = "";
|
||||
|
||||
for (int i = 0; i < buff.Length; i++)
|
||||
{
|
||||
sbinary += buff[i].ToString("X2"); // hex format
|
||||
}
|
||||
return (sbinary);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestHmacOtp()
|
||||
{
|
||||
|
@@ -72,6 +72,7 @@
|
||||
<Compile Include="Serialization\HashedBlockStreamTests.cs" />
|
||||
<Compile Include="Serialization\KdbxFileTests.cs" />
|
||||
<Compile Include="Utility\GfxUtilTests.cs" />
|
||||
<Compile Include="Utility\MemUtilTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
|
89
ModernKeePassLib.Test/Utility/MemUtilTests.cs
Normal file
89
ModernKeePassLib.Test/Utility/MemUtilTests.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System.Text;
|
||||
using ModernKeePassLib.Cryptography;
|
||||
using ModernKeePassLib.Utility;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace ModernKeePassLib.Test.Utility
|
||||
{
|
||||
[TestFixture]
|
||||
public class MemUtilTests
|
||||
{
|
||||
private byte[] _pb = CryptoRandom.Instance.GetRandomBytes((uint)CryptoRandom.NewWeakRandom().Next(0, 0x2FFFF));
|
||||
|
||||
[Test]
|
||||
public void TestGzip()
|
||||
{
|
||||
var pbCompressed = MemUtil.Compress(_pb);
|
||||
Assert.That(MemUtil.ArraysEqual(MemUtil.Decompress(pbCompressed), _pb), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestMemUtil()
|
||||
{
|
||||
Encoding enc = StrUtil.Utf8;
|
||||
_pb = enc.GetBytes("012345678901234567890a");
|
||||
byte[] pbN = enc.GetBytes("9012");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.EqualTo(9));
|
||||
|
||||
pbN = enc.GetBytes("01234567890123");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.EqualTo(0));
|
||||
|
||||
pbN = enc.GetBytes("a");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.EqualTo(21));
|
||||
|
||||
pbN = enc.GetBytes("0a");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.EqualTo(20));
|
||||
|
||||
pbN = enc.GetBytes("1");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.EqualTo(1));
|
||||
|
||||
pbN = enc.GetBytes("b");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.LessThan(0));
|
||||
|
||||
pbN = enc.GetBytes("012b");
|
||||
Assert.That(MemUtil.IndexOf(_pb, pbN), Is.LessThan(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestBase32()
|
||||
{
|
||||
byte[] pbRes = MemUtil.ParseBase32("MY======");
|
||||
byte[] pbExp = Encoding.UTF8.GetBytes("f");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("MZXQ====");
|
||||
pbExp = Encoding.UTF8.GetBytes("fo");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("MZXW6===");
|
||||
pbExp = Encoding.UTF8.GetBytes("foo");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("MZXW6YQ=");
|
||||
pbExp = Encoding.UTF8.GetBytes("foob");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("MZXW6YTB");
|
||||
pbExp = Encoding.UTF8.GetBytes("fooba");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("MZXW6YTBOI======");
|
||||
pbExp = Encoding.UTF8.GetBytes("foobar");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
|
||||
pbRes = MemUtil.ParseBase32("JNSXSIDQOJXXM2LEMVZCAYTBONSWIIDPNYQG63TFFV2GS3LFEBYGC43TO5XXEZDTFY======");
|
||||
pbExp = Encoding.UTF8.GetBytes("Key provider based on one-time passwords.");
|
||||
Assert.That(MemUtil.ArraysEqual(pbRes, pbExp), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestMemUtil2()
|
||||
{
|
||||
var i = 0 - 0x10203040;
|
||||
var pbRes = MemUtil.Int32ToBytes(i);
|
||||
Assert.That(MemUtil.ByteArrayToHexString(pbRes), Is.EqualTo("C0CFDFEF"));
|
||||
Assert.That(MemUtil.BytesToUInt32(pbRes), Is.EqualTo((uint)i));
|
||||
Assert.That(MemUtil.BytesToInt32(pbRes), Is.EqualTo(i));
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.WindowsRuntime" publicKeyToken="b77a5c561934e089" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.11.0" newVersion="4.0.11.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
Reference in New Issue
Block a user