UNPKG

crypto-wallet-address-validator

Version:

Cryptocurrency wallet address validator for Bitcoin, Litecoin and other Altcoins.

57 lines (48 loc) 1.8 kB
// 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 (function (isNode) { var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' var ALPHABET_MAP = {} for(var i = 0; i < ALPHABET.length; ++i) { ALPHABET_MAP[ALPHABET.charAt(i)] = i } var BASE = ALPHABET.length var base58 = { decode: function(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] &= 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() } }; // export base58 module if(isNode) { module.exports = base58; } else { if(typeof window.WAValidator === 'undefined'){ window.WAValidator = {__imports: {}}; } window.WAValidator.__imports.base58 = base58; } })(typeof module !== 'undefined' && typeof module.exports !== 'undefined');