Skip to content

Commit

Permalink
feat: allow setting of max header length
Browse files Browse the repository at this point in the history
  • Loading branch information
javiersuweijie committed Oct 20, 2024
1 parent 89b2c73 commit 1e53cbc
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 6 deletions.
6 changes: 6 additions & 0 deletions packages/app/src/app/submit/form.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ export const formSchema = z.object({
}
return n;
}),
emailHeaderMaxLength: z.coerce.number().transform((n, ctx) => {
if (n % 64 !== 0) {
ctx.addIssue({ code: 'custom', message: 'Must be a multiple of 64' })
}
return n;
}).default(1024),
values: z.array(z.object({
name: z.string().min(1).transform((value, ctx) => {
if (value.includes(' ')) {
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/app/submit/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export default function Submit() {
shaPrecomputeSelector: ">Not my account<",
senderDomain: "x.com",
emailBodyMaxLength: 4032,
emailHeaderMaxLength: 1024,
dkimSelector: "dkim-202308",
values: [
{
Expand Down
15 changes: 15 additions & 0 deletions packages/app/src/components/entry-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export function EntryForm( {onFormSubmit, entry}: EntryFormProps) {
enableMasking: false,
shaPrecomputeSelector: "",
emailBodyMaxLength: 4032,
emailHeaderMaxLength: 1024,
senderDomain: "",
dkimSelector: "",
values: [],
Expand Down Expand Up @@ -397,6 +398,20 @@ export function EntryForm( {onFormSubmit, entry}: EntryFormProps) {
</FormItem>
)}
/>
<FormField
control={form.control}
name="parameters.emailHeaderMaxLength"
render={({ field, formState }) => (
<FormItem>
<FormLabel>Max Email Header Length</FormLabel>
<FormControl>
<Input type="number" {...field} />
</FormControl>
<FormDescription>Must be a multiple of 64.</FormDescription>
<FormMessage></FormMessage>
</FormItem>
)}
/>
<FormField
control={form.control}
name="parameters.emailBodyMaxLength"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ template <%- name %>(maxHeaderLength, maxBodyLength, n, k, packSize) {
}

<% if (externalInputs.length > 0) {let public_args = externalInputs.map( i => i.name).join(", "); %>
component main { public [<%- public_args %>]} = <%- name %>(1024, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
component main { public [<%- public_args %>]} = <%- name %>(<%- emailHeaderMaxLength || 1024 %>, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
<% } else { %>
component main = <%- name %>(1024, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
component main = <%- name %>(<%- emailHeaderMaxLength || 1024 %>, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
<% } %>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export async function generateCircuitInputs(rawEmail, inputs) {
const circuitInputs = await generateEmailVerifierInputs(rawEmail, {
ignoreBodyHashCheck: <%- ignoreBodyHashCheck %>,
maxBodyLength: <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>,
maxHeaderLength: 1024,
maxHeadersLength: <%- emailHeaderMaxLength || 1024 %>,
shaPrecomputeSelector: "<%- shaPrecomputeSelector.replaceAll('"', '\\\"') %>",
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ template <%- name %>(maxHeaderLength, maxBodyLength, n, k, packSize) {
}

<% if (filteredExternalInputs.length > 0) {let public_args = filteredExternalInputs.map( i => i.name).join(", "); %>
component main { public [<%- public_args %>]} = <%- name %>(1024, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
component main { public [<%- public_args %>]} = <%- name %>(<%- emailHeaderMaxLength || 1024 %>, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
<% } else { %>
component main = <%- name %>(1024, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
component main = <%- name %>(<%- emailHeaderMaxLength || 1024 %>, <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>, 121, 17, 7);
<% } %>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export async function generateCircuitInputs(rawEmail, inputs) {
const circuitInputs = await generateEmailVerifierInputs(rawEmail, {
ignoreBodyHashCheck: <%- ignoreBodyHashCheck %>,
maxBodyLength: <%- ignoreBodyHashCheck ? 0 : emailBodyMaxLength %>,
maxHeaderLength: 1024,
maxHeadersLength: <%- emailHeaderMaxLength || 1024 %>,
shaPrecomputeSelector: "<%- shaPrecomputeSelector %>",
enableBodyMasking: true,
mask: JSON.parse(inputs["mask"]) || Array.apply(null, {length: <%- emailBodyMaxLength %> }).map(() => 0)
Expand Down

0 comments on commit 1e53cbc

Please sign in to comment.