Skip to content

Commit 024d2fb

Browse files
committed
Derive mlkem_native.h configuration from config file
Previously, mlkem_native.h required users to set MLK_CONFIG_API_* macros before including it, separate from the MLK_CONFIG_* macros used for the build configuration. This distinction between internal and external configuration it confusing. Now, mlkem_native.h derives all API settings from the same build configuration file used internally. - The legacy configuration via MLK_CONFIG_API_XXX still works for backwards compatibility, but will be removed in v2. - New Config Options: * MLK_CONFIG_MULTILEVEL_BUILD: Explicit flag for multi-level builds This makes it simpler to get headers for multi-level builds. In the common case, the configs used in a multi-level build are identical except for the setting of MLK_CONFIG_PARAMETER_SET and MLK_CONFIG_MULTILEVEL_{NO,WITH}_SHARED. However, the latter only affect the build, not the API. With MLK_CONFIG_MULTILEVEL_BUILD exposed as a separate option, mlkem_native.h can use it to determine whether to suffix the namespace prefix with the parameter set (512/768/1024) or not, so no adaptation of MLK_CONFIG_MULTILEVEL_{NO,WITH}_SHARED is needed. Instead, a multi-level header simply becomes: ```c #define MLK_CONFIG_PARAMETER_SET 512 #include "mlkem_native.h" #undef MLK_CONFIG_PARAMETER_SET #define MLK_CONFIG_PARAMETER_SET 768 #include "mlkem_native.h" #undef MLK_CONFIG_PARAMETER_SET #define MLK_CONFIG_PARAMETER_SET 1024 #include "mlkem_native.h" #undef MLK_CONFIG_PARAMETER_SET ``` For backwards compatibility, MLK_CONFIG_MULTILEVEL_BUILD is not used in the build, which continues to detect multilevel builds via the existing options MLK_CONFIG_MULTILEVEL_{WITH,NO}_SHARED. * MLK_CONFIG_NO_SUPERCOP: We had this before in mlkem_native.h as MLK_CONFIG_API_NO_SUPERCOP; it's now in the config and documented. * MLK_CONFIG_CONSTANTS_ONLY: We had this before in mlkem_native.h as MLK_CONFIG_API_CONSTANTS_ONLY; it's now in the config and documented. - Build-Internal vs API Config Separation: Config file now guards build-only options with #if defined(MLK_BUILD_INTERNAL). - Example Directory Restructuring: All examples refactored with mlkem/ subdirectories renamed to mlkem_native/ and CFLAGS configuration replaced by custom configs. Updated READMEs to reflect new paths and clarify which options are set in config files vs passed via CFLAGS. Signed-off-by: Hanno Becker <beckphan@amazon.co.uk>
1 parent 742db86 commit 024d2fb

File tree

200 files changed

+5155
-1893
lines changed

Some content is hidden

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

200 files changed

+5155
-1893
lines changed

.github/actions/config-variations/action.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ runs:
3737
shell: bash
3838
run: |
3939
make clean
40-
CFLAGS='-DMLK_CONFIG_FILE=\"../../test/break_pct_config.h\"' make func -j4
40+
CFLAGS='-Itest -DMLK_CONFIG_FILE=\"break_pct_config.h\"' make func -j4
4141
# PCT breakage is done at runtime via MLK_BREAK_PCT
4242
make run_func # Should be OK
4343
MLK_BREAK_PCT=0 make run_func # Should be OK
@@ -53,7 +53,7 @@ runs:
5353
with:
5454
gh_token: ${{ inputs.gh_token }}
5555
compile_mode: native
56-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_zeroize_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
56+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_zeroize_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
5757
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
5858
func: true
5959
kat: true
@@ -66,7 +66,7 @@ runs:
6666
with:
6767
gh_token: ${{ inputs.gh_token }}
6868
compile_mode: native
69-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_native_capability_config_1.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
69+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_native_capability_config_1.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
7070
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
7171
func: true
7272
kat: true
@@ -79,7 +79,7 @@ runs:
7979
with:
8080
gh_token: ${{ inputs.gh_token }}
8181
compile_mode: native
82-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_native_capability_config_0.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
82+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_native_capability_config_0.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
8383
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
8484
func: true
8585
kat: true
@@ -92,7 +92,7 @@ runs:
9292
with:
9393
gh_token: ${{ inputs.gh_token }}
9494
compile_mode: native
95-
cflags: "-std=c11 -march=armv8.4-a+sha3 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_native_capability_config_ID_AA64PFR1_EL1.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
95+
cflags: "-std=c11 -march=armv8.4-a+sha3 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_native_capability_config_ID_AA64PFR1_EL1.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
9696
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
9797
func: true
9898
kat: true
@@ -105,7 +105,7 @@ runs:
105105
with:
106106
gh_token: ${{ inputs.gh_token }}
107107
compile_mode: native
108-
cflags: "-std=c11 -mavx2 -mbmi2 -mpopcnt -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_native_capability_config_CPUID_AVX2.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
108+
cflags: "-std=c11 -mavx2 -mbmi2 -mpopcnt -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_native_capability_config_CPUID_AVX2.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
109109
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
110110
func: true
111111
kat: true
@@ -118,7 +118,7 @@ runs:
118118
with:
119119
gh_token: ${{ inputs.gh_token }}
120120
compile_mode: native
121-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/no_asm_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
121+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"no_asm_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
122122
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
123123
func: true
124124
kat: true
@@ -131,7 +131,7 @@ runs:
131131
with:
132132
gh_token: ${{ inputs.gh_token }}
133133
compile_mode: native
134-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/serial_fips202_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
134+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"serial_fips202_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
135135
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
136136
func: true
137137
kat: true
@@ -144,7 +144,7 @@ runs:
144144
with:
145145
gh_token: ${{ inputs.gh_token }}
146146
compile_mode: native
147-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_randombytes_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
147+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_randombytes_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
148148
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
149149
func: true
150150
kat: true
@@ -157,7 +157,7 @@ runs:
157157
with:
158158
gh_token: ${{ inputs.gh_token }}
159159
compile_mode: native
160-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_memcpy_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
160+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_memcpy_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
161161
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
162162
func: true
163163
kat: true
@@ -170,7 +170,7 @@ runs:
170170
with:
171171
gh_token: ${{ inputs.gh_token }}
172172
compile_mode: native
173-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_memset_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
173+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_memset_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
174174
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
175175
func: true
176176
kat: true
@@ -183,7 +183,7 @@ runs:
183183
with:
184184
gh_token: ${{ inputs.gh_token }}
185185
compile_mode: native
186-
cflags: "-std=c11 -D_GNU_SOURCE -DMLK_CONFIG_FILE=\\\\\\\"../../test/custom_stdlib_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
186+
cflags: "-std=c11 -D_GNU_SOURCE -Itest -DMLK_CONFIG_FILE=\\\\\\\"custom_stdlib_config.h\\\\\\\" -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
187187
ldflags: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all"
188188
func: true
189189
kat: true

BIBLIOGRAPHY.md

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,22 @@ source code and documentation.
3535
- National Institute of Standards and Technology
3636
* URL: https://csrc.nist.gov/projects/cryptographic-module-validation-program/fips-140-3-ig-announcements
3737
* Referenced from:
38-
- [examples/basic_deterministic/mlkem_native/custom_no_randomized_config.h](examples/basic_deterministic/mlkem_native/custom_no_randomized_config.h)
39-
- [examples/custom_backend/mlkem_native/custom_config.h](examples/custom_backend/mlkem_native/custom_config.h)
40-
- [examples/monolithic_build/config_1024.h](examples/monolithic_build/config_1024.h)
41-
- [examples/monolithic_build/config_512.h](examples/monolithic_build/config_512.h)
42-
- [examples/monolithic_build/config_768.h](examples/monolithic_build/config_768.h)
43-
- [examples/monolithic_build_multilevel/multilevel_config.h](examples/monolithic_build_multilevel/multilevel_config.h)
38+
- [examples/basic_deterministic/mlkem_native/mlkem_native_config.h](examples/basic_deterministic/mlkem_native/mlkem_native_config.h)
39+
- [examples/bring_your_own_fips202/mlkem_native/mlkem_native_config.h](examples/bring_your_own_fips202/mlkem_native/mlkem_native_config.h)
40+
- [examples/bring_your_own_fips202_static/mlkem_native/mlkem_native_config.h](examples/bring_your_own_fips202_static/mlkem_native/mlkem_native_config.h)
41+
- [examples/custom_backend/mlkem_native/mlkem_native_config.h](examples/custom_backend/mlkem_native/mlkem_native_config.h)
42+
- [examples/monolithic_build/mlkem_native/mlkem_native_config.h](examples/monolithic_build/mlkem_native/mlkem_native_config.h)
43+
- [examples/monolithic_build_multilevel/mlkem_native/mlkem_native_config.h](examples/monolithic_build_multilevel/mlkem_native/mlkem_native_config.h)
44+
- [examples/monolithic_build_multilevel/mlkem_native/multilevel_config.h](examples/monolithic_build_multilevel/mlkem_native/multilevel_config.h)
45+
- [examples/monolithic_build_multilevel_native/mlkem_native/mlkem_native_config.h](examples/monolithic_build_multilevel_native/mlkem_native/mlkem_native_config.h)
4446
- [examples/monolithic_build_multilevel_native/multilevel_config.h](examples/monolithic_build_multilevel_native/multilevel_config.h)
45-
- [examples/monolithic_build_native/config_1024.h](examples/monolithic_build_native/config_1024.h)
46-
- [examples/monolithic_build_native/config_512.h](examples/monolithic_build_native/config_512.h)
47-
- [examples/monolithic_build_native/config_768.h](examples/monolithic_build_native/config_768.h)
47+
- [examples/monolithic_build_native/mlkem_native/mlkem_native_config.h](examples/monolithic_build_native/mlkem_native/mlkem_native_config.h)
48+
- [examples/multilevel_build/mlkem_native/mlkem_native_config.h](examples/multilevel_build/mlkem_native/mlkem_native_config.h)
49+
- [examples/multilevel_build_native/mlkem_native/mlkem_native_config.h](examples/multilevel_build_native/mlkem_native/mlkem_native_config.h)
4850
- [integration/liboqs/config_aarch64.h](integration/liboqs/config_aarch64.h)
4951
- [integration/liboqs/config_c.h](integration/liboqs/config_c.h)
5052
- [integration/liboqs/config_x86_64.h](integration/liboqs/config_x86_64.h)
51-
- [mlkem/src/config.h](mlkem/src/config.h)
53+
- [mlkem/mlkem_native_config.h](mlkem/mlkem_native_config.h)
5254
- [mlkem/src/kem.c](mlkem/src/kem.c)
5355
- [test/break_pct_config.h](test/break_pct_config.h)
5456
- [test/custom_memcpy_config.h](test/custom_memcpy_config.h)
@@ -81,20 +83,22 @@ source code and documentation.
8183
* URL: https://csrc.nist.gov/pubs/fips/203/final
8284
* Referenced from:
8385
- [README.md](README.md)
84-
- [examples/basic_deterministic/mlkem_native/custom_no_randomized_config.h](examples/basic_deterministic/mlkem_native/custom_no_randomized_config.h)
85-
- [examples/custom_backend/mlkem_native/custom_config.h](examples/custom_backend/mlkem_native/custom_config.h)
86-
- [examples/monolithic_build/config_1024.h](examples/monolithic_build/config_1024.h)
87-
- [examples/monolithic_build/config_512.h](examples/monolithic_build/config_512.h)
88-
- [examples/monolithic_build/config_768.h](examples/monolithic_build/config_768.h)
89-
- [examples/monolithic_build_multilevel/multilevel_config.h](examples/monolithic_build_multilevel/multilevel_config.h)
86+
- [examples/basic_deterministic/mlkem_native/mlkem_native_config.h](examples/basic_deterministic/mlkem_native/mlkem_native_config.h)
87+
- [examples/bring_your_own_fips202/mlkem_native/mlkem_native_config.h](examples/bring_your_own_fips202/mlkem_native/mlkem_native_config.h)
88+
- [examples/bring_your_own_fips202_static/mlkem_native/mlkem_native_config.h](examples/bring_your_own_fips202_static/mlkem_native/mlkem_native_config.h)
89+
- [examples/custom_backend/mlkem_native/mlkem_native_config.h](examples/custom_backend/mlkem_native/mlkem_native_config.h)
90+
- [examples/monolithic_build/mlkem_native/mlkem_native_config.h](examples/monolithic_build/mlkem_native/mlkem_native_config.h)
91+
- [examples/monolithic_build_multilevel/mlkem_native/mlkem_native_config.h](examples/monolithic_build_multilevel/mlkem_native/mlkem_native_config.h)
92+
- [examples/monolithic_build_multilevel/mlkem_native/multilevel_config.h](examples/monolithic_build_multilevel/mlkem_native/multilevel_config.h)
93+
- [examples/monolithic_build_multilevel_native/mlkem_native/mlkem_native_config.h](examples/monolithic_build_multilevel_native/mlkem_native/mlkem_native_config.h)
9094
- [examples/monolithic_build_multilevel_native/multilevel_config.h](examples/monolithic_build_multilevel_native/multilevel_config.h)
91-
- [examples/monolithic_build_native/config_1024.h](examples/monolithic_build_native/config_1024.h)
92-
- [examples/monolithic_build_native/config_512.h](examples/monolithic_build_native/config_512.h)
93-
- [examples/monolithic_build_native/config_768.h](examples/monolithic_build_native/config_768.h)
95+
- [examples/monolithic_build_native/mlkem_native/mlkem_native_config.h](examples/monolithic_build_native/mlkem_native/mlkem_native_config.h)
96+
- [examples/multilevel_build/mlkem_native/mlkem_native_config.h](examples/multilevel_build/mlkem_native/mlkem_native_config.h)
97+
- [examples/multilevel_build_native/mlkem_native/mlkem_native_config.h](examples/multilevel_build_native/mlkem_native/mlkem_native_config.h)
9498
- [mlkem/mlkem_native.h](mlkem/mlkem_native.h)
99+
- [mlkem/mlkem_native_config.h](mlkem/mlkem_native_config.h)
95100
- [mlkem/src/compress.c](mlkem/src/compress.c)
96101
- [mlkem/src/compress.h](mlkem/src/compress.h)
97-
- [mlkem/src/config.h](mlkem/src/config.h)
98102
- [mlkem/src/fips202/fips202.c](mlkem/src/fips202/fips202.c)
99103
- [mlkem/src/fips202/fips202x4.c](mlkem/src/fips202/fips202x4.c)
100104
- [mlkem/src/indcpa.c](mlkem/src/indcpa.c)

examples/basic/Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ endif
5454
# In this example, we compile the individual mlkem-native source files directly.
5555
# Alternatively, you can compile the 'monobuild' source file mlkem_native.c.
5656
# See examples/monolithic_build for that.
57-
MLK_SOURCE=$(wildcard \
58-
mlkem_native/mlkem/src/*.c \
59-
mlkem_native/mlkem/src/**/*.c \
60-
mlkem_native/mlkem/src/**/**/*.c \
61-
mlkem_native/mlkem/src/**/**/**/*.c)
57+
MLK_SOURCE=$(wildcard \
58+
mlkem_native/src/*.c \
59+
mlkem_native/src/**/*.c \
60+
mlkem_native/src/**/**/*.c \
61+
mlkem_native/src/**/**/**/*.c)
6262

6363
# Part B:
6464
#
@@ -87,7 +87,7 @@ BIN=test_binary
8787
#
8888

8989
# Include path for mlkem_native_config.h
90-
CFLAGS += -I mlkem_native/mlkem
90+
CFLAGS += -I mlkem_native
9191
# Pick prefix
9292
CFLAGS += -DMLK_CONFIG_NAMESPACE_PREFIX=mlkem
9393

examples/basic/main.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
* This requires specifying the parameter set and namespace prefix
1212
* used for the build.
1313
*/
14-
#define MLK_CONFIG_API_PARAMETER_SET MLK_CONFIG_PARAMETER_SET
15-
#define MLK_CONFIG_API_NAMESPACE_PREFIX mlkem
16-
#include "mlkem_native/mlkem/mlkem_native.h"
14+
#define MLK_CONFIG_NAMESPACE_PREFIX mlkem
15+
#include "mlkem_native/mlkem_native.h"
1716

1817
#include "test_only_rng/notrandombytes.h"
1918

examples/basic/mlkem_native/mlkem

Lines changed: 0 additions & 1 deletion
This file was deleted.
File renamed without changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../mlkem/mlkem_native_config.h
File renamed without changes.

examples/basic_deterministic/Makefile

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ endif
5555
# Alternatively, you can compile the 'monobuild' source file mlkem_native.c.
5656
# See examples/monolithic_build for that.
5757
MLK_SOURCE=$(wildcard \
58-
mlkem_native/mlkem/src/*.c \
59-
mlkem_native/mlkem/src/**/*.c \
60-
mlkem_native/mlkem/src/**/**/*.c \
61-
mlkem_native/mlkem/src/**/**/**/*.c)
58+
mlkem_native/src/*.c \
59+
mlkem_native/src/**/*.c \
60+
mlkem_native/src/**/**/*.c \
61+
mlkem_native/src/**/**/**/*.c)
6262

6363
# Part B:
6464
#
@@ -75,11 +75,7 @@ BIN=test_binary
7575
#
7676

7777
# Include path for config
78-
CFLAGS += -Imlkem_native/mlkem
79-
# Pick prefix
80-
CFLAGS += -DMLK_CONFIG_NAMESPACE_PREFIX=mlkem
81-
# Set configuration option for deterministic build
82-
CFLAGS += -DMLK_CONFIG_NO_RANDOMIZED_API
78+
CFLAGS += -Imlkem_native
8379

8480
BINARY_NAME_FULL_512=$(BUILD_DIR)/$(BIN)512
8581
BINARY_NAME_FULL_768=$(BUILD_DIR)/$(BIN)768

examples/basic_deterministic/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
This directory contains a minimal example showing how to build **mlkem-native** for use cases only requiring the deterministic key generation and encapsulation APIs (`crypto_kem_keypair_derand` and `crypto_kem_enc_derand`). In that case, no implementation of `randombytes()` has to be provided.
66

7+
The configuration file [mlkem_native_config.h](mlkem_native/mlkem_native_config.h) sets `MLK_CONFIG_NO_RANDOMIZED_API`
8+
to disable the randomized API functions.
9+
710
## Components
811

912
An application using mlkem-native as-is needs to include the following components:

0 commit comments

Comments
 (0)