Skip to content

Commit 53ddea6

Browse files
rod-chapmanwillieyz
authored andcommitted
Refactor polymat_permute_bitrev_to_custom() for proof
Signed-off-by: Rod Chapman <[email protected]>
1 parent 85e1c57 commit 53ddea6

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

mldsa/src/polyvec.c

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,27 @@ __contract__(
5050
)
5151
{
5252
#if defined(MLD_USE_NATIVE_NTT_CUSTOM_ORDER)
53-
/* TODO: proof */
54-
unsigned int i;
55-
for (i = 0; i < MLDSA_K * MLDSA_L; i++)
53+
54+
unsigned int i, j;
55+
for (i = 0; i < MLDSA_K; i++)
5656
__loop__(
57-
assigns(i, memory_slice(mat, sizeof(mld_polymat)))
58-
invariant(i <= MLDSA_K * MLDSA_L)
57+
assigns(i, j, memory_slice(mat, sizeof(mld_polymat)))
58+
invariant(i <= MLDSA_K)
5959
invariant(forall(k1, 0, MLDSA_K, forall(l1, 0, MLDSA_L,
6060
array_bound(mat->vec[k1].vec[l1].coeffs, 0, MLDSA_N, 0, MLDSA_Q))))
6161
)
6262
{
63-
mld_poly_permute_bitrev_to_custom(
64-
mat->vec[i / MLDSA_L].vec[i % MLDSA_L].coeffs);
63+
for (j = 0; j < MLDSA_L; j++)
64+
__loop__(
65+
assigns(j, memory_slice(mat, sizeof(mld_polymat)))
66+
invariant(i <= MLDSA_K)
67+
invariant(j <= MLDSA_L)
68+
invariant(forall(k2, 0, MLDSA_K, forall(l2, 0, MLDSA_L,
69+
array_bound(mat->vec[k2].vec[l2].coeffs, 0, MLDSA_N, 0, MLDSA_Q))))
70+
)
71+
{
72+
mld_poly_permute_bitrev_to_custom(mat->vec[i].vec[j].coeffs);
73+
}
6574
}
6675

6776
#else /* MLD_USE_NATIVE_NTT_CUSTOM_ORDER */

0 commit comments

Comments
 (0)