UNPKG

triam-base

Version:
53 lines (41 loc) 1.26 kB
// vendored from http://cryptocoinjs.com/modules/misc/bs58/ // 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 "use strict"; var ALPHABET = "gsphnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCr65jkm8oFqi1tuvAxyz"; var ALPHABET_MAP = {}; for (var i = 0; i < ALPHABET.length; ++i) { ALPHABET_MAP[ALPHABET.charAt(i)] = i; } var BASE = 58; function decode(string) { if (string.length === 0) { return []; }var i, j, 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] &= 255; } while (carry) { bytes.push(carry & 255); carry >>= 8; } } // deal with leading zeros for (i = 0; string[i] === "g" && i < string.length - 1; ++i) bytes.push(0); return bytes.reverse(); } module.exports = { decode: decode };