enforce strict ordering with checkmultisig.
This commit is contained in:
parent
3c0bf360e2
commit
fd7d20be9c
@ -220,7 +220,8 @@ script.execute = function execute(s, stack, tx, index) {
|
|||||||
|
|
||||||
// Get signatures
|
// Get signatures
|
||||||
var succ = 0;
|
var succ = 0;
|
||||||
for (var i = 0, j = 0; i < m && j < n; i++) {
|
// for (var i = 0, j = 0; i < m && j < n; i++) {
|
||||||
|
for (var i = 0; i < m; i++) {
|
||||||
var sig = stack.pop();
|
var sig = stack.pop();
|
||||||
var type = sig[sig.length - 1];
|
var type = sig[sig.length - 1];
|
||||||
if (!constants.rhashType[type & 0x7f])
|
if (!constants.rhashType[type & 0x7f])
|
||||||
@ -232,9 +233,12 @@ script.execute = function execute(s, stack, tx, index) {
|
|||||||
if (!script.isValidSig(sig))
|
if (!script.isValidSig(sig))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var res = false;
|
// var res = false;
|
||||||
for (; !res && j < n; j++)
|
// for (; !res && j < n; j++)
|
||||||
res = script.verify(hash, sig.slice(0, -1), keys[j]);
|
// res = script.verify(hash, sig.slice(0, -1), keys[j]);
|
||||||
|
|
||||||
|
// Strict order:
|
||||||
|
var res = script.verify(hash, sig.slice(0, -1), keys.pop());
|
||||||
if (res)
|
if (res)
|
||||||
succ++;
|
succ++;
|
||||||
}
|
}
|
||||||
@ -284,6 +288,9 @@ script.execute = function execute(s, stack, tx, index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (stack.length > 1000)
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -289,12 +289,12 @@ describe('Wallet', function() {
|
|||||||
w2.sign(send);
|
w2.sign(send);
|
||||||
|
|
||||||
// XXX Still verifies for some reason.
|
// XXX Still verifies for some reason.
|
||||||
send.inputs[0].script[1] = [];
|
// send.inputs[0].script[1] = [];
|
||||||
// send.inputs[0].script[2] = [];
|
// send.inputs[0].script[2] = [];
|
||||||
assert(send.verify());
|
assert(send.verify());
|
||||||
|
|
||||||
console.log(utx.outputs[0].script);
|
// console.log(utx.outputs[0].script);
|
||||||
console.log(send.inputs[0].script);
|
// console.log(send.inputs[0].script);
|
||||||
|
|
||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user