UNPKG

@dioxide-js/web3.js

Version:

dioxide javascript API

26 lines 1.12 kB
// import base32Encode from "base32-encode" import base32Decode from 'base32-decode'; import crc32c from 'crc-32/crc32c.js'; import { areUint8ArraysEqual, concat } from './buffer.js'; export function extractPublicKey(address) { const [splitAddr] = address.split(':'); const addressUintArr = new Uint8Array(base32Decode(splitAddr, 'Crockford')); const publicKey = addressUintArr.slice(0, 32); const checkAddrUintArr = PK2Addr(publicKey); if (areUint8ArraysEqual(addressUintArr, checkAddrUintArr)) { return publicKey; } return null; } function PK2Addr(publicKey) { const rollingCRC = 3; const encryptMethod = 0x3; let errorCorrectingCode = crc32c.buf(publicKey, rollingCRC); errorCorrectingCode = (errorCorrectingCode & 0xfffffff0) | encryptMethod; errorCorrectingCode = errorCorrectingCode >>> 0; const buffer = new Int32Array([errorCorrectingCode]).buffer; const errorCorrectingCodeBuffer = new Uint8Array(buffer); const mergedBuffer = concat(publicKey, errorCorrectingCodeBuffer); return mergedBuffer; } //# sourceMappingURL=extractPublicKey.js.map