@dioxide-js/web3.js
Version:
dioxide javascript API
24 lines • 1.06 kB
JavaScript
import base32Decode from 'base32-decode';
import base32Encode from 'base32-encode';
import crc32c from 'crc-32/crc32c.js';
import { concat } from './buffer.js';
export function isValidAddress(addr) {
try {
const [addressStr] = addr.split(':');
const address = new Uint8Array(base32Decode(addressStr, 'Crockford'));
const publicKey = address.slice(0, 32);
let errorCorrectingCode = crc32c.buf(publicKey, 3);
errorCorrectingCode = (errorCorrectingCode & 0xfffffff0) | 0x3;
errorCorrectingCode = errorCorrectingCode >>> 0;
const buffer = new Int32Array([errorCorrectingCode]).buffer;
const errorCorrectingCodeBuffer = new Uint8Array(buffer);
const mergedBuffer = concat(publicKey, errorCorrectingCodeBuffer);
const encodedMergeBuffer = base32Encode(mergedBuffer, 'Crockford');
return encodedMergeBuffer === addressStr.toUpperCase();
}
catch (error) {
console.error('Exception ' + error);
return false;
}
}
//# sourceMappingURL=validator.js.map