Skip to content

Commit 6c2c290

Browse files
committed
update index.js
1 parent 7b34cc7 commit 6c2c290

File tree

1 file changed

+32
-37
lines changed

1 file changed

+32
-37
lines changed

index.js

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,35 @@
1-
var bn = require('bn.js');
2-
var randomBytes = require('randombytes');
3-
module.exports = crt;
4-
function blind(priv) {
5-
var r = getr(priv);
6-
var blinder = r.toRed(bn.mont(priv.modulus))
7-
.redPow(new bn(priv.publicExponent)).fromRed();
8-
return {
9-
blinder: blinder,
10-
unblinder:r.invm(priv.modulus)
11-
};
1+
var BN = require('bn.js')
2+
var randomBytes = require('randombytes')
3+
4+
function blind (priv) {
5+
var r = getr(priv)
6+
var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()
7+
return { blinder: blinder, unblinder: r.invm(priv.modulus) }
128
}
13-
function crt(msg, priv) {
14-
var blinds = blind(priv);
15-
var len = priv.modulus.byteLength();
16-
var mod = bn.mont(priv.modulus);
17-
var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);
18-
var c1 = blinded.toRed(bn.mont(priv.prime1));
19-
var c2 = blinded.toRed(bn.mont(priv.prime2));
20-
var qinv = priv.coefficient;
21-
var p = priv.prime1;
22-
var q = priv.prime2;
23-
var m1 = c1.redPow(priv.exponent1);
24-
var m2 = c2.redPow(priv.exponent2);
25-
m1 = m1.fromRed();
26-
m2 = m2.fromRed();
27-
var h = m1.isub(m2).imul(qinv).umod(p);
28-
h.imul(q);
29-
m2.iadd(h);
30-
return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));
31-
}
32-
crt.getr = getr;
33-
function getr(priv) {
34-
var len = priv.modulus.byteLength();
35-
var r = new bn(randomBytes(len));
36-
while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {
37-
r = new bn(randomBytes(len));
9+
10+
function getr (priv) {
11+
var len = priv.modulus.byteLength()
12+
var r = new BN(randomBytes(len))
13+
while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {
14+
r = new BN(randomBytes(len))
3815
}
39-
return r;
16+
return r
17+
}
18+
19+
function crt (msg, priv) {
20+
var blinds = blind(priv)
21+
var len = priv.modulus.byteLength()
22+
var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)
23+
var c1 = blinded.toRed(BN.mont(priv.prime1))
24+
var c2 = blinded.toRed(BN.mont(priv.prime2))
25+
var qinv = priv.coefficient
26+
var p = priv.prime1
27+
var q = priv.prime2
28+
var m1 = c1.redPow(priv.exponent1).fromRed()
29+
var m2 = c2.redPow(priv.exponent2).fromRed()
30+
var h = m1.isub(m2).imul(qinv).umod(p).imul(q)
31+
return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)
4032
}
33+
crt.getr = getr
34+
35+
module.exports = crt

0 commit comments

Comments
 (0)