scalarMul method
scalarMult
returns k
*(basePoint
.X, basePoint
.Y) where k
is a number
in big-endian form (BigInt bytes).
Implementation
@override
AffinePoint scalarMul(AffinePoint basePoint, List<int> k) {
var _p = JacobianPoint.fromXYZ(basePoint.X, basePoint.Y, BigInt.zero);
for (var byte in k) {
for (var bitNum = 0; bitNum < 8; bitNum++) {
_p = _doubleJacobian(_p.X, _p.Y, _p.Z);
if (byte & 0x80 == 0x80) {
_p = _addJacobian(
basePoint.X, basePoint.Y, BigInt.one, _p.X, _p.Y, _p.Z);
}
byte <<= 1;
}
}
return _affineFromJacobian(_p.X, _p.Y, _p.Z);
}