UNPKG

wallet-address-validator

Version:

Wallet address validator for Bitcoin and other Altcoins.

29 lines (22 loc) 788 B
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 } };