public void TestMillerLoop() { var p = G1.Generator * Fr.GetRandom(); var q = G2.Generator * Fr.GetRandom(); Assert.AreEqual( GT.Pairing(p, q), GT.FinalExp(GT.MillerLoop(p, q)) ); var r = G1.Generator * Fr.GetRandom(); var s = G2.Generator * Fr.GetRandom(); var pqLoop = GT.MillerLoop(p, q); var rsLoop = GT.MillerLoop(r, s); Assert.AreEqual( GT.Pairing(p, q) * GT.Pairing(r, s), GT.FinalExp(pqLoop * rsLoop) ); }