multicoin-address-validator-ts
Version:
Multicoin address validator for Bitcoin and other Altcoins. TS version
26 lines (25 loc) • 1.06 kB
JavaScript
;
var cryptoUtils = require('./crypto/utils');
var ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
var ALGORAND_ADDRESS_LENGTH = 58;
module.exports = {
isValidAddress: function (address, currency, opts) {
if (opts === void 0) { opts = {}; }
var _a = opts.networkType, networkType = _a === void 0 ? 'prod' : _a;
return this.verifyChecksum(address);
},
verifyChecksum: function (address) {
if (address.length !== ALGORAND_ADDRESS_LENGTH) {
return false;
}
else {
// Decode base32 Address
var decoded = cryptoUtils.base32.b32decode(address);
var addr = decoded.slice(0, decoded.length - ALGORAND_CHECKSUM_BYTE_LENGTH);
var checksum = cryptoUtils.byteArray2hexStr(decoded.slice(-4)).toString('HEX');
// Hash Address - Checksum
var code = cryptoUtils.sha512_256(cryptoUtils.byteArray2hexStr(addr)).substr(-ALGORAND_CHECKSUM_BYTE_LENGTH * 2);
return code === checksum;
}
}
};