script: pushdata.
This commit is contained in:
parent
430e917b79
commit
19f2af16d4
@ -1237,10 +1237,10 @@ Script.checkPush = function checkPush(value, flags) {
|
||||
return pushdata.opcode == null && pushdata.len === value.length;
|
||||
|
||||
if (value.length <= 255)
|
||||
return pushdata.opcode === 'pushdata1';
|
||||
return pushdata.opcode === constants.opcodes.pushdata1;
|
||||
|
||||
if (value.length <= 65535)
|
||||
return pushdata.opcode === 'pushdata2';
|
||||
return pushdata.opcode === constants.opcodes.pushdata2;
|
||||
|
||||
return true;
|
||||
};
|
||||
@ -2596,7 +2596,7 @@ Script.sign = function sign(msg, key, type) {
|
||||
Script.decode = function decode(buf) {
|
||||
var code = [];
|
||||
var off = 0;
|
||||
var b, opcode, len;
|
||||
var b, len;
|
||||
|
||||
assert(Buffer.isBuffer(buf));
|
||||
|
||||
@ -2637,48 +2637,46 @@ Script.decode = function decode(buf) {
|
||||
continue;
|
||||
}
|
||||
|
||||
opcode = constants.opcodesByVal[b];
|
||||
|
||||
if (off >= buf.length) {
|
||||
code.push(opcode || b);
|
||||
code.push(constants.opcodesByVal[b] || b);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (opcode === 'pushdata1') {
|
||||
if (b === constants.opcodes.pushdata1) {
|
||||
len = buf[off];
|
||||
off += 1;
|
||||
code.push(buf.slice(off, off + len));
|
||||
off += len;
|
||||
if (len <= 0x4b || off > buf.length) {
|
||||
utils.hidden(code[code.length - 1], 'pushdata', {
|
||||
opcode: opcode,
|
||||
opcode: b,
|
||||
len: len
|
||||
});
|
||||
}
|
||||
} else if (opcode === 'pushdata2') {
|
||||
} else if (b === constants.opcodes.pushdata2) {
|
||||
len = utils.readU16(buf, off);
|
||||
off += 2;
|
||||
code.push(buf.slice(off, off + len));
|
||||
off += len;
|
||||
if (len <= 0xff || off > buf.length) {
|
||||
utils.hidden(code[code.length - 1], 'pushdata', {
|
||||
opcode: opcode,
|
||||
opcode: b,
|
||||
len: len
|
||||
});
|
||||
}
|
||||
} else if (opcode === 'pushdata4') {
|
||||
} else if (b === constants.opcodes.pushdata4) {
|
||||
len = utils.readU32(buf, off);
|
||||
off += 4;
|
||||
code.push(buf.slice(off, off + len));
|
||||
off += len;
|
||||
if (len <= 0xffff || off > buf.length) {
|
||||
utils.hidden(code[code.length - 1], 'pushdata', {
|
||||
opcode: opcode,
|
||||
opcode: b,
|
||||
len: len
|
||||
});
|
||||
}
|
||||
} else {
|
||||
code.push(opcode || b);
|
||||
code.push(constants.opcodesByVal[b] || b);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2704,15 +2702,15 @@ Script.encode = function encode(code) {
|
||||
if (op.pushdata.opcode === null) {
|
||||
p.writeU8(op.pushdata.len);
|
||||
p.writeBytes(op);
|
||||
} else if (op.pushdata.opcode === 'pushdata1') {
|
||||
} else if (op.pushdata.opcode === opcodes.pushdata1) {
|
||||
p.writeU8(opcodes.pushdata1);
|
||||
p.writeU8(op.pushdata.len);
|
||||
p.writeBytes(op);
|
||||
} else if (op.pushdata.opcode === 'pushdata2') {
|
||||
} else if (op.pushdata.opcode === opcodes.pushdata2) {
|
||||
p.writeU8(opcodes.pushdata2);
|
||||
p.writeU16(op.pushdata.len);
|
||||
p.writeBytes(op);
|
||||
} else if (op.pushdata.opcode === 'pushdata4') {
|
||||
} else if (op.pushdata.opcode === opcodes.pushdata4) {
|
||||
p.writeU8(opcodes.pushdata4);
|
||||
p.writeU32(op.pushdata.len);
|
||||
p.writeBytes(op);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user