Merge pull request #351 from matiu/bug/minor-bug-in-address-FromScript

fix .fromScriptPubKey parsing in some strange Txs
This commit is contained in:
Ryan X. Charles 2014-05-26 08:43:43 -07:00
commit bc84d1e82b
3 changed files with 88 additions and 71 deletions

File diff suppressed because one or more lines are too long

View File

@ -110,6 +110,7 @@ function isSmallIntOp(opcode) {
Script.prototype.isMultiSig = function() {
return (this.chunks.length > 3 &&
isSmallIntOp(this.chunks[0]) &&
this.chunks.slice(1,this.chunks.length-2).every(function(i){return Buffer.isBuffer(i);}) &&
isSmallIntOp(this.chunks[this.chunks.length - 2]) &&
this.chunks[this.chunks.length - 1] == Opcode.map.OP_CHECKMULTISIG);
};

View File

@ -175,5 +175,21 @@ describe('Script', function() {
});
describe('#isMultiSig', function() {
it('should return true for valid multisig scripts', function() {
var pubs = testPubKeysHex.map( function(hex) {
return new Buffer(hex,'hex');
});
var s1 = Script.createMultisig(3,pubs, {noSorting: true});
s1.isMultiSig().should.equal(true);
});
it('should return false for invalid multisig scripts', function() {
(new Script(new Buffer('000000ae','hex'))).isMultiSig().should.equal(false);
var s = new Script(new Buffer('522103bb52138972c48a132fc1f637858c5189607dd0f7fe40c4f20f6ad65f2d389ba42103bb52138972c48a132fc1f637858c5189607dd0f7fe40c4f20f6ad65f2d389ba45f6054ae','hex'));
(new Script(new Buffer('522103bb52138972c48a132fc1f637858c5189607dd0f7fe40c4f20f6ad65f2d389ba42103bb52138972c48a132fc1f637858c5189607dd0f7fe40c4f20f6ad65f2d389ba45f6054ae','hex'))).isMultiSig().should.equal(false);
});
});
});