clean up base58.

This commit is contained in:
Christopher Jeffrey 2016-04-01 05:38:29 -07:00
parent 42e12f312f
commit e17e36d1a0

View File

@ -173,18 +173,23 @@ utils.toBase58 = function toBase58(arr) {
utils.toBase582 = function toBase582(buf) { utils.toBase582 = function toBase582(buf) {
var zeroes = 0; var zeroes = 0;
var length = 0; var length = 0;
for (var i = 0; i < buf.length; i++) { var str = '';
var i, size, b58, carry, j, k;
for (i = 0; i < buf.length; i++) {
if (buf[i] !== 0) if (buf[i] !== 0)
break; break;
zeroes++; zeroes++;
} }
var size = ((buf.length * 138 / 100) | 0) + 1;
var b58 = new Buffer(size); size = ((buf.length * 138 / 100) | 0) + 1;
b58 = new Buffer(size);
b58.fill(0); b58.fill(0);
for (; i < buf.length; i++) { for (; i < buf.length; i++) {
var carry = buf[i]; carry = buf[i];
var j = 0; j = 0;
for (var k = b58.length - 1; k >= 0; k--, j++) { for (k = b58.length - 1; k >= 0; k--, j++) {
if (carry === 0 && j >= length) if (carry === 0 && j >= length)
break; break;
carry += 256 * b58[k]; carry += 256 * b58[k];
@ -194,50 +199,62 @@ utils.toBase582 = function toBase582(buf) {
assert(carry === 0); assert(carry === 0);
length = j; length = j;
} }
var i = size - length;
i = size - length;
while (b58[i] === 0) while (b58[i] === 0)
i++; i++;
var str = '';
for (j = 0; j < zeroes; j++) for (j = 0; j < zeroes; j++)
str += '1'; str += '1';
for (; i < b58.length; i++) for (; i < b58.length; i++)
str += base58[b58[i]]; str += base58[b58[i]];
return str; return str;
}; };
utils.fromBase582 = function fromBase58(str) { utils.fromBase582 = function fromBase58(str) {
var zeroes = 0; var zeroes = 0;
var i = 0; var i = 0;
while (str[i] === '1') { var b256, ch, carry, j, out;
for (i = 0; i < str.length; i++) {
if (str[i] !== '1')
break;
zeroes++; zeroes++;
i++;
} }
var b256 = new Buffer(((str.length * 733) / 1000 | 0) + 1);
b256 = new Buffer(((str.length * 733) / 1000 | 0) + 1);
b256.fill(0); b256.fill(0);
while (str[i]) {
var ch = unbase58[str[i]]; for (; i < str.length; i++) {
ch = unbase58[str[i]];
if (ch == null) if (ch == null)
return; return new Buffer([]);
var carry = ch;
for (var j = b256.length - 1; j >= 0; j--) { carry = ch;
for (j = b256.length - 1; j >= 0; j--) {
carry += 58 * b256[j]; carry += 58 * b256[j];
b256[j] = carry % 256; b256[j] = carry % 256;
carry = carry / 256 | 0; carry = carry / 256 | 0;
} }
assert(carry === 0); assert(carry === 0);
i++;
} }
if (str[i] != null)
return;
i = 0; i = 0;
while (b256[i] === 0) while (b256[i] === 0)
i++; i++;
var vch = new Buffer(zeroes + (b256.length - i));
out = new Buffer(zeroes + (b256.length - i));
for (j = 0; j < zeroes; j++) for (j = 0; j < zeroes; j++)
vch[j] = 0; out[j] = 0;
for (; i < b256.length; i++) for (; i < b256.length; i++)
vch[i] = b256[i]; out[i] = b256[i];
return vch;
return out;
}; };
utils.fromBase58 = function fromBase58(str) { utils.fromBase58 = function fromBase58(str) {