secp256k1ECmultOddMultiplesTable static method
void
secp256k1ECmultOddMultiplesTable(
- int n,
- List<
Secp256k1Ge> preA, - List<
Secp256k1Fe> zr, - Secp256k1Fe z,
- Secp256k1Gej a,
Implementation
static void secp256k1ECmultOddMultiplesTable(int n, List<Secp256k1Ge> preA,
List<Secp256k1Fe> zr, Secp256k1Fe z, Secp256k1Gej a) {
Secp256k1Gej d = Secp256k1Gej(), ai = Secp256k1Gej();
Secp256k1Ge dGe = Secp256k1Ge();
int i;
_cond(a.infinity == 0, "secp256k1ECmultOddMultiplesTable");
secp256k1GejDoubleVar(d, a, null);
secp256k1GeSetXy(dGe, d.x, d.y);
secp256k1GeSetGejZinv(preA[0], a, d.z);
secp256k1GejSetGe(ai, preA[0]);
ai.z = a.z.clone();
zr[0] = d.z.clone();
for (i = 1; i < n; i++) {
secp256k1GejAddGeVar(ai, ai, dGe, zr[i]);
secp256k1GeSetXy(preA[i], ai.x, ai.y);
}
secp256k1FeMul(z, ai.z, d.z);
}