UNPKG

@tronlink/core

Version:

The library serves as a core module within TronLink Extension, which provides low-level wallet functionality for both Tron and Ethereum networks, primary features includes account generation and transaction signing

49 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LedgerEvmSigner = void 0; const ethers_1 = require("ethers"); const error_1 = require("../../base_wallet/error"); const LedgerSigner_1 = require("../../base_wallet/ledger/LedgerSigner"); const util_1 = require("../util"); const LedgerEthWebHid_1 = require("./LedgerEthWebHid"); const regStartWithZeroX = new RegExp(/^0x/i); class LedgerEvmSigner extends LedgerSigner_1.LedgerSigner { async ledgerSign(params) { try { const { data: transaction, path } = params; const ledgerWebHid = new LedgerEthWebHid_1.LedgerEthWebHid(); let signedResponse; if (typeof transaction === 'string') { signedResponse = await ledgerWebHid.signPersonalMessage((0, util_1.isHex)(transaction.replace(regStartWithZeroX, '')) ? (0, util_1.msgHexToText)(Buffer.from(transaction.replace(regStartWithZeroX, ''), 'utf8').toString('hex')) : Buffer.from(transaction, 'utf8').toString('hex'), path); } else { signedResponse = await ledgerWebHid.signTransaction(ethers_1.ethers.utils.serializeTransaction(transaction).replace(regStartWithZeroX, ''), path); } signedResponse.r = `0x${signedResponse.r}`; signedResponse.s = `0x${signedResponse.s}`; if (typeof transaction !== 'string') { signedResponse.v = parseInt(signedResponse.v, 16); } return signedResponse; } catch (error) { throw new error_1.SignError(error.message); } } async ledgerSignTypedData(params) { try { const { data, path } = params; const ledgerWebHid = new LedgerEthWebHid_1.LedgerEthWebHid(); const signedResponse = await ledgerWebHid.signTypedData(data, path); const { r, s, v } = signedResponse; return r.replace(regStartWithZeroX, '') + s.replace(regStartWithZeroX, '') + v.toString(16); } catch (error) { throw new error_1.SignError(error.message); } } } exports.LedgerEvmSigner = LedgerEvmSigner; //# sourceMappingURL=LedgerEvmSigner.js.map