Open shuijian-xu opened 4 years ago
`public static Point rmul(BigInteger coefficient, Point other) { S256Point obj = (S256Point) other; BigInteger coef = coefficient.mod(N);
S256Point current = obj;
S256Point result = new S256Point(null, null, obj.a, obj.b);
int len = coef.bitLength();
int count = len;
while (count > 0) {
if (coef.testBit(len - count)) {
result = (S256Point) result.add(current);
}
current = (S256Point) current.add(current);
count--;
}
return result;
}`
def __rmul__(self, coefficient):
coef = coefficient
current = self
result = self.__class__(None, None, self.a, self.b)
while coef:
if coef & 1:
result += current
current += current
coef >>= 1
return result