UNPKG

trezor-address-validator

Version:

Multicoin address validator for Bitcoin and other altcoins.

37 lines (29 loc) 1.06 kB
const { addressType } = require('../src/crypto/utils'); var cryptoUtils = require('./crypto/utils'); var baseX = require('base-x'); var ALLOWED_CHARS = 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'; var codec = baseX(ALLOWED_CHARS); var regexp = new RegExp('^r[' + ALLOWED_CHARS + ']{27,35}$'); module.exports = { /** * ripple address validation */ isValidAddress: function (address) { if (regexp.test(address)) { return this.verifyChecksum(address); } return false; }, verifyChecksum: function (address) { var bytes = codec.decode(address); var computedChecksum = cryptoUtils.sha256Checksum(cryptoUtils.toHex(bytes.slice(0, -4))); var checksum = cryptoUtils.toHex(bytes.slice(-4)); return computedChecksum === checksum }, getAddressType: function (address, currency, networkType) { if (this.isValidAddress(address, currency, networkType)) { return addressType.ADDRESS; } return undefined; }, };