ECKey: fix modulo bias in makeRandom
This commit is contained in:
parent
d50d49bd29
commit
b89c82b9a6
13
src/eckey.js
13
src/eckey.js
@ -49,12 +49,15 @@ ECKey.fromWIF = function (string) {
|
|||||||
ECKey.makeRandom = function (compressed, rng) {
|
ECKey.makeRandom = function (compressed, rng) {
|
||||||
rng = rng || randomBytes
|
rng = rng || randomBytes
|
||||||
|
|
||||||
var buffer = rng(32)
|
var d
|
||||||
typeForce('Buffer', buffer)
|
|
||||||
assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
|
|
||||||
|
|
||||||
var d = BigInteger.fromBuffer(buffer)
|
do {
|
||||||
d = d.mod(ECKey.curve.n)
|
var buffer = rng(32)
|
||||||
|
typeForce('Buffer', buffer)
|
||||||
|
assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
|
||||||
|
|
||||||
|
d = BigInteger.fromBuffer(buffer)
|
||||||
|
} while (d.compareTo(ECKey.curve) >= 0)
|
||||||
|
|
||||||
return new ECKey(d, compressed)
|
return new ECKey(d, compressed)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user