From 3ec27e1971a43830b19fb47b610432b21c564053 Mon Sep 17 00:00:00 2001 From: Divide-By-0 Date: Thu, 8 Jun 2023 13:53:29 -0400 Subject: [PATCH 1/3] yarn lock name change --- yarn.lock | 138 +++++++++++++++++++++++++++--------------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/yarn.lock b/yarn.lock index fc03ff0..1e1915e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8431,75 +8431,6 @@ __metadata: languageName: node linkType: hard -"double-blind@workspace:.": - version: 0.0.0-use.local - resolution: "double-blind@workspace:." - dependencies: - "@openzeppelin/contracts": ^4.9.0 - "@rainbow-me/rainbowkit": ^0.8.0 - "@testing-library/jest-dom": ^5.16.3 - "@testing-library/react": ^12.1.4 - "@testing-library/user-event": ^13.5.0 - "@types/atob": ^2.1.2 - "@types/jest": ^29.5.1 - "@types/lodash": ^4.14.181 - "@types/mocha": ^10.0.1 - "@types/node": ^18.0.6 - "@types/pako": ^2.0.0 - "@types/styled-components": ^5.1.24 - "@types/tar-stream": ^2.2.2 - "@types/yargs": ^17.0.24 - addressparser: ^1.0.1 - atob: ^2.1.2 - base64-sol: ^1.1.0 - browserstack-local: ^1.5.1 - browserstack-node-sdk: ^1.6.1 - buffer: ^6.0.3 - chai: ^4.3.7 - circom_tester: ^0.0.19 - circomlib: ^2.0.3 - circomlibjs: ^0.1.2 - cryo: ^0.0.6 - ethereumjs-abi: ^0.6.8 - ethers: ^5.7.1 - forge-std: ^1.1.2 - husky: ^8.0.3 - jest-junit: ^15.0.0 - libmime: ^5.1.0 - localforage: ^1.10.0 - lodash: ^4.17.21 - mocha: ^10.2.0 - msw: ^1.0.1 - next: ^12.3.1 - nodemon: ^2.0.19 - pako: ^2.1.0 - prettier: ^2.7.1 - prettier-plugin-solidity: ^1.0.0-beta.24 - puppeteer: 18.1 - react: ^17.0.2 - react-dom: ^17.0.2 - react-dropzone: ^12.0.4 - react-error-overlay: 6.0.9 - react-json-view: ^1.21.3 - react-router: ^6.2.2 - react-router-dom: ^6.2.2 - react-scripts: ^4 - react-use: ^17.3.2 - readline: ^1.3.0 - selenium-webdriver: ^4.8.1 - serve: ^14.0.1 - snarkjs: latest - sshpk: ^1.17.0 - styled-components: ^5.3.5 - ts-node: ^10.9.1 - ts-node-dev: ^2.0.0 - typescript: ^4.8.3 - wagmi: ^0.6.8 - web-vitals: ^2.1.4 - yargs: ^17.7.1 - languageName: unknown - linkType: soft - "duplexer@npm:^0.1.1, duplexer@npm:~0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -21928,6 +21859,75 @@ __metadata: languageName: node linkType: hard +"zk-email@workspace:.": + version: 0.0.0-use.local + resolution: "zk-email@workspace:." + dependencies: + "@openzeppelin/contracts": ^4.9.0 + "@rainbow-me/rainbowkit": ^0.8.0 + "@testing-library/jest-dom": ^5.16.3 + "@testing-library/react": ^12.1.4 + "@testing-library/user-event": ^13.5.0 + "@types/atob": ^2.1.2 + "@types/jest": ^29.5.1 + "@types/lodash": ^4.14.181 + "@types/mocha": ^10.0.1 + "@types/node": ^18.0.6 + "@types/pako": ^2.0.0 + "@types/styled-components": ^5.1.24 + "@types/tar-stream": ^2.2.2 + "@types/yargs": ^17.0.24 + addressparser: ^1.0.1 + atob: ^2.1.2 + base64-sol: ^1.1.0 + browserstack-local: ^1.5.1 + browserstack-node-sdk: ^1.6.1 + buffer: ^6.0.3 + chai: ^4.3.7 + circom_tester: ^0.0.19 + circomlib: ^2.0.3 + circomlibjs: ^0.1.2 + cryo: ^0.0.6 + ethereumjs-abi: ^0.6.8 + ethers: ^5.7.1 + forge-std: ^1.1.2 + husky: ^8.0.3 + jest-junit: ^15.0.0 + libmime: ^5.1.0 + localforage: ^1.10.0 + lodash: ^4.17.21 + mocha: ^10.2.0 + msw: ^1.0.1 + next: ^12.3.1 + nodemon: ^2.0.19 + pako: ^2.1.0 + prettier: ^2.7.1 + prettier-plugin-solidity: ^1.0.0-beta.24 + puppeteer: 18.1 + react: ^17.0.2 + react-dom: ^17.0.2 + react-dropzone: ^12.0.4 + react-error-overlay: 6.0.9 + react-json-view: ^1.21.3 + react-router: ^6.2.2 + react-router-dom: ^6.2.2 + react-scripts: ^4 + react-use: ^17.3.2 + readline: ^1.3.0 + selenium-webdriver: ^4.8.1 + serve: ^14.0.1 + snarkjs: latest + sshpk: ^1.17.0 + styled-components: ^5.3.5 + ts-node: ^10.9.1 + ts-node-dev: ^2.0.0 + typescript: ^4.8.3 + wagmi: ^0.6.8 + web-vitals: ^2.1.4 + yargs: ^17.7.1 + languageName: unknown + linkType: soft + "zustand@npm:^4.0.0": version: 4.1.4 resolution: "zustand@npm:4.1.4" From f69de53e64ca8c0d7ed94c2e26b5ab9729b46a88 Mon Sep 17 00:00:00 2001 From: Divide-By-0 Date: Thu, 8 Jun 2023 14:28:21 -0400 Subject: [PATCH 2/3] compile twitter email for frontend --- src/pages/MainPage.tsx | 5 +++-- src/scripts/generate_input.ts | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx index 9af1e14..aa57b6c 100644 --- a/src/pages/MainPage.tsx +++ b/src/pages/MainPage.tsx @@ -24,6 +24,7 @@ import { useAccount, useContractWrite, usePrepareContractWrite } from "wagmi"; import { ProgressBar } from "../components/ProgressBar"; import { abi } from "../helpers/twitterEmailHandler.abi"; import { isSetIterator } from "util/types"; +import { CircuitType } from "../scripts/generate_input"; var Buffer = require("buffer/").Buffer; // note: the trailing slash is important! const generate_input = require("../scripts/generate_input"); @@ -43,7 +44,7 @@ export const MainPage: React.FC<{}> = (props) => { // computed state const { value, error } = useAsync(async () => { try { - const circuitInputs = await generate_inputs(Buffer.from(atob(emailFull)), ethereumAddress); + const circuitInputs = await generate_inputs(Buffer.from(atob(emailFull)), ethereumAddress, CircuitType.EMAIL_TWITTER); return circuitInputs; } catch (e) { return {}; @@ -266,7 +267,7 @@ export const MainPage: React.FC<{}> = (props) => { console.log("ethereumAddress", ethereumAddress); let input = ""; try { - input = await generate_input.generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress); + input = await generate_input.generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress, CircuitType.EMAIL_TWITTER); } catch (e) { console.log("Error generating input", e); setDisplayMessage("Prove"); diff --git a/src/scripts/generate_input.ts b/src/scripts/generate_input.ts index 8a9ad23..04e1d03 100644 --- a/src/scripts/generate_input.ts +++ b/src/scripts/generate_input.ts @@ -69,7 +69,7 @@ export interface ICircuitInputs { relayer?: string; } -enum CircuitType { +export enum CircuitType { RSA = "rsa", SHA = "sha", TEST = "test", @@ -267,7 +267,12 @@ export async function getCircuitInputs( } // Nonce is useful to disambiguate files for input/output when calling from the command line, it is usually null or hash(email) -export async function generate_inputs(raw_email: Buffer | string, eth_address: string, nonce_raw: number | null | string = null): Promise { +export async function generate_inputs( + raw_email: Buffer | string, + eth_address: string, + type: CircuitType = CircuitType.EMAIL_SUBJECT, + nonce_raw: number | null | string = null +): Promise { const nonce = typeof nonce_raw == "string" ? nonce_raw.trim() : nonce_raw; var result, email: Buffer; @@ -336,7 +341,7 @@ async function test_generate(writeToFile: boolean = true) { const { email_file, nonce } = await getArgs(); const email = fs.readFileSync(email_file.trim()); console.log(email); - const gen_inputs = await generate_inputs(email, "0x0000000000000000000000000000000000000000", nonce); + const gen_inputs = await generate_inputs(email, "0x0000000000000000000000000000000000000000", CircuitType.EMAIL_TWITTER, nonce); console.log(JSON.stringify(gen_inputs)); if (writeToFile) { const file_dir = email_file.substring(0, email_file.lastIndexOf("/") + 1); From 946bd4725e6c2a108602d040a3fd261736ec68ab Mon Sep 17 00:00:00 2001 From: Divide-By-0 Date: Thu, 8 Jun 2023 14:49:11 -0400 Subject: [PATCH 3/3] e2e passes --- package.json | 2 +- src/pages/MainPage.tsx | 9 ++--- src/scripts/generate_input.ts | 3 +- yarn.lock | 68 ++++++++++++----------------------- 4 files changed, 28 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 5d49889..845b47e 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "react-use": "^17.3.2", "readline": "^1.3.0", "serve": "^14.0.1", - "snarkjs": "latest", + "snarkjs": "https://github.com/sampritipanda/snarkjs.git#fef81fc51d17a734637555c6edbd585ecda02d9e", "sshpk": "^1.17.0", "styled-components": "^5.3.5", "ts-node": "^10.9.1", diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx index aa57b6c..f55b0fc 100644 --- a/src/pages/MainPage.tsx +++ b/src/pages/MainPage.tsx @@ -5,7 +5,7 @@ import { useAsync, useMount, useUpdateEffect } from "react-use"; // @ts-ignore import _, { add } from "lodash"; // @ts-ignore -import { generate_inputs, insert13Before10 } from "../scripts/generate_input"; +import { generate_inputs, insert13Before10, CircuitType } from "../scripts/generate_input"; import styled, { CSSProperties } from "styled-components"; import { sshSignatureToPubKey } from "../helpers/sshFormat"; import { Link, useSearchParams } from "react-router-dom"; @@ -24,11 +24,8 @@ import { useAccount, useContractWrite, usePrepareContractWrite } from "wagmi"; import { ProgressBar } from "../components/ProgressBar"; import { abi } from "../helpers/twitterEmailHandler.abi"; import { isSetIterator } from "util/types"; -import { CircuitType } from "../scripts/generate_input"; var Buffer = require("buffer/").Buffer; // note: the trailing slash is important! -const generate_input = require("../scripts/generate_input"); - export const MainPage: React.FC<{}> = (props) => { // raw user inputs const filename = "email"; @@ -265,9 +262,9 @@ export const MainPage: React.FC<{}> = (props) => { console.log("buffFormArray", Buffer.from(formattedArray.buffer)); console.log("buffFormArray", formattedArray.toString()); console.log("ethereumAddress", ethereumAddress); - let input = ""; + let input; try { - input = await generate_input.generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress, CircuitType.EMAIL_TWITTER); + input = await generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress, CircuitType.EMAIL_TWITTER); } catch (e) { console.log("Error generating input", e); setDisplayMessage("Prove"); diff --git a/src/scripts/generate_input.ts b/src/scripts/generate_input.ts index 04e1d03..e13f77e 100644 --- a/src/scripts/generate_input.ts +++ b/src/scripts/generate_input.ts @@ -310,12 +310,11 @@ export async function generate_inputs( let message = result.results[0].status.signature_header; let body = result.results[0].body; let body_hash = result.results[0].bodyHash; - let circuitType = CircuitType.EMAIL_SUBJECT; let pubkey = result.results[0].publicKey; const pubKeyData = pki.publicKeyFromPem(pubkey.toString()); let modulus = BigInt(pubKeyData.n.toString()); - let fin_result = await getCircuitInputs(sig, modulus, message, body, body_hash, eth_address, circuitType); + let fin_result = await getCircuitInputs(sig, modulus, message, body, body_hash, eth_address, type); return fin_result.circuitInputs; } diff --git a/yarn.lock b/yarn.lock index 1e1915e..2646870 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6760,17 +6760,6 @@ __metadata: languageName: node linkType: hard -"circom_runtime@npm:0.1.22": - version: 0.1.22 - resolution: "circom_runtime@npm:0.1.22" - dependencies: - ffjavascript: 0.2.57 - bin: - calcwit: calcwit.js - checksum: bf7b2e9f74cd7704ebc45ce686d4df49e58ed09114070a98beaab90e5ff7784d1943468ea3315bd4db638e6a76cda24e8b610aa2cd50be56adb4391e20469366 - languageName: node - linkType: hard - "circom_tester@npm:^0.0.19": version: 0.0.19 resolution: "circom_tester@npm:0.0.19" @@ -9925,7 +9914,7 @@ __metadata: languageName: node linkType: hard -"ffjavascript@npm:0.2.57, ffjavascript@npm:^0.2.45": +"ffjavascript@npm:^0.2.45": version: 0.2.57 resolution: "ffjavascript@npm:0.2.57" dependencies: @@ -16852,18 +16841,6 @@ __metadata: languageName: node linkType: hard -"r1csfile@npm:0.0.45": - version: 0.0.45 - resolution: "r1csfile@npm:0.0.45" - dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.11 - fastfile: 0.0.20 - ffjavascript: 0.2.57 - checksum: ae2d7ab3f2c37640aea2b4f45753d1f2258f5d904a51d7aaff67c32a931c3e90d22d257e8f10752044fa36b3ac31516f60e503f858913a625015b9b05575ba47 - languageName: node - linkType: hard - "raf@npm:^3.4.1": version: 3.4.1 resolution: "raf@npm:3.4.1" @@ -18609,6 +18586,27 @@ __metadata: languageName: node linkType: hard +"snarkjs@https://github.com/sampritipanda/snarkjs.git#fef81fc51d17a734637555c6edbd585ecda02d9e": + version: 0.5.0 + resolution: "snarkjs@https://github.com/sampritipanda/snarkjs.git#commit=fef81fc51d17a734637555c6edbd585ecda02d9e" + dependencies: + "@iden3/binfileutils": 0.0.11 + bfj: ^7.0.2 + blake2b-wasm: ^2.4.0 + circom_runtime: 0.1.21 + ejs: ^3.1.6 + fastfile: 0.0.20 + ffjavascript: 0.2.56 + js-sha3: ^0.8.0 + localforage: ^1.10.0 + logplease: ^1.2.15 + r1csfile: 0.0.41 + bin: + snarkjs: build/cli.cjs + checksum: f2050f0135d50d459ea0edddf3e394e833a2d28c6648e5889b2f896814865e5c60606e978a8a106bd5bfe7e27501c315f249db5b71895d5e7e6e9a87bfcd55ab + languageName: node + linkType: hard + "snarkjs@npm:0.5.0": version: 0.5.0 resolution: "snarkjs@npm:0.5.0" @@ -18629,26 +18627,6 @@ __metadata: languageName: node linkType: hard -"snarkjs@npm:latest": - version: 0.6.11 - resolution: "snarkjs@npm:0.6.11" - dependencies: - "@iden3/binfileutils": 0.0.11 - bfj: ^7.0.2 - blake2b-wasm: ^2.4.0 - circom_runtime: 0.1.22 - ejs: ^3.1.6 - fastfile: 0.0.20 - ffjavascript: 0.2.57 - js-sha3: ^0.8.0 - logplease: ^1.2.15 - r1csfile: 0.0.45 - bin: - snarkjs: build/cli.cjs - checksum: 692508b6f8048b6879975844cae4b9a6713713e20fec488ebd21a4b224b7e0318f6aba59ce06d332728d184148c943fa04e3a49e0af173d325011f506e42363e - languageName: node - linkType: hard - "sockjs-client@npm:^1.5.0": version: 1.6.1 resolution: "sockjs-client@npm:1.6.1" @@ -21916,7 +21894,7 @@ __metadata: readline: ^1.3.0 selenium-webdriver: ^4.8.1 serve: ^14.0.1 - snarkjs: latest + snarkjs: "https://github.com/sampritipanda/snarkjs.git#fef81fc51d17a734637555c6edbd585ecda02d9e" sshpk: ^1.17.0 styled-components: ^5.3.5 ts-node: ^10.9.1