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.
70 lines
1.5 KiB
70 lines
1.5 KiB
'use strict';
|
|
|
|
var _ = require('lodash');
|
|
var bs58 = require('bs58');
|
|
var buffer = require('buffer');
|
|
|
|
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'.split('');
|
|
|
|
var Base58 = function Base58(obj) {
|
|
/* jshint maxcomplexity: 8 */
|
|
if (!(this instanceof Base58)) {
|
|
return new Base58(obj);
|
|
}
|
|
if (Buffer.isBuffer(obj)) {
|
|
var buf = obj;
|
|
this.fromBuffer(buf);
|
|
} else if (typeof obj === 'string') {
|
|
var str = obj;
|
|
this.fromString(str);
|
|
} else if (obj) {
|
|
this.set(obj);
|
|
}
|
|
};
|
|
|
|
Base58.validCharacters = function validCharacters(chars) {
|
|
if (buffer.Buffer.isBuffer(chars)) {
|
|
chars = chars.toString();
|
|
}
|
|
return _.all(_.map(chars, function(char) { return _.contains(ALPHABET, char); }));
|
|
};
|
|
|
|
Base58.prototype.set = function(obj) {
|
|
this.buf = obj.buf || this.buf || undefined;
|
|
return this;
|
|
};
|
|
|
|
Base58.encode = function(buf) {
|
|
if (!buffer.Buffer.isBuffer(buf)) {
|
|
throw new Error('Input should be a buffer');
|
|
}
|
|
return bs58.encode(buf);
|
|
};
|
|
|
|
Base58.decode = function(str) {
|
|
if (typeof str !== 'string') {
|
|
throw new Error('Input should be a string');
|
|
}
|
|
return new Buffer(bs58.decode(str));
|
|
};
|
|
|
|
Base58.prototype.fromBuffer = function(buf) {
|
|
this.buf = buf;
|
|
return this;
|
|
};
|
|
|
|
Base58.prototype.fromString = function(str) {
|
|
var buf = Base58.decode(str);
|
|
this.buf = buf;
|
|
return this;
|
|
};
|
|
|
|
Base58.prototype.toBuffer = function() {
|
|
return this.buf;
|
|
};
|
|
|
|
Base58.prototype.toString = function() {
|
|
return Base58.encode(this.buf);
|
|
};
|
|
|
|
module.exports = Base58;
|
|
|