static void TestG1() { Console.WriteLine("TestG1"); G1 P = new G1(); assert("P.isZero", P.IsZero()); P.Clear(); assert("P.IsValid", P.IsValid()); assert("P.IsZero", P.IsZero()); P.HashAndMapTo("abc"); assert("P.IsValid", P.IsValid()); assert("!P.IsZero", !P.IsZero()); G1 Q = new G1(); Q = P; assert("P == Q", Q.Equals(P)); Q.Neg(P); Q.Add(Q, P); assert("P = Q", Q.IsZero()); Q.Dbl(P); G1 R = new G1(); R.Add(P, P); assert("Q == R", Q.Equals(R)); Fr x = new Fr(); x.SetInt(3); R.Add(R, P); Q.Mul(P, x); assert("Q == R", Q.Equals(R)); { byte[] buf = P.Serialize(); Q.Clear(); Q.Deserialize(buf); assert("P == Q", P.Equals(Q)); } { const int n = 5; G1[] xVec = new G1[n]; Fr[] yVec = new Fr[n]; P.Clear(); for (int i = 0; i < n; i++) { xVec[i].HashAndMapTo(i.ToString()); yVec[i].SetByCSPRNG(); Q.Mul(xVec[i], yVec[i]); P.Add(P, Q); } MulVec(ref Q, xVec, yVec); assert("mulVecG1", P.Equals(Q)); } G1 W = G1.Zero(); assert("W.IsZero", W.IsZero()); }
static void TestG1() { Console.WriteLine("TestG1"); G1 P = new G1(); P.Clear(); assert("P = 0", P.ToString() == "0"); assert("P.IsValid", P.IsValid()); assert("P.IsZero", P.IsZero()); P.HashAndMapTo("abc"); assert("P.IsValid", P.IsValid()); assert("!P.IsZero", !P.IsZero()); G1 Q = new G1(); Q = P.Clone(); assert("P == Q", Q.Equals(P)); G1.Neg(Q, P); G1.Add(Q, Q, P); assert("P = Q", Q.IsZero()); G1.Dbl(Q, P); G1 R = new G1(); G1.Add(R, P, P); assert("Q == R", Q.Equals(R)); Fr x = new Fr(); x.SetInt(3); G1.Add(R, R, P); G1.Mul(Q, P, x); assert("Q == R", Q.Equals(R)); }
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)); }
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 TestG1() { Console.WriteLine("TestG1"); G1 P = new G1(); P.Clear(); assert("P.IsValid", P.IsValid()); assert("P.IsZero", P.IsZero()); P.HashAndMapTo("abc"); assert("P.IsValid", P.IsValid()); assert("!P.IsZero", !P.IsZero()); G1 Q = new G1(); Q = P; assert("P == Q", Q.Equals(P)); Q.Neg(P); Q.Add(Q, P); assert("P = Q", Q.IsZero()); Q.Dbl(P); G1 R = new G1(); R.Add(P, P); assert("Q == R", Q.Equals(R)); Fr x = new Fr(); x.SetInt(3); R.Add(R, P); Q.Mul(P, x); assert("Q == R", Q.Equals(R)); }