research/zksnark/bn128_pairing_test.py

25 lines
820 B
Python

from bn128_pairing import pairing, neg, G2, G1, multiply, FQ12, curve_order
p1 = pairing(G2, G1)
pn1 = pairing(G2, neg(G1))
assert p1 * pn1 == FQ12.one()
print 'Pairing check against negative in G1 passed'
np1 = pairing(neg(G2), G1)
assert p1 * np1 == FQ12.one()
assert pn1 == np1
print 'Pairing check against negative in G2 passed'
assert p1 ** curve_order == FQ12.one()
print 'Pairing output has correct order'
p2 = pairing(G2, multiply(G1, 2))
assert p1 * p1 == p2
print 'Pairing bilinearity in G1 passed'
assert p1 != p2 and p1 != np1 and p2 != np1
print 'Pairing is non-degenerate'
po2 = pairing(multiply(G2, 2), G1)
assert p1 * p1 == po2
print 'Pairing bilinearity in G2 passed'
p3 = pairing(multiply(G2, 27), multiply(G1, 37))
po3 = pairing(G2, multiply(G1, 999))
assert p3 == po3
print 'Composite check passed'