@axiom-crypto/keystore-sdk
Version:
Keystore Rollup SDK
50 lines • 2.25 kB
JavaScript
import { concat, encodeAbiParameters, encodePacked } from "viem";
export const M_OF_N_ECDSA_SIG_PROVER_URL = "https://keystore-rpc-signatureprover.axiom.xyz";
export const M_OF_N_ECDSA_VKEY = "0x01010000001001000100010100000100000000000000000000000000000000009171ded76cb8d446b69cb901fe413fe380886240549feb11014fec000a7eb1280750a550988ceaef9a37f6794af0d9bf472445bc9dfacf89b9f4a6130c2b0eb42ef05dfd54c6d765973c1b3e0c15885e1307bedc893a3474103a065e7a032d04078f64fde979db4eea6692dbde7d161c3e6c3ae99f2e7cf9c58229f8d1a5bb97056fb20596873754a862cbe247b25315399d7be7a8bfe72942564c469d6a95e141a2f3c0bb526ad5ded741e9c10d6920cd28a10f108b0d1f2b22688b67a32c4055f6d42ed1d1c3eb767c513d8aa832c470b29a9dc7afb33fdcfeda198b820f724d13a24c6d1123d95b1124cf08c4aaf9531dd819011b9a13b6151d5ab83225fe4517";
/**
* Encodes the KeyData for the m-of-n ECDSA authentication rule
* @param fields - MOfNEcdsaKeyDataFields
* @returns The encoded KeyData as a hex string
*/
export const keyDataEncoder = (fields) => {
const encoded = encodeAbiParameters([
{ name: "codehash", type: "bytes32" },
{ name: "m", type: "uint256" },
{ name: "signersList", type: "address[]" },
], [fields.codehash, fields.m, fields.signersList]);
return encodePacked(["bytes1", "bytes"], ["0x00", encoded]);
};
/**
* Encodes the AuthData for the m-of-n ECDSA authentication rule
* @param fields - MOfNEcdsaAuthDataFields
* @returns The encoded AuthData as a hex string
*/
export const authDataEncoder = (fields) => {
return fields.signatures.length > 0 ? concat(fields.signatures) : "0x";
};
/**
* Encodes keyData and authData from inputs to make an AuthInputs struct
* @param inputs - MOfNEcdsaAuthInputs
* @returns The AuthInputs struct
*/
export const makeAuthInputs = (inputs) => {
const keyData = keyDataEncoder({
codehash: inputs.codehash,
m: BigInt(inputs.signatures.length),
signersList: inputs.signersList,
});
const authData = authDataEncoder({
signatures: inputs.signatures,
});
return {
keyData,
authData,
};
};
export const MOfNSignatureProver = {
vkey: M_OF_N_ECDSA_VKEY,
keyDataEncoder,
authDataEncoder,
makeAuthInputs,
};
//# sourceMappingURL=ecdsa.js.map