wallet-address-validator
Version:
Wallet address validator for Bitcoin and other Altcoins.
29 lines (22 loc) • 788 B
JavaScript
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
}
};