From 2537c1ff36ef07f8e68ef3f42918ca80d6c5e80e Mon Sep 17 00:00:00 2001 From: shreyas-londhe Date: Tue, 7 Jan 2025 11:28:50 +0530 Subject: [PATCH] test: added test for qp-encoded sha-precompute selector --- ...qp-encoded-sha-precompute-selector.test.ts | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 packages/circuits/tests/email-verifier-with-qp-encoded-sha-precompute-selector.test.ts diff --git a/packages/circuits/tests/email-verifier-with-qp-encoded-sha-precompute-selector.test.ts b/packages/circuits/tests/email-verifier-with-qp-encoded-sha-precompute-selector.test.ts new file mode 100644 index 0000000..00b9aea --- /dev/null +++ b/packages/circuits/tests/email-verifier-with-qp-encoded-sha-precompute-selector.test.ts @@ -0,0 +1,49 @@ +import fs from "fs"; +import { wasm as wasm_tester } from "circom_tester"; +import path from "path"; +import { DKIMVerificationResult } from "@zk-email/helpers/src/dkim"; +import { generateEmailVerifierInputsFromDKIMResult } from "@zk-email/helpers/src/input-generators"; +import { verifyDKIMSignature } from "@zk-email/helpers/src/dkim"; + +describe("EmailVerifier : With soft line breaks", () => { + jest.setTimeout(30 * 60 * 1000); // 30 minutes + + let dkimResult: DKIMVerificationResult; + let circuit: any; + + beforeAll(async () => { + const rawEmail = fs.readFileSync( + path.join(__dirname, "./test-emails/lorem_ipsum.eml"), + "utf8" + ); + dkimResult = await verifyDKIMSignature(rawEmail); + + circuit = await wasm_tester( + path.join( + __dirname, + "./test-circuits/email-verifier-with-soft-line-breaks-test.circom" + ), + { + recompile: true, + include: path.join(__dirname, "../../../node_modules"), + output: path.join(__dirname, "./compiled-test-circuits"), + } + ); + }); + + it("should verify email with soft line break in sha precompute selector", async function () { + const emailVerifierInputs = generateEmailVerifierInputsFromDKIMResult( + dkimResult, + { + maxHeadersLength: 640, + maxBodyLength: 1408, + ignoreBodyHashCheck: false, + removeSoftLineBreaks: true, + shaPrecomputeSelector: "imperdiet neque.", + } + ); + + const witness = await circuit.calculateWitness(emailVerifierInputs); + await circuit.checkConstraints(witness); + }); +});