From dbc8607520e42b88bc64111f79a1c6961caff233 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Fri, 13 Mar 2020 13:54:55 +0000 Subject: [PATCH] fix: use multibase and add buffer Adds buffer related to https://github.com/ipfs/js-ipfs/issues/2924 Uses multibase to encode. --- .gitignore | 1 + package.json | 4 ++-- src/codec.js | 1 + src/convert.js | 14 +++++++------- src/index.js | 5 +++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 6780e0b9..1a9d6b63 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ test/test-data/go-ipfs-repo/LOG.old # while testing npm5 package-lock.json +yarn.lock \ No newline at end of file diff --git a/package.json b/package.json index 475bc334..169b3cb7 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "bugs": "https://github.com/multiformats/js-multiaddr/issues", "homepage": "https://github.com/multiformats/js-multiaddr", "dependencies": { - "bs58": "^4.0.1", + "buffer": "^5.5.0", "cids": "~0.7.1", "class-is": "^1.1.0", - "hi-base32": "~0.5.0", "ip": "^1.1.5", "is-ip": "^3.1.0", + "multibase": "^0.6.0", "varint": "^5.0.0" }, "devDependencies": { diff --git a/src/codec.js b/src/codec.js index 0a4a8d6f..7abe09ad 100644 --- a/src/codec.js +++ b/src/codec.js @@ -1,5 +1,6 @@ 'use strict' +const { Buffer } = require('buffer') const convert = require('./convert') const protocols = require('./protocols-table') const varint = require('varint') diff --git a/src/convert.js b/src/convert.js index 5a9b4031..874fd1fe 100644 --- a/src/convert.js +++ b/src/convert.js @@ -1,11 +1,11 @@ 'use strict' const ip = require('ip') +const { Buffer } = require('buffer') const isIp = require('is-ip') const protocols = require('./protocols-table') -const bs58 = require('bs58') const CID = require('cids') -const base32 = require('hi-base32') +const multibase = require('multibase') const varint = require('varint') module.exports = Convert @@ -138,8 +138,7 @@ function buf2mh (buf) { if (address.length !== size) { throw new Error('inconsistent lengths') } - - return bs58.encode(address) + return multibase.encode('base58btc', address).toString().slice(1) } function onion2buf (str) { @@ -150,7 +149,8 @@ function onion2buf (str) { if (addr[0].length !== 16) { throw new Error('failed to parse onion addr: ' + addr[0] + ' not a Tor onion address.') } - const buf = Buffer.from(base32.decode.asBytes(addr[0].toUpperCase())) + + const buf = multibase.decode('b' + addr[0]) // onion port number const port = parseInt(addr[1], 10) @@ -169,7 +169,7 @@ function onion32buf (str) { if (addr[0].length !== 56) { throw new Error('failed to parse onion addr: ' + addr[0] + ' not a Tor onion3 address.') } - const buf = Buffer.from(base32.decode.asBytes(addr[0].toUpperCase())) + const buf = multibase.decode('b' + addr[0]) // onion port number const port = parseInt(addr[1], 10) @@ -183,7 +183,7 @@ function onion32buf (str) { function buf2onion (buf) { const addrBytes = buf.slice(0, buf.length - 2) const portBytes = buf.slice(buf.length - 2) - const addr = base32.encode(addrBytes).toLowerCase() + const addr = multibase.encode('base32', addrBytes).toString().slice(1) const port = buf2port(portBytes) return addr + ':' + port } diff --git a/src/index.js b/src/index.js index c0c61006..023faefd 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,10 @@ 'use strict' const codec = require('./codec') +const { Buffer } = require('buffer') const protocols = require('./protocols-table') const varint = require('varint') -const bs58 = require('bs58') +const multibase = require('multibase') const CID = require('cids') const withIs = require('class-is') const inspect = Symbol.for('nodejs.util.inspect.custom') @@ -308,7 +309,7 @@ Multiaddr.prototype.getPeerId = function getPeerId () { // Get the last id b58str = tuples.pop()[1] // Get multihash, unwrap from CID if needed - b58str = bs58.encode(new CID(b58str).multihash) + b58str = multibase.encode('base58btc', new CID(b58str).multihash).toString().slice(1) } catch (e) { b58str = null }