From 370ff822d0cb5244ab03d0ed9c126f49d8e62e15 Mon Sep 17 00:00:00 2001 From: Samuel Andert Date: Mon, 28 Aug 2023 12:18:57 +0200 Subject: [PATCH] Refactoring and cleanup of Signer --- src/lib/GoogleAuth.svelte | 102 ++------------------------------- src/lib/IProvider.ts | 6 ++ src/lib/Signer.svelte | 60 +++++++++++-------- src/routes/+page.svelte | 4 ++ src/routes/api/auth/+server.ts | 1 - 5 files changed, 51 insertions(+), 122 deletions(-) create mode 100644 src/lib/IProvider.ts diff --git a/src/lib/GoogleAuth.svelte b/src/lib/GoogleAuth.svelte index 5963462..8976add 100644 --- a/src/lib/GoogleAuth.svelte +++ b/src/lib/GoogleAuth.svelte @@ -8,23 +8,19 @@ import Icon from "@iconify/svelte"; import { createLitSession } from "./createLitSession"; import { connectProvider } from "./setupLit"; - import { ethers } from "ethers"; - import Signer from "./Signer.svelte"; const redirectUri = "http://localhost:3000/"; let sessionSigs = null; let litNodeClient, error, currentPKP, authMethod, provider; - let messageToSign = { user: "Sam", loggedIn: true }; let status = "Initializing..."; - let jsonObjectToVerify = null; let pkps: IRelayPKP[] = []; let view = "SIGN_IN"; let sessionSigsObject; onMount(async () => { - litNodeClient = new LitNodeClient({ litNetwork: "serrano" }); - await litNodeClient.connect(); + // litNodeClient = new LitNodeClient({ litNetwork: "serrano" }); + // await litNodeClient.connect(); const sessionSigsLocalStorage = localStorage.getItem("google-signature"); const currentPKPLocalStorage = localStorage.getItem("current-pkp"); if (sessionSigsLocalStorage && currentPKPLocalStorage) { @@ -33,7 +29,6 @@ } else { initialize(); } - if (sessionSigsLocalStorage) { sessionSigsObject = JSON.parse(sessionSigsLocalStorage); } @@ -118,66 +113,6 @@ view = "ERROR"; status = `Error: ${err.message}`; } - - async function signMessageWithPKP() { - try { - // Create a specific JSON object - const jsonString = JSON.stringify(messageToSign); - - // Convert the JSON string to an array of character codes - const toSign = ethers.getBytes(ethers.hashMessage(jsonString)); - - const litActionCode = ` - const go = async () => { - const sigShare = await LitActions.signEcdsa({ toSign, publicKey, sigName }); - }; - go(); - `; - - // Sign message - const results = await litNodeClient.executeJs({ - code: litActionCode, - sessionSigs: sessionSigs, - jsParams: { - toSign: toSign, - publicKey: currentPKP.publicKey, - sigName: "sig1", - }, - }); - - // Get signature - const result = results.signatures["sig1"]; - const signature = ethers.Signature.from({ - r: "0x" + result.r, - s: "0x" + result.s, - v: result.recid, - }); - - // Add the signature to the JSON object - messageToSign.signature = signature; - - jsonObjectToVerify = { ...messageToSign }; - - // Display the signed JSON - status = JSON.stringify(messageToSign, null, 2); - - // Verify the signature - const recoveredAddr = ethers.verifyMessage(jsonString, signature); - - // Check if the address associated with the signature is the same as the current PKP - const verified = - currentPKP.ethAddress.toLowerCase() === recoveredAddr.toLowerCase(); - - if (verified) { - status = "The signature is valid."; - } else { - status = "The signature is invalid."; - } - } catch (err) { - console.error(err); - setError(err); - } - }
@@ -197,21 +132,13 @@

Your PKP Address:

{currentPKP.ethAddress}

-

Ready to sign

- (status = e.detail)} - on:error={(e) => setError(e.detail)} - />
{/if}

Status

{status}

-
+
- - diff --git a/src/lib/IProvider.ts b/src/lib/IProvider.ts new file mode 100644 index 0000000..76f35ec --- /dev/null +++ b/src/lib/IProvider.ts @@ -0,0 +1,6 @@ +export interface IProvider { + mintPKPThroughRelayer(authMethod: any): Promise; + relay: { + pollRequestUntilTerminalState(txHash: string): Promise; + }; +} \ No newline at end of file diff --git a/src/lib/Signer.svelte b/src/lib/Signer.svelte index 8114909..0a4f22b 100644 --- a/src/lib/Signer.svelte +++ b/src/lib/Signer.svelte @@ -1,19 +1,29 @@ @@ -90,3 +92,15 @@ {#if messageToSign}
{JSON.stringify(messageToSign)}
{/if} + +{#if status} +
+

Status: {status}

+
+{/if} +{#if messageSignature} +
+

Signature

+
{JSON.stringify(messageSignature)}
+
+{/if} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index b80f101..49a5b78 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,5 +1,9 @@ + diff --git a/src/routes/api/auth/+server.ts b/src/routes/api/auth/+server.ts index 2bdde67..1977532 100644 --- a/src/routes/api/auth/+server.ts +++ b/src/routes/api/auth/+server.ts @@ -1,4 +1,3 @@ -// src/routes/api/auth/+server.ts import jwt from 'jsonwebtoken'; import { error } from '@sveltejs/kit';