toUncompressed method
Implementation
List<int> toUncompressed() {
// Allocate 192 bytes
final res = List<int>.filled(192, 0);
// conditional_select(&self.x, &Fp2::zero(), self.infinity)
final Bls12NativeFp2 xc = Bls12NativeFp2.conditionalSelect(
x,
Bls12NativeFp2.zero(),
infinity,
);
final Bls12NativeFp2 yc = Bls12NativeFp2.conditionalSelect(
y,
Bls12NativeFp2.zero(),
infinity,
);
// x = c1 || c0
final xc1 = xc.c1.toBytes(); // 48 bytes
final xc0 = xc.c0.toBytes(); // 48 bytes
// y = c1 || c0
final yc1 = yc.c1.toBytes(); // 48 bytes
final yc0 = yc.c0.toBytes(); // 48 bytes
for (var i = 0; i < 48; i++) {
res[i] = xc1[i];
res[i + 48] = xc0[i];
res[i + 96] = yc1[i];
res[i + 144] = yc0[i];
}
// Is this point at infinity? If so, set the second-most significant bit.
res[0] |= IntUtils.ctSelectInt(0, 1 << 6, infinity);
return res;
}