Skip to content

Commit 9ee2f35

Browse files
rod-chapmanmkannwischer
authored andcommitted
Refactor keccak_squeezeblocks_x4() to simplify proof
Signed-off-by: Rod Chapman <rodchap@amazon.com>
1 parent 90abb71 commit 9ee2f35

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

mldsa/src/fips202/fips202x4.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,28 +94,24 @@ __contract__(
9494
assigns(memory_slice(out2, nblocks * r))
9595
assigns(memory_slice(out3, nblocks * r)))
9696
{
97+
size_t current_offset = 0;
9798
while (nblocks > 0)
9899
__loop__(
99-
assigns(out0, out1, out2, out3, nblocks,
100+
assigns(nblocks, current_offset,
100101
memory_slice(s, sizeof(uint64_t) * MLD_KECCAK_LANES * MLD_KECCAK_WAY),
101102
memory_slice(out0, nblocks * r),
102103
memory_slice(out1, nblocks * r),
103104
memory_slice(out2, nblocks * r),
104105
memory_slice(out3, nblocks * r))
105-
invariant(nblocks <= loop_entry(nblocks) &&
106-
out0 == loop_entry(out0) + r * (loop_entry(nblocks) - nblocks) &&
107-
out1 == loop_entry(out1) + r * (loop_entry(nblocks) - nblocks) &&
108-
out2 == loop_entry(out2) + r * (loop_entry(nblocks) - nblocks) &&
109-
out3 == loop_entry(out3) + r * (loop_entry(nblocks) - nblocks))
106+
invariant(nblocks <= loop_entry(nblocks))
107+
invariant(current_offset == (loop_entry(nblocks) - nblocks) * r)
110108
decreases(nblocks))
111109
{
112110
mld_keccakf1600x4_permute(s);
113-
mld_keccakf1600x4_extract_bytes(s, out0, out1, out2, out3, 0, r);
114-
115-
out0 += r;
116-
out1 += r;
117-
out2 += r;
118-
out3 += r;
111+
mld_keccakf1600x4_extract_bytes(
112+
s, &out0[current_offset], &out1[current_offset], &out2[current_offset],
113+
&out3[current_offset], 0, r);
114+
current_offset += r;
119115
nblocks--;
120116
}
121117
}

0 commit comments

Comments
 (0)