forked from Qortal/qortal-ui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.2 KiB
108 lines
2.2 KiB
// Generated by CoffeeScript 1.8.0 |
|
|
|
// == Changed for ES6 modules == // |
|
//(function() { |
|
//var ALPHABET, ALPHABET_MAP, Base58, i; |
|
|
|
//const Base58 = (typeof module !== "undefined" && module !== null ? module.exports : void 0) || (window.Base58 = {}); |
|
const Base58 = {}; |
|
|
|
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; |
|
|
|
const ALPHABET_MAP = {}; |
|
|
|
let i = 0; |
|
|
|
while (i < ALPHABET.length) { |
|
ALPHABET_MAP[ALPHABET.charAt(i)] = i; |
|
i++; |
|
} |
|
|
|
Base58.encode = function(buffer) { |
|
buffer = new Uint8Array(buffer); |
|
var carry, digits, j; |
|
if (buffer.length === 0) { |
|
return ""; |
|
} |
|
i = void 0; |
|
j = void 0; |
|
digits = [0]; |
|
i = 0; |
|
while (i < buffer.length) { |
|
j = 0; |
|
while (j < digits.length) { |
|
digits[j] <<= 8; |
|
j++; |
|
} |
|
digits[0] += buffer[i]; |
|
carry = 0; |
|
j = 0; |
|
while (j < digits.length) { |
|
digits[j] += carry; |
|
carry = (digits[j] / 58) | 0; |
|
digits[j] %= 58; |
|
++j; |
|
} |
|
while (carry) { |
|
digits.push(carry % 58); |
|
carry = (carry / 58) | 0; |
|
} |
|
i++; |
|
} |
|
i = 0; |
|
while (buffer[i] === 0 && i < buffer.length - 1) { |
|
digits.push(0); |
|
i++; |
|
} |
|
return digits.reverse().map(function(digit) { |
|
return ALPHABET[digit]; |
|
}).join(""); |
|
}; |
|
|
|
Base58.decode = function(string) { |
|
var bytes, c, carry, j; |
|
if (string.length === 0) { |
|
return new (typeof Uint8Array !== "undefined" && Uint8Array !== null ? Uint8Array : Buffer)(0); |
|
} |
|
i = void 0; |
|
j = void 0; |
|
bytes = [0]; |
|
i = 0; |
|
while (i < string.length) { |
|
c = string[i]; |
|
if (!(c in ALPHABET_MAP)) { |
|
throw "Base58.decode received unacceptable input. Character '" + c + "' is not in the Base58 alphabet."; |
|
} |
|
j = 0; |
|
while (j < bytes.length) { |
|
bytes[j] *= 58; |
|
j++; |
|
} |
|
bytes[0] += ALPHABET_MAP[c]; |
|
carry = 0; |
|
j = 0; |
|
while (j < bytes.length) { |
|
bytes[j] += carry; |
|
carry = bytes[j] >> 8; |
|
bytes[j] &= 0xff; |
|
++j; |
|
} |
|
while (carry) { |
|
bytes.push(carry & 0xff); |
|
carry >>= 8; |
|
} |
|
i++; |
|
} |
|
i = 0; |
|
while (string[i] === "1" && i < string.length - 1) { |
|
bytes.push(0); |
|
i++; |
|
} |
|
return new (typeof Uint8Array !== "undefined" && Uint8Array !== null ? Uint8Array : Buffer)(bytes.reverse()); |
|
}; |
|
|
|
|
|
// == Changed for ES6 modules == // |
|
//}).call(this); |
|
|
|
export default Base58; |