83 lines
3.0 KiB
C#
83 lines
3.0 KiB
C#
using Lagrange.Core.Utility.Crypto.Provider.Ecdh;
|
|
|
|
namespace Lagrange.Core.Test.Tests;
|
|
|
|
public class EcdhTest
|
|
{
|
|
public static void Test()
|
|
{
|
|
{
|
|
var uncompressedPublicKey = new byte[]
|
|
{
|
|
0x04,
|
|
0xEB, 0xCA, 0x94, 0xD7, 0x33, 0xE3, 0x99, 0xB2,
|
|
0xDB, 0x96, 0xEA, 0xCD, 0xD3, 0xF6, 0x9A, 0x8B,
|
|
0xB0, 0xF7, 0x42, 0x24, 0xE2, 0xB4, 0x4E, 0x33,
|
|
0x57, 0x81, 0x22, 0x11, 0xD2, 0xE6, 0x2E, 0xFB,
|
|
0xC9, 0x1B, 0xB5, 0x53, 0x09, 0x8E, 0x25, 0xE3,
|
|
0x3A, 0x79, 0x9A, 0xDC, 0x7F, 0x76, 0xFE, 0xB2,
|
|
0x08, 0xDA, 0x7C, 0x65, 0x22, 0xCD, 0xB0, 0x71,
|
|
0x9A, 0x30, 0x51, 0x80, 0xCC, 0x54, 0xA8, 0x2E
|
|
};
|
|
var compressedPublicKey = new byte[]
|
|
{
|
|
0x02,
|
|
0xEB, 0xCA, 0x94, 0xD7, 0x33, 0xE3, 0x99, 0xB2,
|
|
0xDB, 0x96, 0xEA, 0xCD, 0xD3, 0xF6, 0x9A, 0x8B,
|
|
0xB0, 0xF7, 0x42, 0x24, 0xE2, 0xB4, 0x4E, 0x33,
|
|
0x57, 0x81, 0x22, 0x11, 0xD2, 0xE6, 0x2E, 0xFB
|
|
};
|
|
|
|
EcdhProvider ecdhProvider = new EcdhProvider(EllipticCurve.Prime256V1);
|
|
|
|
var unpacked1 = ecdhProvider.UnpackPublic(uncompressedPublicKey);
|
|
var unpacked2 = ecdhProvider.UnpackPublic(compressedPublicKey);
|
|
|
|
if (unpacked1.X == unpacked2.X && unpacked1.Y == unpacked2.Y)
|
|
{
|
|
Console.WriteLine("UnpackPublic() works correctly");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("UnpackPublic() does not work correctly");
|
|
}
|
|
}
|
|
{
|
|
// from https://github.com/KonataDev/Konata.Core/blob/develop/Konata.Core.Test/UtilTest/EcdhTest.cs
|
|
var uncompressedPublicKey = new byte[]
|
|
{
|
|
0x04,
|
|
0xD5, 0xCF, 0xB0, 0x2D, 0x5D, 0x4F, 0xCA, 0x2C,
|
|
0x84, 0xF6, 0xF1, 0x29, 0x4B, 0x45, 0x5B, 0xAB,
|
|
0x4C, 0x96, 0x98, 0xDD, 0x57, 0x2B, 0xF8, 0x63,
|
|
0x82, 0xA9, 0xDA, 0xF8, 0xAD, 0xE9, 0xD4, 0x5A,
|
|
0x57, 0xDE, 0x14, 0x04, 0xFA, 0x5D, 0x41, 0x29,
|
|
0x1E, 0x0A, 0x56, 0xCB, 0x45, 0x08, 0xD3, 0x2F
|
|
};
|
|
var compressedPublicKey = new byte[]
|
|
{
|
|
0x03,
|
|
0xD5, 0xCF, 0xB0, 0x2D, 0x5D, 0x4F, 0xCA, 0x2C,
|
|
0x84, 0xF6, 0xF1, 0x29, 0x4B, 0x45, 0x5B, 0xAB,
|
|
0x4C, 0x96, 0x98, 0xDD, 0x57, 0x2B, 0xF8, 0x63
|
|
};
|
|
|
|
EcdhProvider ecdhProvider = new EcdhProvider(EllipticCurve.Secp192K1);
|
|
|
|
var unpacked1 = ecdhProvider.UnpackPublic(uncompressedPublicKey);
|
|
var unpacked2 = ecdhProvider.UnpackPublic(compressedPublicKey);
|
|
|
|
if (unpacked1.X == unpacked2.X && unpacked1.Y == unpacked2.Y)
|
|
{
|
|
Console.WriteLine("UnpackPublic() works correctly");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("UnpackPublic() does not work correctly");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|