UNPKG

@tatumio/tatum-v1

Version:

Tatum API client allows browsers and Node.js clients to interact with Tatum API.

86 lines 6.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateAddress = exports.generatePubKey = exports.hexStr2byteArray = void 0; /* tslint:disable:no-bitwise */ const elliptic_1 = require("elliptic"); const js_sha3_1 = require("js-sha3"); const hexChar2byte = (c) => { let d = 0; if (c >= 'A' && c <= 'F') d = c.charCodeAt(0) - 'A'.charCodeAt(0) + 10; else if (c >= 'a' && c <= 'f') d = c.charCodeAt(0) - 'a'.charCodeAt(0) + 10; else if (c >= '0' && c <= '9') d = c.charCodeAt(0) - '0'.charCodeAt(0); return d; }; const isHexChar = (c) => { if ((c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f') || (c >= '0' && c <= '9')) { return 1; } return 0; }; const hexStr2byteArray = (str) => { const byteArray = []; let d = 0; let j = 0; let k = 0; for (let i = 0; i < str.length; i++) { const c = str.charAt(i); if (isHexChar(c)) { d <<= 4; d += hexChar2byte(c); j++; if (0 === (j % 2)) { byteArray[k++] = d; d = 0; } } } return byteArray; }; exports.hexStr2byteArray = hexStr2byteArray; // @ts-ignore const byte2hexStr = byte => { const hexByteMap = '0123456789ABCDEF'; let str = ''; str += hexByteMap.charAt(byte >> 4); str += hexByteMap.charAt(byte & 0x0f); return str; }; const byteArray2hexStr = (byteArray) => { let str = ''; for (let i = 0; i < (byteArray.length); i++) str += byte2hexStr(byteArray[i]); return str; }; const computeAddress = (pubBytes) => { if (pubBytes.length === 65) pubBytes = pubBytes.slice(1); const hash = js_sha3_1.keccak_256(pubBytes).toString(); const addressHex = '41' + hash.substring(24); return exports.hexStr2byteArray(addressHex); }; const generatePubKey = (bytes) => { const ec = new elliptic_1.ec('secp256k1'); const key = ec.keyFromPublic(bytes, 'bytes'); const pubkey = key.getPublic(); const x = pubkey.getX(); const y = pubkey.getY(); let xHex = x.toString('hex'); while (xHex.length < 64) { xHex = '0' + xHex; } let yHex = y.toString('hex'); while (yHex.length < 64) { yHex = '0' + yHex; } return '04' + xHex + yHex; }; exports.generatePubKey = generatePubKey; // @ts-ignore const generateAddress = (publicKey) => byteArray2hexStr(computeAddress(exports.hexStr2byteArray(exports.generatePubKey(publicKey)))); exports.generateAddress = generateAddress; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJvbi5jcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2FsbGV0L3Ryb24uY3J5cHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQix1Q0FBaUM7QUFDakMscUNBQWtDO0FBRWxDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRVQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHO1FBQ3BCLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO1NBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRztRQUN6QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtTQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUc7UUFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUzQyxPQUFPLENBQUMsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDNUIsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUN0QixDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUN0QixDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3hCLE9B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