Navigation Menu

Skip to content

Commit

Permalink
Merge pull request #16 from cryptocoinjs/basex
Browse files Browse the repository at this point in the history
use base-x
  • Loading branch information
jprichardson committed Aug 18, 2015
2 parents 3c03031 + c62fd65 commit ddcde59
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 86 deletions.
90 changes: 4 additions & 86 deletions index.js
@@ -1,90 +1,8 @@
// 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 basex = require('base-x')
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
var ALPHABET_MAP = {}
for (var i = 0; i < ALPHABET.length; ++i) {
ALPHABET_MAP[ALPHABET.charAt(i)] = i
}
var BASE = ALPHABET.length

function encode (buffer) {
if (buffer.length === 0) return ''

var i, j
var digits = [0]

for (i = 0; i < buffer.length; ++i) {
for (j = 0; j < digits.length; ++j) digits[j] <<= 8

digits[0] += buffer[i]

var carry = 0
for (j = 0; j < digits.length; ++j) {
digits[j] += carry

carry = (digits[j] / BASE) | 0
digits[j] %= BASE
}

while (carry) {
digits.push(carry % BASE)

carry = (carry / BASE) | 0
}
}

// deal with leading zeros
for (i = 0; buffer[i] === 0 && i < buffer.length - 1; ++i) digits.push(0)

// convert digits to a string
var str = ''
for (i = digits.length - 1; i >= 0; --i) {
str += ALPHABET[digits[i]]
}

return str
}

function decode (string) {
if (string.length === 0) return []

var i, j
var bytes = [0]

for (i = 0; i < string.length; ++i) {
var c = string[i]
if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')

for (j = 0; j < bytes.length; ++j) bytes[j] *= BASE
bytes[0] += ALPHABET_MAP[c]

var carry = 0
for (j = 0; j < bytes.length; ++j) {
bytes[j] += carry

carry = bytes[j] >> 8
bytes[j] &= 0xff
}

while (carry) {
bytes.push(carry & 0xff)

carry >>= 8
}
}

// deal with leading zeros
for (i = 0; string[i] === '1' && i < string.length - 1; ++i) bytes.push(0)

return bytes.reverse()
}
var base58 = basex(ALPHABET)

module.exports = {
encode: encode,
decode: decode
encode: base58.encode,
decode: base58.decode
}
3 changes: 3 additions & 0 deletions package.json
Expand Up @@ -33,5 +33,8 @@
"standard": "standard",
"test": "npm run standard && npm run unit",
"unit": "mocha"
},
"dependencies": {
"base-x": "^1.0.1"
}
}

0 comments on commit ddcde59

Please sign in to comment.