From 89cf731ac7309b4f98994e3b4b67b7226020181f Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Sat, 26 Apr 2014 02:37:48 +1000 Subject: [PATCH] Adds assertion messages --- src/ecdsa.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ecdsa.js b/src/ecdsa.js index ebc5194..6175aae 100644 --- a/src/ecdsa.js +++ b/src/ecdsa.js @@ -40,12 +40,11 @@ var ecdsa = { return crypto.createHmac('sha256', secret).update(buffer).digest() } - assert(Buffer.isBuffer(hash)) - assert.equal(hash.length, 32) + assert(Buffer.isBuffer(hash), 'Hash must be a Buffer') + assert.equal(hash.length, 32, 'Hash must be 256 bit') + assert(D instanceof BigInteger, 'Private key must be a BigInteger') - assert(D instanceof BigInteger) var x = D.toBuffer(32) - var k = new Buffer(32) var v = new Buffer(32) k.fill(0) @@ -58,11 +57,12 @@ var ecdsa = { v = HmacSHA256(v, k) v = HmacSHA256(v, k) - var kBN = BigInteger.fromBuffer(v) - assert(kBN.compareTo(BigInteger.ONE) > 0) - assert(kBN.compareTo(ecparams.getN()) < 0) + var n = ecparams.getN() + var kB = BigInteger.fromBuffer(v).mod(n) + assert(kB.compareTo(BigInteger.ONE) > 0, 'Invalid k value') + assert(kB.compareTo(ecparams.getN()) < 0, 'Invalid k value') - return kBN + return kB }, sign: function (hash, D) { @@ -74,10 +74,10 @@ var ecdsa = { var e = BigInteger.fromBuffer(hash) var r = Q.getX().toBigInteger().mod(n) - assert.notEqual(r.signum(), 0) + assert.notEqual(r.signum(), 0, 'Invalid R value') var s = k.modInverse(n).multiply(e.add(D.multiply(r))).mod(n) - assert.notEqual(s.signum(), 0) + assert.notEqual(s.signum(), 0, 'Invalid S value') var N_OVER_TWO = n.divide(BigInteger.valueOf(2))