MPC remote signer plugin allow signing happen on the server - server computation
Initialize
const localCorekitInstance = new Web3AuthMPCCoreKit({
web3AuthClientId,
web3AuthNetwork: network,
storage: memoryStorage,
manualSync: params.manualSync ?? false,
tssLib: dklsLib,
uxMode: "nodejs",
});
await localCorekitInstance.init();
const { idToken } = await mockLogin(params.email);
await localCorekitInstance.loginWithJWT({
verifier: params.verifier,
verifierId: params.email,
idToken,
});
const authenticatorFactorManager= new AuthenticatorFactorManager({
backendUrl: BACKEND_URL,
remoteSignerInstance: instance,
storage: memoryStorage,
});
await authenticatorFactorManager.init();
const remoteSignerPlugin = new MPCRemoteSignerPlugin(localCorekitInstance, authenticatorFactorManager);
await remoteSignerPlugin.init();
Register
const result = await authenticatorService.startRegisterFactor();
mfaSecret = result.secretKey;
// prompt secret in qr or key in sercret in authenticator
// retrieve totp code
await authenticatorService.verifyRegistration(code);
Login with remote factor
await authenticatorService.setupRemoteSignerUsingAuthenticatorCode(code);
Remote Sign
await localCorekitInstance.sign(Buffer.from("Hello, world!"))
Rehydrate
// ... after core kit login with JWT
await authenticatorService.init();