From c5a107961c90a1010bfa2895b578607a556042c3 Mon Sep 17 00:00:00 2001 From: Ed Bosher Date: Tue, 10 Nov 2015 19:42:37 +0800 Subject: [PATCH] Set s mid point as hex rather than decimal (bn.js default) --- lib/crypto/signature.js | 2 +- test/crypto/signature.js | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/crypto/signature.js b/lib/crypto/signature.js index cf9b897..01527bd 100644 --- a/lib/crypto/signature.js +++ b/lib/crypto/signature.js @@ -275,7 +275,7 @@ Signature.isTxDER = function(buf) { */ Signature.prototype.hasLowS = function() { if (this.s.lt(new BN(1)) || - this.s.gt(new BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0'))) { + this.s.gt(new BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0', 'hex'))) { return false; } return true; diff --git a/test/crypto/signature.js b/test/crypto/signature.js index dc00549..5ea73c0 100644 --- a/test/crypto/signature.js +++ b/test/crypto/signature.js @@ -278,18 +278,30 @@ describe('Signature', function() { describe('#hasLowS', function() { it('should detect high and low S', function() { var r = new BN('63173831029936981022572627018246571655303050627048489594159321588908385378810'); - var s = new BN('4331694221846364448463828256391194279133231453999942381442030409253074198130'); - var s2 = new BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B2000'); + var sig = new Signature({ r: r, - s: s - }); + s: new BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A1', 'hex') + }); + sig.hasLowS().should.equal(false); + var sig2 = new Signature({ r: r, - s: s2 - }); + s: new BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0', 'hex') + }); sig2.hasLowS().should.equal(true); - sig.hasLowS().should.equal(false); + + var sig3 = new Signature({ + r: r, + s: new BN(1) + }); + sig3.hasLowS().should.equal(true); + + var sig4 = new Signature({ + r: r, + s: new BN(0) + }); + sig4.hasLowS().should.equal(false); }); });