mirror of
https://github.com/zkemail/zk-email-verify.git
synced 2026-01-08 21:18:09 -05:00
Merge branch 'main' into fe-refactor
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user