From f60cb2e49128f847384693a425e8af367192aee8 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 29 Sep 2015 18:55:33 +1000 Subject: [PATCH] scripts: ensure isPubKeyHashOutput/isScriptHashOutput adhere to BIP62 --- src/script.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/script.js b/src/script.js index 3239e37..5be3c68 100644 --- a/src/script.js +++ b/src/script.js @@ -156,15 +156,14 @@ function isPubKeyHashInput (script) { } function isPubKeyHashOutput (script) { - var chunks = decompile(script) - - return chunks.length === 5 && - chunks[0] === OPS.OP_DUP && - chunks[1] === OPS.OP_HASH160 && - Buffer.isBuffer(chunks[2]) && - chunks[2].length === 20 && - chunks[3] === OPS.OP_EQUALVERIFY && - chunks[4] === OPS.OP_CHECKSIG + var buffer = compile(script) + + return buffer.length === 25 && + buffer[0] === OPS.OP_DUP && + buffer[1] === OPS.OP_HASH160 && + buffer[2] === 0x14 && + buffer[23] === OPS.OP_EQUALVERIFY && + buffer[24] === OPS.OP_CHECKSIG } function isPubKeyInput (script) { @@ -199,13 +198,12 @@ function isScriptHashInput (script, allowIncomplete) { } function isScriptHashOutput (script) { - var chunks = decompile(script) + var buffer = compile(script) - return chunks.length === 3 && - chunks[0] === OPS.OP_HASH160 && - Buffer.isBuffer(chunks[1]) && - chunks[1].length === 20 && - chunks[2] === OPS.OP_EQUAL + return buffer.length === 23 && + buffer[0] === OPS.OP_HASH160 && + buffer[1] === 0x14 && + buffer[22] === OPS.OP_EQUAL } // allowIncomplete is to account for combining signatures