snarkjs/src/futils.js
src/futils.jsRaw
1const bigInt = require("big-integer");
2
3exports.mulEscalar = (F, base, e) =>{
4 let res = F.zero;
5 let rem = bigInt(e);
6 let exp = base;
7
8 while (! rem.isZero()) {
9 if (rem.isOdd()) {
10 res = F.add(res, exp);
11 }
12 exp = F.double(exp);
13 rem = rem.shiftRight(1);
14 }
15
16 return res;
17};
18
19
20exports.exp = (F, base, e) =>{
21 let res = F.one;
22 let rem = bigInt(e);
23 let exp = base;
24
25 while (! rem.isZero()) {
26 if (rem.isOdd()) {
27 res = F.mul(res, exp);
28 }
29 exp = F.square(exp);
30 rem = rem.shiftRight(1);
31 }
32
33 return res;
34};