Merge pull request #617 from bitcoinjs/buffix
bufferutils: fix pushDataInt output, BIP62 compliance
This commit is contained in:
commit
b5d9a7dfa0
5 changed files with 44 additions and 4 deletions
|
@ -82,6 +82,7 @@
|
|||
"bs58": "^2.0.1",
|
||||
"cb-http-client": "^0.2.0",
|
||||
"httpify": "^1.0.0",
|
||||
"minimaldata": "^1.0.0",
|
||||
"mocha": "^2.2.0",
|
||||
"proxyquire": "^1.4.0",
|
||||
"sinon": "^1.12.2",
|
||||
|
|
|
@ -10,8 +10,8 @@ function verifuint (value, max) {
|
|||
|
||||
function pushDataSize (i) {
|
||||
return i < opcodes.OP_PUSHDATA1 ? 1
|
||||
: i < 0xff ? 2
|
||||
: i < 0xffff ? 3
|
||||
: i <= 0xff ? 2
|
||||
: i <= 0xffff ? 3
|
||||
: 5
|
||||
}
|
||||
|
||||
|
|
4
test/fixtures/bufferutils.json
vendored
4
test/fixtures/bufferutils.json
vendored
|
@ -34,7 +34,7 @@
|
|||
"dec": 255,
|
||||
"hex64": "ff00000000000000",
|
||||
"hexVI": "fdff00",
|
||||
"hexPD": "4dff00"
|
||||
"hexPD": "4cff"
|
||||
},
|
||||
{
|
||||
"dec": 65534,
|
||||
|
@ -46,7 +46,7 @@
|
|||
"dec": 65535,
|
||||
"hex64": "ffff000000000000",
|
||||
"hexVI": "fdffff",
|
||||
"hexPD": "4effff0000"
|
||||
"hexPD": "4dffff"
|
||||
},
|
||||
{
|
||||
"dec": 65536,
|
||||
|
|
5
test/fixtures/script.json
vendored
5
test/fixtures/script.json
vendored
|
@ -149,6 +149,11 @@
|
|||
"redeemScriptSig": "OP_0",
|
||||
"scriptSig": "OP_0 00",
|
||||
"scriptSigHex": "000100"
|
||||
},
|
||||
{
|
||||
"type": "nonstandard",
|
||||
"scriptSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"scriptSigHex": "4cff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
||||
}
|
||||
],
|
||||
"invalid": {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
var assert = require('assert')
|
||||
var bcrypto = require('../src/crypto')
|
||||
var bscript = require('../src/script')
|
||||
var minimalData = require('minimaldata')
|
||||
var ops = require('../src/opcodes')
|
||||
|
||||
var fixtures = require('./fixtures/script.json')
|
||||
|
@ -440,4 +441,37 @@ describe('script', function () {
|
|||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('SCRIPT_VERIFY_MINIMALDATA policy', function () {
|
||||
fixtures.valid.forEach(function (f) {
|
||||
if (f.scriptSigHex) {
|
||||
it('compliant for ' + f.type + ' scriptSig ' + f.scriptSig, function () {
|
||||
var script = new Buffer(f.scriptSigHex, 'hex')
|
||||
|
||||
assert(minimalData(script))
|
||||
})
|
||||
}
|
||||
|
||||
if (f.scriptPubKeyHex) {
|
||||
it('compliant for ' + f.type + ' scriptPubKey ' + f.scriptPubKey, function () {
|
||||
var script = new Buffer(f.scriptPubKeyHex, 'hex')
|
||||
|
||||
assert(minimalData(script))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function testEncodingForSize (i) {
|
||||
it('compliant for data PUSH of length ' + i, function () {
|
||||
var buffer = new Buffer(i)
|
||||
var script = bscript.compile([buffer])
|
||||
|
||||
assert(minimalData(script), 'Failed for ' + i + ' length script')
|
||||
})
|
||||
}
|
||||
|
||||
for (var i = 0; i < 520; ++i) {
|
||||
testEncodingForSize(i)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue