示例#1
0
        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)
                );
        }