Socket
Socket
Sign inDemoInstall

rlp

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rlp - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

157

index.js

@@ -0,1 +1,3 @@

const assert = require('assert')
/**

@@ -8,25 +10,24 @@ * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP

**/
var encode = exports.encode = function (input) {
exports.encode = function (input) {
if (input instanceof Array) {
var output = [];
var output = []
for (var i=0; i < input.length; i++) {
output.push(encode(input[i]));
output.push(exports.encode(input[i]))
}
var buf = Buffer.concat(output);
return Buffer.concat([encodeLength(buf.length, 192), buf]);
var buf = Buffer.concat(output)
return Buffer.concat([encodeLength(buf.length, 192), buf])
} else {
input = toBuffer(input);
if (input.length === 1 && input[0] < 128) {
return input;
} else {
return Buffer.concat([encodeLength(input.length, 128), input]);
}
input = toBuffer(input)
if (input.length === 1 && input[0] < 128)
return input
else
return Buffer.concat([encodeLength(input.length, 128), input])
}
};
}
function safeParseInt(v, base){
if(v.slice(0, 2) === '00'){
throw('invalid RLP: extra zeros');
}
return parseInt(v, base);
if(v.slice(0, 2) === '00')
throw('invalid RLP: extra zeros')
return parseInt(v, base)
}

@@ -36,8 +37,8 @@

if (len < 56) {
return new Buffer([len + offset]);
return new Buffer([len + offset])
} else {
var hexLength = intToHex(len);
var lLength = hexLength.length / 2;
var firstByte = intToHex(offset + 55 + lLength);
return new Buffer(firstByte + hexLength, 'hex');
var hexLength = intToHex(len)
var lLength = hexLength.length / 2
var firstByte = intToHex(offset + 55 + lLength)
return new Buffer(firstByte + hexLength, 'hex')
}

@@ -53,8 +54,13 @@ }

var decode = exports.decode = function (input) {
input = toBuffer(input);
return _decode(input).data;
};
if(!input || input.length === 0)
return new Buffer([])
input = toBuffer(input)
var decoded = _decode(input)
assert.equal(decoded.remainder.length, 0, 'invalid remainder')
return decoded.data
}
function _decode (input) {
var firstByte = input[0];
var firstByte = input[0]
if (firstByte <= 0x7f) {

@@ -65,3 +71,3 @@ //a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.

remainder: input.slice(1)
};
}
} else if (firstByte <= 0xb7) {

@@ -71,14 +77,12 @@ //string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string

var length = firstByte - 0x7f,
data;
data
//set 0x80 null to 0
if (firstByte === 0x80) {
data = new Buffer([]);
} else {
data = input.slice(1, length);
}
if (firstByte === 0x80)
data = new Buffer([])
else
data = input.slice(1, length)
if(length === 2 && data[0] < 0x80){
if(length === 2 && data[0] < 0x80)
throw 'invalid rlp encoding: byte must be less 0x80'
}

@@ -88,9 +92,9 @@ return {

remainder: input.slice(length)
};
}
} else if (firstByte <= 0xbf) {
var llength = firstByte - 0xb6;
var length = safeParseInt(input.slice(1, llength).toString('hex'), 16);
var data = input.slice(llength, length + llength);
var llength = firstByte - 0xb6
var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
var data = input.slice(llength, length + llength)
if(data.length < length)
throw(new Error('invalid RLP'));
throw(new Error('invalid RLP'))

@@ -100,13 +104,13 @@ return {

remainder: input.slice(length + llength)
};
}
} else if (firstByte <= 0xf7) {
//a list between 0-55 bytes long
var length = firstByte - 0xbf;
var remainder = input.slice(1);
var innerRemainder = input.slice(1, length);
var decoded = [];
var length = firstByte - 0xbf
var remainder = input.slice(1)
var innerRemainder = input.slice(1, length)
var decoded = []
while (innerRemainder.length) {
var d = _decode(innerRemainder);
decoded.push(d.data);
innerRemainder = d.remainder;
var d = _decode(innerRemainder)
decoded.push(d.data)
innerRemainder = d.remainder
}

@@ -117,20 +121,27 @@

remainder: input.slice(length)
};
}
} else {
//a list over 55 bytes long
var llength = firstByte - 0xf6;
var length = safeParseInt(input.slice(1, llength).toString('hex'), 16);
var remainder = input.slice(llength);
var innerRemainder = input.slice(llength, llength + length);
var decoded = [];
var llength = firstByte - 0xf6
var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
var totalLength = llength + length
if(totalLength > input.length)
throw new Error('invalid rlp: total length is larger than the data')
var remainder = input.slice(llength)
var innerRemainder = input.slice(llength, totalLength)
var decoded = []
if(innerRemainder.length === 0)
throw new Error('invalid rlp, List has a invalid length')
while (innerRemainder.length) {
var d = _decode(innerRemainder);
decoded.push(d.data);
innerRemainder = d.remainder;
var d = _decode(innerRemainder)
decoded.push(d.data)
innerRemainder = d.remainder
}
return {
data: decoded,
remainder: input.slice(llength + length)
};
remainder: input.slice(totalLength)
}
}

@@ -140,7 +151,7 @@ }

function intToHex (i) {
var hex = i.toString(16);
if (hex.length % 2) {
hex = '0' + hex;
}
return hex;
var hex = i.toString(16)
if (hex.length % 2)
hex = '0' + hex
return hex
}

@@ -150,15 +161,13 @@

if (Buffer.isBuffer(input)) {
if (input.length === 0) {
return toBuffer(null);
} else {
return input;
}
if (input.length === 0)
return toBuffer(null)
else
return input
} else if (input === null || input === 0 || input === undefined) {
return new Buffer(0);
return new Buffer(0)
} else if (!isNaN(input)) {
var hex = intToHex(input);
return new Buffer(hex, 'hex');
} else if (!Buffer.isBuffer(input)) {
return new Buffer(input.toString());
}
var hex = intToHex(input)
return new Buffer(hex, 'hex')
} else if (!Buffer.isBuffer(input))
return new Buffer(input.toString())
}
{
"name": "rlp",
"version": "1.0.0",
"version": "1.0.1",
"description": "Recursive Length Prefix Encoding Module",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -5,3 +5,3 @@ RLP [![Build Status](https://travis-ci.org/wanderer/rlp.png?branch=master)](https://travis-ci.org/wanderer/rlp)

[Recursive Length]( https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP) Prefix Encoding for node.js.
INSTALl
INSTALL
======

@@ -8,0 +8,0 @@ `npm install rlp`

const rlp = require('./index.js');
var a = new Buffer('f86081000182520894b94f5374fce5edbc8e2a8697c15331677e6ebf0b0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa08887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3', 'hex')
var d = rlp.decode(a);
var c = rlp.encode(d);
rlp.decode(c);
// console.log(c);
var b = rlp.decode(new Buffer([]));
console.log(b);
// console.log(c.toString('hex'));

@@ -1,142 +0,140 @@

const assert = require('assert');
const fs = require('fs');
const Bignum = require('bn.js');
const RLP = require('../index.js');
const officalTests = require('ethereum-tests').rlptest;
const assert = require('assert')
const fs = require('fs')
const Bignum = require('bn.js')
const RLP = require('../index.js')
const officalTests = require('ethereum-tests').rlptest
describe('invalid rlps', function(){
it('should not crash on an invalid rlp', function(){
var a = new Buffer([239,191,189,239,191,189,239,191,189,239,191,189,239,191,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,191,189,29,239,191,189,77,239,191,189,239,191,189,239,191,189,93,122,239,191,189,239,191,189,239,191,189,103,239,191,189,239,191,189,239,191,189,26,239,191,189,18,69,27,239,191,189,239,191,189,116,19,239,191,189,239,191,189,66,239,191,189,64,212,147,71,239,191,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,191,189,11,222,155,122,54,42,194,169,239,191,189,70,239,191,189,72,239,191,189,239,191,189,54,53,239,191,189,100,73,239,191,189,55,239,191,189,239,191,189,59,1,239,191,189,109,239,191,189,239,191,189,93,239,191,189,208,128,239,191,189,239,191,189,0,239,191,189,239,191,189,239,191,189,15,66,64,239,191,189,239,191,189,239,191,189,239,191,189,4,239,191,189,79,103,239,191,189,85,239,191,189,239,191,189,239,191,189,74,239,191,189,239,191,189,239,191,189,239,191,189,54,239,191,189,239,191,189,239,191,189,239,191,189,239,191,189,83,239,191,189,14,239,191,189,239,191,189,239,191,189,4,63,239,191,189,63,239,191,189,41,239,191,189,239,191,189,239,191,189,67,28,239,191,189,239,191,189,11,239,191,189,31,239,191,189,239,191,189,104,96,100,239,191,189,239,191,189,12,239,191,189,239,191,189,206,152,239,191,189,239,191,189,31,112,111,239,191,189,239,191,189,65,239,191,189,41,239,191,189,239,191,189,53,84,11,239,191,189,239,191,189,12,102,24,12,42,105,109,239,191,189,58,239,191,189,4,239,191,189,104,82,9,239,191,189,6,66,91,43,38,102,117,239,191,189,105,239,191,189,239,191,189,239,191,189,89,127,239,191,189,114]);
var a = new Buffer([239,191,189,239,191,189,239,191,189,239,191,189,239,191,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,191,189,29,239,191,189,77,239,191,189,239,191,189,239,191,189,93,122,239,191,189,239,191,189,239,191,189,103,239,191,189,239,191,189,239,191,189,26,239,191,189,18,69,27,239,191,189,239,191,189,116,19,239,191,189,239,191,189,66,239,191,189,64,212,147,71,239,191,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,191,189,11,222,155,122,54,42,194,169,239,191,189,70,239,191,189,72,239,191,189,239,191,189,54,53,239,191,189,100,73,239,191,189,55,239,191,189,239,191,189,59,1,239,191,189,109,239,191,189,239,191,189,93,239,191,189,208,128,239,191,189,239,191,189,0,239,191,189,239,191,189,239,191,189,15,66,64,239,191,189,239,191,189,239,191,189,239,191,189,4,239,191,189,79,103,239,191,189,85,239,191,189,239,191,189,239,191,189,74,239,191,189,239,191,189,239,191,189,239,191,189,54,239,191,189,239,191,189,239,191,189,239,191,189,239,191,189,83,239,191,189,14,239,191,189,239,191,189,239,191,189,4,63,239,191,189,63,239,191,189,41,239,191,189,239,191,189,239,191,189,67,28,239,191,189,239,191,189,11,239,191,189,31,239,191,189,239,191,189,104,96,100,239,191,189,239,191,189,12,239,191,189,239,191,189,206,152,239,191,189,239,191,189,31,112,111,239,191,189,239,191,189,65,239,191,189,41,239,191,189,239,191,189,53,84,11,239,191,189,239,191,189,12,102,24,12,42,105,109,239,191,189,58,239,191,189,4,239,191,189,104,82,9,239,191,189,6,66,91,43,38,102,117,239,191,189,105,239,191,189,239,191,189,239,191,189,89,127,239,191,189,114])
try{
rlp.decode(a);
rlp.decode(a)
}catch(e){
assert(true);
assert(true)
}
})
})
});
});
describe('RLP encoding (string):', function() {
it('should return itself if single byte and less than 0x7f:', function() {
var encodedSelf = RLP.encode('a');
assert.equal(encodedSelf.toString(), 'a');
});
var encodedSelf = RLP.encode('a')
assert.equal(encodedSelf.toString(), 'a')
})
it('length of string 0-55 should return (0x80+len(data)) plus data', function() {
var encodedDog = RLP.encode('dog');
assert.equal(4, encodedDog.length);
assert.equal(encodedDog[0], 131);
assert.equal(encodedDog[1], 100);
assert.equal(encodedDog[2], 111);
assert.equal(encodedDog[3], 103);
});
var encodedDog = RLP.encode('dog')
assert.equal(4, encodedDog.length)
assert.equal(encodedDog[0], 131)
assert.equal(encodedDog[1], 100)
assert.equal(encodedDog[2], 111)
assert.equal(encodedDog[3], 103)
})
it('length of string >55 should return 0xb7+len(len(data)) plus len(data) plus data', function() {
var encodedLongString = RLP.encode('zoo255zoo255zzzzzzzzzzzzssssssssssssssssssssssssssssssssssssssssssssss');
assert.equal(72, encodedLongString.length);
assert.equal(encodedLongString[0], 184);
assert.equal(encodedLongString[1], 70);
assert.equal(encodedLongString[2], 122);
assert.equal(encodedLongString[3], 111);
assert.equal(encodedLongString[12], 53);
});
});
var encodedLongString = RLP.encode('zoo255zoo255zzzzzzzzzzzzssssssssssssssssssssssssssssssssssssssssssssss')
assert.equal(72, encodedLongString.length)
assert.equal(encodedLongString[0], 184)
assert.equal(encodedLongString[1], 70)
assert.equal(encodedLongString[2], 122)
assert.equal(encodedLongString[3], 111)
assert.equal(encodedLongString[12], 53)
})
})
describe('RLP encoding (list):', function() {
it('length of list 0-55 should return (0xc0+len(data)) plus data', function() {
var encodedArrayOfStrings = RLP.encode(['dog', 'god', 'cat']);
assert.equal(13, encodedArrayOfStrings.length);
assert.equal(encodedArrayOfStrings[0], 204);
assert.equal(encodedArrayOfStrings[1], 131);
assert.equal(encodedArrayOfStrings[11], 97);
assert.equal(encodedArrayOfStrings[12], 116);
});
var encodedArrayOfStrings = RLP.encode(['dog', 'god', 'cat'])
assert.equal(13, encodedArrayOfStrings.length)
assert.equal(encodedArrayOfStrings[0], 204)
assert.equal(encodedArrayOfStrings[1], 131)
assert.equal(encodedArrayOfStrings[11], 97)
assert.equal(encodedArrayOfStrings[12], 116)
})
it('length of list >55 should return 0xf7+len(len(data)) plus len(data) plus data', function() {
//need a test case here!
});
});
})
})
describe('RLP encoding (integer):', function() {
it('length of int = 1, less than 0x7f, similar to string', function() {
var encodedNumber = RLP.encode(15);
assert.equal(1, encodedNumber.length);
assert.equal(encodedNumber[0], 15);
});
var encodedNumber = RLP.encode(15)
assert.equal(1, encodedNumber.length)
assert.equal(encodedNumber[0], 15)
})
it('length of int > 55, similar to string', function() {
var encodedNumber = RLP.encode(1024);
assert.equal(3, encodedNumber.length);
assert.equal(encodedNumber[0], 130);
assert.equal(encodedNumber[1], 4);
assert.equal(encodedNumber[2], 0);
});
});
var encodedNumber = RLP.encode(1024)
assert.equal(3, encodedNumber.length)
assert.equal(encodedNumber[0], 130)
assert.equal(encodedNumber[1], 4)
assert.equal(encodedNumber[2], 0)
})
})
describe('RLP decoding (string):', function() {
it('first byte < 0x7f, return byte itself', function() {
var decodedStr = RLP.decode(new Buffer([97]));
assert.equal(1, decodedStr.length);
assert.equal(decodedStr.toString(), "a");
});
var decodedStr = RLP.decode(new Buffer([97]))
assert.equal(1, decodedStr.length)
assert.equal(decodedStr.toString(), "a")
})
it('first byte < 0xb7, data is everything except first byte', function() {
var decodedStr = RLP.decode(new Buffer([131, 100, 111, 103]));
assert.equal(3, decodedStr.length);
assert.equal(decodedStr.toString(), "dog");
});
var decodedStr = RLP.decode(new Buffer([131, 100, 111, 103]))
assert.equal(3, decodedStr.length)
assert.equal(decodedStr.toString(), "dog")
})
it('array', function() {
var decodedBufferArray = RLP.decode(new Buffer([204, 131, 100, 111, 103, 131, 103, 111, 100, 131, 99, 97, 116]));
assert.deepEqual(decodedBufferArray, [new Buffer("dog"), new Buffer("god"), new Buffer("cat")]);
});
});
var decodedBufferArray = RLP.decode(new Buffer([204, 131, 100, 111, 103, 131, 103, 111, 100, 131, 99, 97, 116]))
assert.deepEqual(decodedBufferArray, [new Buffer("dog"), new Buffer("god"), new Buffer("cat")])
})
})
describe('RLP decoding (int):', function() {
it('first byte < 0x7f, return itself', function() {
var decodedSmallNum = RLP.decode(new Buffer([15]));
assert.equal(1, decodedSmallNum.length);
assert.equal(decodedSmallNum[0], 15);
});
var decodedSmallNum = RLP.decode(new Buffer([15]))
assert.equal(1, decodedSmallNum.length)
assert.equal(decodedSmallNum[0], 15)
})
it('first byte < 0xb7, data is everything except first byte', function() {
var decodedNum = RLP.decode(new Buffer([130, 4, 0]));
assert.equal(2, decodedNum.length);
assert.equal(decodedNum.toString('hex'), "0400");
});
});
var decodedNum = RLP.decode(new Buffer([130, 4, 0]))
assert.equal(2, decodedNum.length)
assert.equal(decodedNum.toString('hex'), "0400")
})
})
describe('strings over 55 bytes long', function() {
var testString = "This function takes in a data, convert it to buffer if not, and a length for recursion";
var encoded = null;
var testString = "This function takes in a data, convert it to buffer if not, and a length for recursion"
var encoded = null
it("should encode it", function() {
encoded = RLP.encode(testString);
assert.equal(encoded[0], 184);
assert.equal(encoded[1], 86);
});
encoded = RLP.encode(testString)
assert.equal(encoded[0], 184)
assert.equal(encoded[1], 86)
})
it("should decode", function() {
var decoded = RLP.decode(encoded);
assert.equal(decoded.toString(), testString);
});
var decoded = RLP.decode(encoded)
assert.equal(decoded.toString(), testString)
})
});
})
describe('list over 55 bytes long', function() {
var testString = ["This", "function", "takes", "in", "a", "data", "convert", "it", "to", "buffer", "if", "not", "and", "a", "length", "for", "recursion", 'a1', 'a2', 'a3', 'ia4', 'a5', 'a6', 'a7', 'a8', 'ba9'];
var encoded = null;
var testString = ["This", "function", "takes", "in", "a", "data", "convert", "it", "to", "buffer", "if", "not", "and", "a", "length", "for", "recursion", 'a1', 'a2', 'a3', 'ia4', 'a5', 'a6', 'a7', 'a8', 'ba9']
var encoded = null
it("should encode it", function() {
encoded = RLP.encode(testString);
});
encoded = RLP.encode(testString)
})
it("should decode", function() {
var decoded = RLP.decode(encoded);
var decoded = RLP.decode(encoded)
for (var i = 0; i < decoded.length; i++) {
decoded[i] = decoded[i].toString();
decoded[i] = decoded[i].toString()
}
assert.deepEqual(decoded, testString);
});
assert.deepEqual(decoded, testString)
})
});
})

@@ -155,65 +153,104 @@ describe('nested lists:', function() {

]
];
var encoded;
]
var encoded
it('encode a nested list', function() {
encoded = RLP.encode(nestedList);
assert.deepEqual(encoded, new Buffer([0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0]));
});
encoded = RLP.encode(nestedList)
assert.deepEqual(encoded, new Buffer([0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0]))
})
it('should decode a nested list', function() {
var decoded = RLP.decode(encoded);
assert.deepEqual(nestedList, decoded);
});
});
var decoded = RLP.decode(encoded)
assert.deepEqual(nestedList, decoded)
})
})
describe('null values', function() {
var nestedList = [null];
var encoded;
var nestedList = [null]
var encoded
it('encode a null array', function() {
encoded = RLP.encode(nestedList);
assert.deepEqual(encoded, new Buffer([0xc1, 0x80]));
});
encoded = RLP.encode(nestedList)
assert.deepEqual(encoded, new Buffer([0xc1, 0x80]))
})
it('should decode a null value', function(){
assert.deepEqual(new Buffer([]), RLP.decode(new Buffer('80', 'hex')));
});
});
assert.deepEqual(new Buffer([]), RLP.decode(new Buffer('80', 'hex')))
})
})
describe('zero values', function() {
var nestedList = [null];
var encoded;
var nestedList = [null]
var encoded
it('encode a zero', function() {
encoded = RLP.encode(new Buffer([0]));
assert.deepEqual(encoded, new Buffer([0]));
});
encoded = RLP.encode(new Buffer([0]))
assert.deepEqual(encoded, new Buffer([0]))
})
it('decode a zero', function() {
var decode = RLP.decode(new Buffer([0]));
assert.deepEqual(decode, new Buffer([0]));
});
});
var decode = RLP.decode(new Buffer([0]))
assert.deepEqual(decode, new Buffer([0]))
})
})
describe('bad values', function() {
it('wrong encoded a zero', function() {
var val = new Buffer("f9005f030182520894b94f5374fce5edbc8e2a8697c15331677e6ebf0b0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa08887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3", 'hex');
var result;
var val = new Buffer("f9005f030182520894b94f5374fce5edbc8e2a8697c15331677e6ebf0b0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa08887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3", 'hex')
var result
try{
result = RLP.decode(val);
result = RLP.decode(val)
}catch(e){
}
assert.equal(result, undefined);
});
assert.equal(result, undefined)
})
it('invalid length', function(){
var a = new Buffer('f86081000182520894b94f5374fce5edbc8e2a8697c15331677e6ebf0b0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa08887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3', 'hex');
var a = new Buffer('f86081000182520894b94f5374fce5edbc8e2a8697c15331677e6ebf0b0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa08887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3', 'hex')
var result;
var result
try{
result = RLP.decode(val);
result = RLP.decode(a)
}catch(e){
}
assert.equal(result, undefined);
});
});
assert.equal(result, undefined)
})
it('extra data at end', function(){
var c = 'f90260f901f9a02a3c692012a15502ba9c39f3aebb36694eed978c74b52e6c0cf210d301dbf325a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0ef1552a40b7165c3cd773806b9e0c165b75356e0314bf0706f279c729f51e017a0b6c9fd1447d0b414a1f05957927746f58ef5a2ebde17db631d460eaf6a93b18da0bc37d79753ad738a6dac4921e57392f145d8887476de3f783dfa7edae9283e52b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefd8825208845509814280a00451dd53d9c09f3cfb627b51d9d80632ed801f6330ee584bffc26caac9b9249f88c7bffe5ebd94cc2ff861f85f800a82c35094095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba098c3a099885a281885f487fd37550de16436e8c47874cd213531b10fe751617fa044b6b81011ce57bffcaf610bf728fb8a7237ad261ea2d937423d78eb9e137076c0ef'
var a = new Buffer(c, 'hex')
var result
try{
result = RLP.decode(a)
}catch(e){
}
assert.equal(result, undefined)
})
it('extra data at end', function(){
var c = 'f9ffffffc260f901f9a02a3c692012a15502ba9c39f3aebb36694eed978c74b52e6c0cf210d301dbf325a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0ef1552a40b7165c3cd773806b9e0c165b75356e0314bf0706f279c729f51e017a0b6c9fd1447d0b414a1f05957927746f58ef5a2ebde17db631d460eaf6a93b18da0bc37d79753ad738a6dac4921e57392f145d8887476de3f783dfa7edae9283e52b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefd8825208845509814280a00451dd53d9c09f3cfb627b51d9d80632ed801f6330ee584bffc26caac9b9249f88c7bffe5ebd94cc2ff861f85f800a82c35094095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba098c3a099885a281885f487fd37550de16436e8c47874cd213531b10fe751617fa044b6b81011ce57bffcaf610bf728fb8a7237ad261ea2d937423d78eb9e137076c0'
var a = new Buffer(c, 'hex')
var result
try{
result = RLP.decode(a)
}catch(e){
}
assert.equal(result, undefined)
})
it('list length longer than data', function(){
var c = 'f9ffffffc260f901f9a02a3c692012a15502ba9c39f3aebb36694eed978c74b52e6c0cf210d301dbf325a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0ef1552a40b7165c3cd773806b9e0c165b75356e0314bf0706f279c729f51e017a0b6c9fd1447d0b414a1f05957927746f58ef5a2ebde17db631d460eaf6a93b18da0bc37d79753ad738a6dac4921e57392f145d8887476de3f783dfa7edae9283e52b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefd8825208845509814280a00451dd53d9c09f3cfb627b51d9d80632ed801f6330ee584bffc26caac9b9249f88c7bffe5ebd94cc2ff861f85f800a82c35094095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba098c3a099885a281885f487fd37550de16436e8c47874cd213531b10fe751617fa044b6b81011ce57bffcaf610bf728fb8a7237ad261ea2d937423d78eb9e137076c0'
var a = new Buffer(c, 'hex')
var result
try{
result = RLP.decode(a)
}catch(e){
}
assert.equal(result, undefined)
})
})
describe('offical tests', function() {

@@ -223,14 +260,14 @@ it('pass all tests', function(done) {

var incoming = officalTests[test].in;
var incoming = officalTests[test].in
//if we are testing a big number
if (incoming[0] === '#') {
var bn = new Bignum(incoming.slice(1));
incoming = new Buffer(bn.toArray());
var bn = new Bignum(incoming.slice(1))
incoming = new Buffer(bn.toArray())
}
var encoded = RLP.encode(incoming);
assert.equal(encoded.toString('hex'), officalTests[test].out.toLowerCase());
var encoded = RLP.encode(incoming)
assert.equal(encoded.toString('hex'), officalTests[test].out.toLowerCase())
}
done();
});
});
done()
})
})
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc