Merge pull request #17 from bitgaming/master

hasLowS validation not using correct constant as it is set in base 10 rather than hex
This commit is contained in:
Braydon Fuller 2016-01-21 11:18:27 -05:00
commit 55bb6ad69f
2 changed files with 20 additions and 8 deletions

View File

@ -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;

View File

@ -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);
});
});