Skip to content

Commit 172dcb7

Browse files
committed
sys: Prefix capability enum values with architecture
Disambiguate the mlk_sys_cap values by architecture: MLK_SYS_CAP_{AVX2,SHA3,MVE} become MLK_SYS_CAP_{X86_64_AVX2,AARCH64_SHA3,ARMV81M_MVE}. Generate the ABI checker tests before the macro-typo check in autogen so the renamed values in the generated check files pass validation, and drop the unused MLK_SYS_CAP_DUMMY allowlist entry. Patch AWS-LC accordingly. - Ports pq-code-package/mldsa-native#1208 - Resolves #1320 Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
1 parent 584fc6c commit 172dcb7

41 files changed

Lines changed: 103 additions & 90 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dev/fips202/aarch64/x1_v84a.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x1_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

dev/fips202/aarch64/x2_v84a.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

dev/fips202/aarch64/x4_v8a_v84a_scalar.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

dev/fips202/x86_64/keccak_f1600_x4_avx2.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
MLK_MUST_CHECK_RETURN_VALUE
2020
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2121
{
22-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
22+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
2323
{
2424
return MLK_NATIVE_FUNC_FALLBACK;
2525
}

dev/x86_64/meta.h

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
static MLK_INLINE void mlk_poly_permute_bitrev_to_custom(int16_t data[MLKEM_N])
3939
{
40-
if (mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
40+
if (mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
4141
{
4242
mlk_nttunpack_avx2_asm(data);
4343
}
@@ -48,7 +48,7 @@ static MLK_INLINE int mlk_rej_uniform_native(int16_t *r, unsigned len,
4848
const uint8_t *buf,
4949
unsigned buflen)
5050
{
51-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2) || len != MLKEM_N ||
51+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2) || len != MLKEM_N ||
5252
buflen % 12 != 0)
5353
{
5454
return MLK_NATIVE_FUNC_FALLBACK;
@@ -59,7 +59,7 @@ static MLK_INLINE int mlk_rej_uniform_native(int16_t *r, unsigned len,
5959
MLK_MUST_CHECK_RETURN_VALUE
6060
static MLK_INLINE int mlk_ntt_native(int16_t data[MLKEM_N])
6161
{
62-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
62+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
6363
{
6464
return MLK_NATIVE_FUNC_FALLBACK;
6565
}
@@ -71,7 +71,7 @@ static MLK_INLINE int mlk_ntt_native(int16_t data[MLKEM_N])
7171
MLK_MUST_CHECK_RETURN_VALUE
7272
static MLK_INLINE int mlk_intt_native(int16_t data[MLKEM_N])
7373
{
74-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
74+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
7575
{
7676
return MLK_NATIVE_FUNC_FALLBACK;
7777
}
@@ -83,7 +83,7 @@ static MLK_INLINE int mlk_intt_native(int16_t data[MLKEM_N])
8383
MLK_MUST_CHECK_RETURN_VALUE
8484
static MLK_INLINE int mlk_poly_reduce_native(int16_t data[MLKEM_N])
8585
{
86-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
86+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
8787
{
8888
return MLK_NATIVE_FUNC_FALLBACK;
8989
}
@@ -95,7 +95,7 @@ static MLK_INLINE int mlk_poly_reduce_native(int16_t data[MLKEM_N])
9595
MLK_MUST_CHECK_RETURN_VALUE
9696
static MLK_INLINE int mlk_poly_tomont_native(int16_t data[MLKEM_N])
9797
{
98-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
98+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
9999
{
100100
return MLK_NATIVE_FUNC_FALLBACK;
101101
}
@@ -108,7 +108,7 @@ MLK_MUST_CHECK_RETURN_VALUE
108108
static MLK_INLINE int mlk_poly_mulcache_compute_native(int16_t x[MLKEM_N / 2],
109109
const int16_t y[MLKEM_N])
110110
{
111-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
111+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
112112
{
113113
return MLK_NATIVE_FUNC_FALLBACK;
114114
}
@@ -123,7 +123,7 @@ static MLK_INLINE int mlk_polyvec_basemul_acc_montgomery_cached_k2_native(
123123
int16_t r[MLKEM_N], const int16_t a[2 * MLKEM_N],
124124
const int16_t b[2 * MLKEM_N], const int16_t b_cache[2 * (MLKEM_N / 2)])
125125
{
126-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
126+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
127127
{
128128
return MLK_NATIVE_FUNC_FALLBACK;
129129
}
@@ -139,7 +139,7 @@ static MLK_INLINE int mlk_polyvec_basemul_acc_montgomery_cached_k3_native(
139139
int16_t r[MLKEM_N], const int16_t a[3 * MLKEM_N],
140140
const int16_t b[3 * MLKEM_N], const int16_t b_cache[3 * (MLKEM_N / 2)])
141141
{
142-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
142+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
143143
{
144144
return MLK_NATIVE_FUNC_FALLBACK;
145145
}
@@ -155,7 +155,7 @@ static MLK_INLINE int mlk_polyvec_basemul_acc_montgomery_cached_k4_native(
155155
int16_t r[MLKEM_N], const int16_t a[4 * MLKEM_N],
156156
const int16_t b[4 * MLKEM_N], const int16_t b_cache[4 * (MLKEM_N / 2)])
157157
{
158-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
158+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
159159
{
160160
return MLK_NATIVE_FUNC_FALLBACK;
161161
}
@@ -169,7 +169,7 @@ MLK_MUST_CHECK_RETURN_VALUE
169169
static MLK_INLINE int mlk_poly_tobytes_native(uint8_t r[MLKEM_POLYBYTES],
170170
const int16_t a[MLKEM_N])
171171
{
172-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
172+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
173173
{
174174
return MLK_NATIVE_FUNC_FALLBACK;
175175
}
@@ -182,7 +182,7 @@ MLK_MUST_CHECK_RETURN_VALUE
182182
static MLK_INLINE int mlk_poly_frombytes_native(
183183
int16_t r[MLKEM_N], const uint8_t a[MLKEM_POLYBYTES])
184184
{
185-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
185+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
186186
{
187187
return MLK_NATIVE_FUNC_FALLBACK;
188188
}
@@ -196,7 +196,7 @@ MLK_MUST_CHECK_RETURN_VALUE
196196
static MLK_INLINE int mlk_poly_compress_d4_native(
197197
uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D4], const int16_t a[MLKEM_N])
198198
{
199-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
199+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
200200
{
201201
return MLK_NATIVE_FUNC_FALLBACK;
202202
}
@@ -209,7 +209,7 @@ MLK_MUST_CHECK_RETURN_VALUE
209209
static MLK_INLINE int mlk_poly_compress_d10_native(
210210
uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D10], const int16_t a[MLKEM_N])
211211
{
212-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
212+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
213213
{
214214
return MLK_NATIVE_FUNC_FALLBACK;
215215
}
@@ -222,7 +222,7 @@ MLK_MUST_CHECK_RETURN_VALUE
222222
static MLK_INLINE int mlk_poly_decompress_d4_native(
223223
int16_t r[MLKEM_N], const uint8_t a[MLKEM_POLYCOMPRESSEDBYTES_D4])
224224
{
225-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
225+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
226226
{
227227
return MLK_NATIVE_FUNC_FALLBACK;
228228
}
@@ -235,7 +235,7 @@ MLK_MUST_CHECK_RETURN_VALUE
235235
static MLK_INLINE int mlk_poly_decompress_d10_native(
236236
int16_t r[MLKEM_N], const uint8_t a[MLKEM_POLYCOMPRESSEDBYTES_D10])
237237
{
238-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
238+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
239239
{
240240
return MLK_NATIVE_FUNC_FALLBACK;
241241
}
@@ -250,7 +250,7 @@ MLK_MUST_CHECK_RETURN_VALUE
250250
static MLK_INLINE int mlk_poly_compress_d5_native(
251251
uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D5], const int16_t a[MLKEM_N])
252252
{
253-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
253+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
254254
{
255255
return MLK_NATIVE_FUNC_FALLBACK;
256256
}
@@ -263,7 +263,7 @@ MLK_MUST_CHECK_RETURN_VALUE
263263
static MLK_INLINE int mlk_poly_compress_d11_native(
264264
uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D11], const int16_t a[MLKEM_N])
265265
{
266-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
266+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
267267
{
268268
return MLK_NATIVE_FUNC_FALLBACK;
269269
}
@@ -276,7 +276,7 @@ MLK_MUST_CHECK_RETURN_VALUE
276276
static MLK_INLINE int mlk_poly_decompress_d5_native(
277277
int16_t r[MLKEM_N], const uint8_t a[MLKEM_POLYCOMPRESSEDBYTES_D5])
278278
{
279-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
279+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
280280
{
281281
return MLK_NATIVE_FUNC_FALLBACK;
282282
}
@@ -289,7 +289,7 @@ MLK_MUST_CHECK_RETURN_VALUE
289289
static MLK_INLINE int mlk_poly_decompress_d11_native(
290290
int16_t r[MLKEM_N], const uint8_t a[MLKEM_POLYCOMPRESSEDBYTES_D11])
291291
{
292-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
292+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
293293
{
294294
return MLK_NATIVE_FUNC_FALLBACK;
295295
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright (c) The mlkem-native project authors
2+
# SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
3+
diff --git a/crypto/fipsmodule/ml_kem/mlkem_native_config.h b/crypto/fipsmodule/ml_kem/mlkem_native_config.h
4+
--- a/crypto/fipsmodule/ml_kem/mlkem_native_config.h
5+
+++ b/crypto/fipsmodule/ml_kem/mlkem_native_config.h
6+
@@ -36,7 +36,7 @@
7+
static MLK_INLINE int mlk_sys_check_capability(mlk_sys_cap cap)
8+
{
9+
#if defined(MLK_SYS_X86_64)
10+
- if (cap == MLK_SYS_CAP_AVX2)
11+
+ if (cap == MLK_SYS_CAP_X86_64_AVX2)
12+
{
13+
return CRYPTO_is_AVX2_capable();
14+
}

mlkem/src/fips202/native/aarch64/x1_v84a.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x1_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

mlkem/src/fips202/native/aarch64/x2_v84a.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
MLK_MUST_CHECK_RETURN_VALUE
2222
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2323
{
24-
if (!mlk_sys_check_capability(MLK_SYS_CAP_SHA3))
24+
if (!mlk_sys_check_capability(MLK_SYS_CAP_AARCH64_SHA3))
2525
{
2626
return MLK_NATIVE_FUNC_FALLBACK;
2727
}

mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
MLK_MUST_CHECK_RETURN_VALUE
2020
static MLK_INLINE int mlk_keccak_f1600_x4_native(uint64_t *state)
2121
{
22-
if (!mlk_sys_check_capability(MLK_SYS_CAP_AVX2))
22+
if (!mlk_sys_check_capability(MLK_SYS_CAP_X86_64_AVX2))
2323
{
2424
return MLK_NATIVE_FUNC_FALLBACK;
2525
}

0 commit comments

Comments
 (0)