UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

29 lines (26 loc) 1.12 kB
import base32Decode from '../_virtual/index.mjs'; import crc32c from '../_virtual/crc32c.mjs'; import { areUint8ArraysEqual, concat } from './buffer.mjs'; 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; } export { extractPublicKey }; //# sourceMappingURL=extractPublicKey.mjs.map