We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 9b1b24a commit e70d0c0Copy full SHA for e70d0c0
lib/precompiled/05-modexp.js
@@ -56,14 +56,14 @@ function getAdjustedExponentLength (data) {
56
return adjustedExpLen
57
}
58
59
-// Taken from https://stackoverflow.com/a/1503019
60
function expmod (B, E, M) {
61
if (E.isZero()) return new BN(1).mod(M)
62
- var BM = B.mod(M)
63
- var R = expmod(BM, E.divn(2), M)
64
- R = (R.mul(R)).mod(M)
65
- if (E.mod(new BN(2)).isZero()) return R
66
- return (R.mul(BM)).mod(M)
+ // Red asserts M > 1
+ if (M.lten(1)) return new BN(0)
+ const red = BN.red(M)
+ const redB = B.toRed(red)
+ const res = redB.redPow(E)
+ return res.fromRed()
67
68
69
function getOOGResults (opts, results) {
0 commit comments