diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e4e8106426..99806e50735 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Released with 1.0.0-beta.37 code base. - Fix incorrectly populating chainId param with `net_version` when signing txs (#2378) - regeneratorRuntime error fixed (#3058) - Fix accessing event.name where event is undefined (#3014) +- fixed Web3Utils toHex() for Buffer input (#3021) - Fix bubbling up tx signing errors (#2063, #3105) - HttpProvider: CORS issue with Firefox and Safari (#2978) - Ensure the immutability of the `tx` object passed to function `signTransaction` (#2190) diff --git a/packages/web3-utils/src/utils.js b/packages/web3-utils/src/utils.js index ff3169906c8..15fff414446 100644 --- a/packages/web3-utils/src/utils.js +++ b/packages/web3-utils/src/utils.js @@ -318,7 +318,7 @@ var hexToBytes = function(hex) { * And even stringifys objects before. * * @method toHex - * @param {String|Number|BN|Object} value + * @param {String|Number|BN|Object|Buffer} value * @param {Boolean} returnType * @return {String} */ @@ -333,6 +333,9 @@ var toHex = function (value, returnType) { return returnType ? 'bool' : value ? '0x01' : '0x00'; } + if (Buffer.isBuffer(value)) { + return '0x' + value.toString('hex'); + } if (_.isObject(value) && !isBigNumber(value) && !isBN(value)) { return returnType ? 'string' : utf8ToHex(JSON.stringify(value)); diff --git a/test/utils.toHex.js b/test/utils.toHex.js index 8db5abb1a6d..3b94f5f97df 100644 --- a/test/utils.toHex.js +++ b/test/utils.toHex.js @@ -42,6 +42,7 @@ var tests = [ { value: '\u0003\u0000\u0000\u00005èÆÕL]\u0012|Î¾ž\u001a7«›\u00052\u0011(ЗY\n<\u0010\u0000\u0000\u0000\u0000\u0000\u0000e!ßd/ñõì\f:z¦Î¦±ç·÷Í¢Ëß\u00076*…\bŽ—ñžùC1ÉUÀé2\u001aӆBŒ', expected: '0x0300000035c3a8c386c3954c5d127cc29dc38ec2bec29e1a37c2abc29b05321128c390c297590a3c100000000000006521c39f642fc3b1c3b5c3ac0c3a7ac2a6c38ec2a6c2b1c3a7c2b7c3b7c38dc2a2c38bc39f07362ac28508c28ec297c3b1c29ec3b94331c38955c380c3a9321ac393c28642c28c'}, { value: '내가 제일 잘 나가', expected:'0xeb82b4eab08020eca09cec9dbc20ec9e9820eb8298eab080'}, + { value: Buffer.from('100'), expected:'0x313030'} ]; describe('lib/utils/utils', function () {