@ledgerhq/coin-aptos
Version:
Ledger Aptos Coin integration
34 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.combine = exports.combineSignedTransaction = void 0;
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
function combineSignedTransaction(txRaw, signature, pubkey) {
const authenticator = new ts_sdk_1.AccountAuthenticatorEd25519(pubkey, signature);
return (0, ts_sdk_1.generateSignedTransaction)({
transaction: { rawTransaction: txRaw },
senderAuthenticator: authenticator,
});
}
exports.combineSignedTransaction = combineSignedTransaction;
function combine(tx, signature, pubkey) {
if (!ts_sdk_1.Hex.isValid(tx).valid) {
throw new Error("tx must be a valid hex value");
}
if (!ts_sdk_1.Hex.isValid(signature).valid) {
throw new Error("signature must be a valid hex value");
}
if (pubkey === undefined) {
throw new Error("account must have a public key");
}
if (!ts_sdk_1.Hex.isValid(pubkey).valid) {
throw new Error("pubkey must be a valid hex value");
}
const ed25519Signature = new ts_sdk_1.Ed25519Signature(signature);
const ed25519PubKey = new ts_sdk_1.Ed25519PublicKey(pubkey);
const txBytes = ts_sdk_1.Hex.fromHexString(tx).toUint8Array();
const txRaw = ts_sdk_1.RawTransaction.deserialize(new ts_sdk_1.Deserializer(txBytes));
const signedTxBytes = combineSignedTransaction(txRaw, ed25519Signature, ed25519PubKey);
return ts_sdk_1.Hex.fromHexInput(signedTxBytes).toString();
}
exports.combine = combine;
//# sourceMappingURL=combine.js.map