@fordefi-public/crypto-address-validator-ts
Version:
Crypto address validator for Bitcoin and other Altcoins, forked to be used with typescript
28 lines (23 loc) • 717 B
text/typescript
import {blake2b} from '../crypto/utils';
var isEqual = require('lodash.isequal');
function hexToBytes(hex: string) {
let bytes = []
for (var c = 0; c < hex.length; c += 2) {
bytes.push(parseInt(hex.substr(c, 2), 16))
}
return bytes
}
export function isValidAddress(address: string) {
if (address.length !== 76) {
// Check if it has the basic requirements of an address
return false
}
// Otherwise check each case
return verifyChecksum(address)
}
export function verifyChecksum(address: string) {
const checksumBytes = address.slice(0, 32*2)
const check = address.slice(32*2, 38*2)
const blakeHash = blake2b(checksumBytes, 32).slice(0, 6*2)
return !!isEqual(blakeHash, check)
}