multicoin-address-validator-ts
Version:
Multicoin address validator for Bitcoin and other Altcoins. TS version
32 lines (31 loc) • 941 B
JavaScript
;
var base58 = require('./crypto/base58');
var cryptoUtils = require('./crypto/utils');
var prefix = new Uint8Array([6, 161, 159]);
function decodeRaw(buffer) {
var payload = buffer.slice(0, -4);
var checksum = buffer.slice(-4);
var newChecksum = cryptoUtils.hexStr2byteArray(cryptoUtils.sha256x2(cryptoUtils.byteArray2hexStr(payload)));
if (checksum[0] ^ newChecksum[0] |
checksum[1] ^ newChecksum[1] |
checksum[2] ^ newChecksum[2] |
checksum[3] ^ newChecksum[3])
return;
return payload;
}
var isValidAddress = function (address) {
try {
var buffer = base58.decode(address);
var payload = decodeRaw(buffer);
if (!payload)
return false;
payload.slice(prefix.length);
return true;
}
catch (e) {
return false;
}
};
module.exports = {
isValidAddress: isValidAddress
};