@ledgerhq/coin-aptos
Version:
Ledger Aptos Coin integration
40 lines • 2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.signTransaction = void 0;
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
const sha3_1 = require("@noble/hashes/sha3");
const combine_1 = require("../logic/combine");
__exportStar(require("./client"), exports);
async function signTransaction(signerContext, account, deviceId, rawTxn) {
const { freshAddressPath: derivationPath } = account;
if (!account.xpub) {
throw Error("Account must have a public signing key");
}
const publicKey = Buffer.from(ts_sdk_1.AccountAddress.from(account.xpub).toUint8Array());
const hash = sha3_1.sha3_256.create();
hash.update(publicKey.toString("hex"));
hash.update("\x00");
const signingMessage = (0, ts_sdk_1.generateSigningMessageForTransaction)({
rawTransaction: rawTxn,
});
const response = await signerContext(deviceId, async (signer) => await signer.signTransaction(derivationPath, Buffer.from(signingMessage)));
const signature = new ts_sdk_1.Ed25519Signature(response.signature.toString("hex"));
const pubkey = new ts_sdk_1.Ed25519PublicKey(publicKey.toString("hex"));
return (0, combine_1.combineSignedTransaction)(rawTxn, signature, pubkey);
}
exports.signTransaction = signTransaction;
//# sourceMappingURL=index.js.map