static void TestPairing() { Console.WriteLine("TestG2"); G1 P = new G1(); P.HashAndMapTo("123"); G2 Q = new G2(); Q.HashAndMapTo("1"); Fr a = new Fr(); Fr b = new Fr(); a.SetStr("12345678912345673453", 10); b.SetStr("230498230982394243424", 10); G1 aP = new G1(); G2 bQ = new G2(); aP.Mul(P, a); bQ.Mul(Q, b); GT e1 = new GT(); GT e2 = new GT(); GT e3 = new GT(); e1.Pairing(P, Q); e2.Pairing(aP, Q); e3.Pow(e1, a); assert("e2.Equals(e3)", e2.Equals(e3)); e2.Pairing(P, bQ); e3.Pow(e1, b); assert("e2.Equals(e3)", e2.Equals(e3)); }
static void TestPairing() { Console.WriteLine("TestG2"); G1 P = new G1(); P.setStr("1 -1 1"); G2 Q = new G2(); Q.HashAndMapTo("1"); Fr a = new Fr(); Fr b = new Fr(); a.SetStr("12345678912345673453"); b.SetStr("230498230982394243424"); G1 aP = new G1(); G2 bQ = new G2(); G1.Mul(aP, P, a); G2.Mul(bQ, Q, b); GT e1 = new GT(); GT e2 = new GT(); GT e3 = new GT(); Pairing(e1, P, Q); Pairing(e2, aP, Q); GT.Pow(e3, e1, a); assert("e2.Equals(e3)", e2.Equals(e3)); Pairing(e2, P, bQ); GT.Pow(e3, e1, b); assert("e2.Equals(e3)", e2.Equals(e3)); }
public void TestSimpleArithmetic() { for (var i = -100; i <= 100; ++i) { var x = GT.FromInt(i); Assert.AreEqual(GT.FromInt(-i), -x); for (var j = -100; j <= 100; ++j) { var y = GT.FromInt(j); Assert.AreEqual(GT.FromInt(i + j), x + y); Assert.AreEqual(GT.FromInt(i * j), x * y); Assert.AreEqual(GT.FromInt(i - j), x - y); if (j == 0) { Assert.Throws <InvalidOperationException>(() => { var unused = x * y / y; }); } else { Assert.AreEqual(GT.FromInt(i * j / j), x * y / y); } if (j > 0 && i >= -8 && i <= 8 && j <= 8) { Assert.AreEqual(GT.FromInt((int)Math.Pow(i, j)), GT.Pow(x, Fr.FromInt(j))); } } } }
public void PairingTest() { var a = Fr.GetRandom(); var b = Fr.GetRandom(); var A = G1.Generator * a; var B = G2.Generator * b; var X = GT.Pairing(A, B); var Y = GT.Pow(GT.Pairing(G1.Generator, G2.Generator), a * b); Assert.True(X.Equals(Y)); }
public void TestPairing() { var fr1 = Fr.GetRandom(); var fr2 = Fr.GetRandom(); var rndG1 = G1.Generator * fr1; var rndG2 = G2.Generator * fr2; Assert.AreEqual(GT.One, GT.Pairing(G1.Zero, G2.Zero)); Assert.AreEqual(GT.One, GT.Pairing(G1.Zero, rndG2)); Assert.AreEqual(GT.One, GT.Pairing(rndG1, G2.Zero)); var generatorsPairing = GT.Pairing(G1.Generator, G2.Generator); Assert.AreEqual(GT.Pow(generatorsPairing, fr1 * fr2), GT.Pairing(rndG1, rndG2)); }