pairing static method
Computes the optimal Ate pairing e(P, Q) ∈ GT for affine points P and Q.
Implementation
static GtNative pairing(G1NativeAffinePoint p, G2NativeAffinePoint q) {
final identity = p.isIdentity() || q.isIdentity();
final newP = G1NativeAffinePoint.conditionalSelect(
p,
G1NativeAffinePoint.generator(),
identity,
);
final newQ = G2NativeAffinePoint.conditionalSelect(
q,
G2NativeAffinePoint.generator(),
identity,
);
final adder = MillerLoopDriverBls12Pairing(
cur: newQ.toProjective(),
base: newQ,
p: newP,
);
final tmp = millerLoop(adder);
final result = MillerLoopResultBls12(
Bls12NativeFp12.conditionalSelect(tmp, Bls12NativeFp12.one(), identity),
);
return result.finalExponentiation();
}