@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
JavaScript
;
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