diff --git a/lib/bcoin/script.js b/lib/bcoin/script.js index 399ce241..c6d1e7a2 100644 --- a/lib/bcoin/script.js +++ b/lib/bcoin/script.js @@ -1073,7 +1073,7 @@ script.isMultisigInput = function isMultisigInput(s, pubs, tx, i) { return false; for (i = 1; i < s.length; i++) { - // res = Array.isArray(s[i]) && script.isValidSig(s[i]); + // res = script.isValidSig(s[i]); res = Array.isArray(s[i]) && 9 <= s[i].length && s[i].length <= 73; if (!res) return false; @@ -1097,7 +1097,7 @@ script.isScripthashInput = function isScripthashInput(s, redeem) { return false; for (i = 1; i < s.length - 1; i++) { - // res = Array.isArray(s[i]) && script.isValidSig(s[i]); + // res = script.isValidSig(s[i]); res = Array.isArray(s[i]) && 9 <= s[i].length && s[i].length <= 73; if (!res) return false; @@ -1126,7 +1126,7 @@ script.isScripthashInput = function isScripthashInput(s, redeem) { * * This function is consensus-critical since BIP66. */ -script.isValidSig = function(sig) { +script.isValidSig = function(sig, allowZero) { var lenR, lenS; if (!Array.isArray(sig)) @@ -1134,7 +1134,7 @@ script.isValidSig = function(sig) { // Empty signature. Not strictly DER encoded, but allowed to provide a // compact way to provide an invalid signature for use with CHECK(MULTI)SIG - if (sig.length === 0) + if (allowZero && sig.length === 0) return true; // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S] [sighash]