From 55681e7e5d94ca435a9663d7fb59d6b5efbae0a2 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Thu, 8 May 2014 13:55:57 +1000 Subject: [PATCH] Script: use PubKey objects not prebuilt Buffers --- src/script.js | 13 ++++++++----- test/integration/p2sh.js | 5 +---- test/script.js | 5 +++-- test/transaction.js | 3 +-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/script.js b/src/script.js index ae59fc2..2e47f7c 100644 --- a/src/script.js +++ b/src/script.js @@ -295,12 +295,15 @@ Script.createP2SHScriptPubKey = function(hash) { // m [pubKeys ...] n OP_CHECKMULTISIG Script.createMultisigScriptPubKey = function(m, pubKeys) { var script = new Script() + var n = pubKeys.length - script.writeOp(opcodes.OP_1 + m - 1) - for (var i = 0; i < pubKeys.length; ++i) { - script.writeBytes(pubKeys[i]) - } - script.writeOp(opcodes.OP_1 + pubKeys.length - 1) + script.writeOp((opcodes.OP_1 - 1) + m) + + pubKeys.forEach(function(pubKey) { + script.writeBytes(pubKey.toBuffer()) + }) + + script.writeOp((opcodes.OP_1 - 1) + n) script.writeOp(opcodes.OP_CHECKMULTISIG) return script diff --git a/test/integration/p2sh.js b/test/integration/p2sh.js index 72c3f75..0fef5f8 100644 --- a/test/integration/p2sh.js +++ b/test/integration/p2sh.js @@ -27,10 +27,7 @@ describe('p2sh', function() { var pubKeys = privKeys.map(function(eck) { return eck.pub }) - var pubKeyBuffers = pubKeys.map(function(q) { - return q.toBuffer() - }) - var redeemScript = Script.createMultisigScriptPubKey(2, pubKeyBuffers) + var redeemScript = Script.createMultisigScriptPubKey(2, pubKeys) var hash160 = crypto.hash160(redeemScript.buffer) var multisigAddress = new Address(hash160, networks.testnet.scriptHash) diff --git a/test/script.js b/test/script.js index 36f0e6c..595a130 100644 --- a/test/script.js +++ b/test/script.js @@ -3,6 +3,7 @@ var crypto = require('../src/crypto') var networks = require('../src/networks') var Address = require('../src/address') +var ECPubKey = require('../src/ecpubkey') var Script = require('../src/script') var fixtures = require('./fixtures/script') @@ -95,7 +96,7 @@ describe('Script', function() { '02ea1297665dd733d444f31ec2581020004892cdaaf3dd6c0107c615afb839785f', '02fab2dea1458990793f56f42e4a47dbf35a12a351f26fa5d7e0cc7447eaafa21f', '036c6802ce7e8113723dd92cdb852e492ebb157a871ca532c3cb9ed08248ff0e19' - ].map(h2b) + ].map(ECPubKey.fromHex) }) it('should create valid redeemScript', function() { @@ -112,7 +113,7 @@ describe('Script', function() { var pubKeys = [ '02359c6e3f04cefbf089cf1d6670dc47c3fb4df68e2bad1fa5a369f9ce4b42bbd1', '0395a9d84d47d524548f79f435758c01faec5da2b7e551d3b8c995b7e06326ae4a' - ].map(h2b) + ].map(ECPubKey.fromHex) var signatures = [ '304402207515cf147d201f411092e6be5a64a6006f9308fad7b2a8fdaab22cd86ce764c202200974b8aca7bf51dbf54150d3884e1ae04f675637b926ec33bf75939446f6ca2801', '3045022100ef253c1faa39e65115872519e5f0a33bbecf430c0f35cf562beabbad4da24d8d02201742be8ee49812a73adea3007c9641ce6725c32cd44ddb8e3a3af460015d140501' diff --git a/test/transaction.js b/test/transaction.js index 5c2fcbd..0b3b0db 100644 --- a/test/transaction.js +++ b/test/transaction.js @@ -255,8 +255,7 @@ describe('Transaction', function() { return ECKey.fromWIF(wif) }) var pubKeys = privKeys.map(function(eck) { return eck.pub }) - var pubKeyBuffers = pubKeys.map(function(q) { return q.toBuffer() }) - var redeemScript = Script.createMultisigScriptPubKey(2, pubKeyBuffers) + var redeemScript = Script.createMultisigScriptPubKey(2, pubKeys) var signatures = privKeys.map(function(privKey) { return tx.signScriptSig(0, redeemScript, privKey)