UNPKG

multicoin-address-validator-ts

Version:

Multicoin address validator for Bitcoin and other Altcoins. TS version

26 lines (25 loc) 1.06 kB
"use strict"; 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; } } };