@ledgerhq/coin-aptos
Version:
Ledger Aptos Coin integration
29 lines • 1.34 kB
JavaScript
import { AccountAuthenticatorEd25519, Deserializer, Ed25519PublicKey, Ed25519Signature, Hex, RawTransaction, generateSignedTransaction, } from "@aptos-labs/ts-sdk";
export function combineSignedTransaction(txRaw, signature, pubkey) {
const authenticator = new AccountAuthenticatorEd25519(pubkey, signature);
return generateSignedTransaction({
transaction: { rawTransaction: txRaw },
senderAuthenticator: authenticator,
});
}
export function combine(tx, signature, pubkey) {
if (!Hex.isValid(tx).valid) {
throw new Error("tx must be a valid hex value");
}
if (!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 (!Hex.isValid(pubkey).valid) {
throw new Error("pubkey must be a valid hex value");
}
const ed25519Signature = new Ed25519Signature(signature);
const ed25519PubKey = new Ed25519PublicKey(pubkey);
const txBytes = Hex.fromHexString(tx).toUint8Array();
const txRaw = RawTransaction.deserialize(new Deserializer(txBytes));
const signedTxBytes = combineSignedTransaction(txRaw, ed25519Signature, ed25519PubKey);
return Hex.fromHexInput(signedTxBytes).toString();
}
//# sourceMappingURL=combine.js.map