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