Skip to content

Commit b89c82b

Browse files
committed
ECKey: fix modulo bias in makeRandom
1 parent d50d49b commit b89c82b

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/eckey.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,15 @@ ECKey.fromWIF = function (string) {
4949
ECKey.makeRandom = function (compressed, rng) {
5050
rng = rng || randomBytes
5151

52-
var buffer = rng(32)
53-
typeForce('Buffer', buffer)
54-
assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
52+
var d
5553

56-
var d = BigInteger.fromBuffer(buffer)
57-
d = d.mod(ECKey.curve.n)
54+
do {
55+
var buffer = rng(32)
56+
typeForce('Buffer', buffer)
57+
assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
58+
59+
d = BigInteger.fromBuffer(buffer)
60+
} while (d.compareTo(ECKey.curve) >= 0)
5861

5962
return new ECKey(d, compressed)
6063
}

0 commit comments

Comments
 (0)