Merge branch 'main' into fe-refactor

This commit is contained in:
Saleel
2023-06-09 01:00:55 +05:30
5 changed files with 677 additions and 707 deletions

View File

@@ -44,7 +44,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",

View File

@@ -1,8 +1,11 @@
import React, { useEffect, useState } from "react";
import { useAsync, useMount, useUpdateEffect } from "react-use";
import _ from "lodash";
import { ICircuitInputs, generate_inputs, insert13Before10 } from "../scripts/generate_input";
import styled from "styled-components";
import _, { add } from "lodash";
import { ICircuitInputs, generate_inputs, insert13Before10, CircuitType } from "../scripts/generate_input";
import { sshSignatureToPubKey } from "../helpers/sshFormat";
import { Link, useSearchParams } from "react-router-dom";
import { dkimVerify } from "../helpers/dkim";
import atob from "atob";
import { downloadProofFiles, generateProof, verifyProof } from "../helpers/zkp";
import { packedNBytesToString } from "../helpers/binaryFormat";
@@ -16,6 +19,7 @@ import { TopBanner } from "../components/TopBanner";
import { useAccount, useContractWrite, usePrepareContractWrite } from "wagmi";
import { ProgressBar } from "../components/ProgressBar";
import { abi } from "../helpers/twitterEmailHandler.abi";
import { isSetIterator } from "util/types";
export const MainPage: React.FC<{}> = (props) => {
// raw user inputs
@@ -32,7 +36,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 {};
@@ -255,7 +259,7 @@ export const MainPage: React.FC<{}> = (props) => {
console.log("ethereumAddress", ethereumAddress);
let input : ICircuitInputs;
try {
input = await generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress);
input = await generate_inputs(Buffer.from(formattedArray.buffer), ethereumAddress, CircuitType.EMAIL_TWITTER);
} catch (e) {
console.log("Error generating input", e);
setDisplayMessage("Prove");

View File

@@ -61,7 +61,7 @@ export interface ICircuitInputs {
relayer?: string;
}
enum CircuitType {
export enum CircuitType {
RSA = "rsa",
SHA = "sha",
TEST = "test",
@@ -259,7 +259,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<ICircuitInputs> {
export async function generate_inputs(
raw_email: Buffer | string,
eth_address: string,
type: CircuitType = CircuitType.EMAIL_SUBJECT,
nonce_raw: number | null | string = null
): Promise<ICircuitInputs> {
const nonce = typeof nonce_raw == "string" ? nonce_raw.trim() : nonce_raw;
var result, email: Buffer;
@@ -297,13 +302,12 @@ export async function generate_inputs(raw_email: Buffer | string, eth_address: s
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());
// const pubKeyData = CryptoJS.parseKey(pubkey.toString(), 'pem');
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;
}
@@ -329,7 +333,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);

File diff suppressed because one or more lines are too long

1354
yarn.lock

File diff suppressed because it is too large Load Diff