@lit-protocol/vincent-scaffold-sdk
Version:
Shared build configuration and utilities for Vincent abilities and policies
29 lines (28 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signTx = void 0;
/**
* Signs a transaction using the PKP's public key.
* @param {Object} params - The parameters object
* @param {string} params.pkpPublicKey - The PKP's public key
* @param {any} params.tx - The transaction to sign
* @param {string} params.sigName - The name of the signature
* @returns {Promise<string>} The signed transaction.
*/
const signTx = async ({ sigName, pkpPublicKey, tx, }) => {
console.log(`Signing TX: ${sigName}`);
const pkForLit = pkpPublicKey.startsWith("0x")
? pkpPublicKey.slice(2)
: pkpPublicKey;
const sig = await Lit.Actions.signAndCombineEcdsa({
toSign: ethers.utils.arrayify(ethers.utils.keccak256(ethers.utils.serializeTransaction(tx))),
publicKey: pkForLit,
sigName,
});
return ethers.utils.serializeTransaction(tx, ethers.utils.joinSignature({
r: "0x" + JSON.parse(sig).r.substring(2),
s: "0x" + JSON.parse(sig).s,
v: JSON.parse(sig).v,
}));
};
exports.signTx = signTx;