From ea9c8251a087ba2d09a9435cbd227f7a467674bd Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Thu, 26 Jun 2014 18:43:13 +1000 Subject: [PATCH] use cryptocoinjs/bs58 --- package.json | 1 + src/base58.js | 73 -------------------------------------------- src/base58check.js | 2 +- src/index.js | 1 - test/base58.js | 36 ---------------------- test/bitcoin.core.js | 2 +- 6 files changed, 3 insertions(+), 112 deletions(-) delete mode 100644 src/base58.js delete mode 100644 test/base58.js diff --git a/package.json b/package.json index 5e38867..9ce4947 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ }, "dependencies": { "bigi": "1.1.0", + "bs58": "1.1.0", "crypto-js": "3.1.2-3", "ecurve": "0.10.0", "secure-random": "0.2.1" diff --git a/src/base58.js b/src/base58.js deleted file mode 100644 index 13791f4..0000000 --- a/src/base58.js +++ /dev/null @@ -1,73 +0,0 @@ -// Base58 encoding/decoding -// Originally written by Mike Hearn for BitcoinJ -// Copyright (c) 2011 Google Inc -// Ported to JavaScript by Stefan Thomas -// Merged Buffer refactorings from base58-native by Stephen Pair -// Copyright (c) 2013 BitPay Inc - -var assert = require('assert') -var BigInteger = require('bigi') - -var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' -var ALPHABET_BUF = new Buffer(ALPHABET, 'ascii') -var ALPHABET_MAP = {} -for(var i = 0; i < ALPHABET.length; i++) { - ALPHABET_MAP[ALPHABET.charAt(i)] = BigInteger.valueOf(i) -} -var BASE = BigInteger.valueOf(58) - -function encode(buffer) { - var bi = BigInteger.fromBuffer(buffer) - var result = new Buffer(buffer.length << 1) - - var i = result.length - 1 - while (bi.signum() > 0) { - var remainder = bi.mod(BASE) - bi = bi.divide(BASE) - - result[i] = ALPHABET_BUF[remainder.intValue()] - i-- - } - - // deal with leading zeros - var j = 0 - while (buffer[j] === 0) { - result[i] = ALPHABET_BUF[0] - j++ - i-- - } - - return result.slice(i + 1, result.length).toString('ascii') -} - -function decode(string) { - if (string.length === 0) return new Buffer(0) - - var num = BigInteger.ZERO - - for (var i = 0; i < string.length; i++) { - num = num.multiply(BASE) - - var figure = ALPHABET_MAP[string.charAt(i)] - assert.notEqual(figure, undefined, 'Non-base58 character') - - num = num.add(figure) - } - - // deal with leading zeros - var j = 0 - while ((j < string.length) && (string[j] === ALPHABET[0])) { - j++ - } - - var buffer = num.toBuffer() - var leadingZeros = new Buffer(j) - leadingZeros.fill(0) - - return Buffer.concat([leadingZeros, buffer]) -} - -module.exports = { - encode: encode, - decode: decode -} diff --git a/src/base58check.js b/src/base58check.js index d171225..867827c 100644 --- a/src/base58check.js +++ b/src/base58check.js @@ -1,6 +1,6 @@ // https://en.bitcoin.it/wiki/Base58Check_encoding var assert = require('assert') -var base58 = require('./base58') +var base58 = require('bs58') var crypto = require('./crypto') // Encode a buffer as a base58-check-encoded string diff --git a/src/index.js b/src/index.js index def766c..2dd3df7 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,5 @@ module.exports = { Address: require('./address'), - base58: require('./base58'), base58check: require('./base58check'), bufferutils: require('./bufferutils'), convert: require('./convert'), diff --git a/test/base58.js b/test/base58.js deleted file mode 100644 index f5f2754..0000000 --- a/test/base58.js +++ /dev/null @@ -1,36 +0,0 @@ -var assert = require('assert') -var base58 = require('../src/base58') - -var fixtures = require('./fixtures/base58.json') - -describe('base58', function() { - describe('decode', function() { - it('can decode Bitcoin core test data', function() { - fixtures.valid.forEach(function(f) { - var actual = base58.decode(f.string) - var expected = f.hex - - assert.strictEqual(actual.toString('hex'), expected) - }) - }) - - fixtures.invalid.forEach(function(f) { - it('throws on ' + f.description, function() { - assert.throws(function() { - base58.decode(f.string) - }, /Non-base58 character/) - }) - }) - }) - - describe('encode', function() { - it('can encode Bitcoin core test data', function() { - fixtures.valid.forEach(function(f) { - var actual = base58.encode(new Buffer(f.hex, 'hex')) - var expected = f.string.trim() - - assert.strictEqual(actual, expected) - }) - }) - }) -}) diff --git a/test/bitcoin.core.js b/test/bitcoin.core.js index 94e1ff3..2095b9f 100644 --- a/test/bitcoin.core.js +++ b/test/bitcoin.core.js @@ -1,5 +1,5 @@ var assert = require('assert') -var base58 = require('../src/base58') +var base58 = require('bs58') var base58check = require('../src/base58check') var networks = require('../src/networks')