diff --git a/Makefile.Microsoft_nmake b/Makefile.Microsoft_nmake index 4c1a6b549..44dd1eeb3 100644 --- a/Makefile.Microsoft_nmake +++ b/Makefile.Microsoft_nmake @@ -2,6 +2,10 @@ CFLAGS = /nologo /O2 /Imlkem /Imlkem/src /Imlkem/src/fips202 /Imlkem/src/fips202/native /Imlkem/src/sys /Imlkem/src/native +ALLOC_CFLAGS = \ + $(CFLAGS) \ + /D MLK_CONFIG_FILE="\"../test/configs/test_alloc_config.h\"" + OBJ_FILES = .\mlkem\*.obj \ .\mlkem\fips202\*.obj @@ -17,6 +21,13 @@ OBJ_FILES_768 = $(MLKEM768_BUILD_DIR)\mlkem\*.obj \ OBJ_FILES_1024 = $(MLKEM1024_BUILD_DIR)\mlkem\*.obj \ $(MLKEM1024_BUILD_DIR)\mlkem\fips202\*.obj +OBJ_FILES_512_ALLOC = $(MLKEM512_BUILD_DIR)\alloc\mlkem\*.obj \ + $(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202\*.obj +OBJ_FILES_768_ALLOC = $(MLKEM768_BUILD_DIR)\alloc\mlkem\*.obj \ + $(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202\*.obj +OBJ_FILES_1024_ALLOC = $(MLKEM1024_BUILD_DIR)\alloc\mlkem\*.obj \ + $(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202\*.obj + # NOTE: We currently only build code for non-opt code, as we haven't yet made the assembly compatible on Windows !IFNDEF OPT OPT = 0 @@ -65,6 +76,45 @@ OPT = 0 @if NOT EXIST $(MLKEM1024_BUILD_DIR)\test mkdir $(MLKEM1024_BUILD_DIR)\test $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\ $< +# compilation for mlkem512 alloc test +{mlkem\src}.c{$(MLKEM512_BUILD_DIR)\alloc\mlkem}.obj:: + @if NOT EXIST $(MLKEM512_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM512_BUILD_DIR)\alloc\mlkem + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\alloc\mlkem\ $< + +{mlkem\src\fips202}.c{$(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202}.obj:: + @if NOT EXIST $(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202 + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202\ $< + +{test\src}.c{$(MLKEM512_BUILD_DIR)\test\alloc}.obj:: + @if NOT EXIST $(MLKEM512_BUILD_DIR)\test\alloc mkdir $(MLKEM512_BUILD_DIR)\test\alloc + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\test\alloc\ $< + +# compilation for mlkem768 alloc test +{mlkem\src}.c{$(MLKEM768_BUILD_DIR)\alloc\mlkem}.obj:: + @if NOT EXIST $(MLKEM768_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM768_BUILD_DIR)\alloc\mlkem + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\alloc\mlkem\ $< + +{mlkem\src\fips202}.c{$(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202}.obj:: + @if NOT EXIST $(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202 + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202\ $< + +{test\src}.c{$(MLKEM768_BUILD_DIR)\test\alloc}.obj:: + @if NOT EXIST $(MLKEM768_BUILD_DIR)\test\alloc mkdir $(MLKEM768_BUILD_DIR)\test\alloc + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\test\alloc\ $< + +# compilation for mlkem1024 alloc test +{mlkem\src}.c{$(MLKEM1024_BUILD_DIR)\alloc\mlkem}.obj:: + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM1024_BUILD_DIR)\alloc\mlkem + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\alloc\mlkem\ $< + +{mlkem\src\fips202}.c{$(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202}.obj:: + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202 + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202\ $< + +{test\src}.c{$(MLKEM1024_BUILD_DIR)\test\alloc}.obj:: + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\test\alloc mkdir $(MLKEM1024_BUILD_DIR)\test\alloc + $(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\alloc\ $< + # compilation of acvp test for mlkem512 {test\acvp}.c{$(MLKEM512_BUILD_DIR)\test\acvp}.obj:: @if NOT EXIST $(MLKEM512_BUILD_DIR)\test\acvp mkdir $(MLKEM512_BUILD_DIR)\test\acvp @@ -80,6 +130,21 @@ OPT = 0 @if NOT EXIST $(MLKEM1024_BUILD_DIR)\test\acvp mkdir $(MLKEM1024_BUILD_DIR)\test\acvp $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\acvp\ $< +# compilation of wycheproof test for mlkem512 +{test\wycheproof}.c{$(MLKEM512_BUILD_DIR)\test\wycheproof}.obj:: + @if NOT EXIST $(MLKEM512_BUILD_DIR)\test\wycheproof mkdir $(MLKEM512_BUILD_DIR)\test\wycheproof + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\test\wycheproof\ $< + +# compilation of wycheproof test for mlkem768 +{test\wycheproof}.c{$(MLKEM768_BUILD_DIR)\test\wycheproof}.obj:: + @if NOT EXIST $(MLKEM768_BUILD_DIR)\test\wycheproof mkdir $(MLKEM768_BUILD_DIR)\test\wycheproof + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\test\wycheproof\ $< + +# compilation of wycheproof test for mlkem1024 +{test\wycheproof}.c{$(MLKEM1024_BUILD_DIR)\test\wycheproof}.obj:: + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\test\wycheproof mkdir $(MLKEM1024_BUILD_DIR)\test\wycheproof + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\wycheproof\ $< + # compile functional test for mlkem512 test_mlkem512: $(OBJ_FILES_512) $(MLKEM512_BUILD_DIR)\test\test_mlkem.obj $(BUILD_DIR)\randombytes\notrandombytes.obj @if NOT EXIST $(MLKEM512_BUILD_DIR)\bin mkdir $(MLKEM512_BUILD_DIR)\bin @@ -125,8 +190,55 @@ gen_KAT1024: $(OBJ_FILES_1024) $(MLKEM1024_BUILD_DIR)\test\gen_KAT.obj $(BUILD_D @if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\gen_KAT1024 $** /link +# compile RNG fail test for mlkem512 +test_rng_fail512: $(OBJ_FILES_512) $(MLKEM512_BUILD_DIR)\test\test_rng_fail.obj + @if NOT EXIST $(MLKEM512_BUILD_DIR)\bin mkdir $(MLKEM512_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /Fe$(MLKEM512_BUILD_DIR)\bin\test_rng_fail512 $** /link + +# compile RNG fail test for mlkem768 +test_rng_fail768: $(OBJ_FILES_768) $(MLKEM768_BUILD_DIR)\test\test_rng_fail.obj + @if NOT EXIST $(MLKEM768_BUILD_DIR)\bin mkdir $(MLKEM768_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /Fe$(MLKEM768_BUILD_DIR)\bin\test_rng_fail768 $** /link + +# compile RNG fail test for mlkem1024 +test_rng_fail1024: $(OBJ_FILES_1024) $(MLKEM1024_BUILD_DIR)\test\test_rng_fail.obj + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\test_rng_fail1024 $** /link + +# compile alloc test for mlkem512 +test_alloc512: $(OBJ_FILES_512_ALLOC) $(MLKEM512_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM512_BUILD_DIR)\bin mkdir $(MLKEM512_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /Fe$(MLKEM512_BUILD_DIR)\bin\test_alloc512 $** /link + +# compile alloc test for mlkem768 +test_alloc768: $(OBJ_FILES_768_ALLOC) $(MLKEM768_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM768_BUILD_DIR)\bin mkdir $(MLKEM768_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /Fe$(MLKEM768_BUILD_DIR)\bin\test_alloc768 $** /link + +# compile alloc test for mlkem1024 +test_alloc1024: $(OBJ_FILES_1024_ALLOC) $(MLKEM1024_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\test_alloc1024 $** /link + +# compile wycheproof test for mlkem512 +wycheproof_mlkem512: $(OBJ_FILES_512) $(MLKEM512_BUILD_DIR)\test\wycheproof\wycheproof_mlkem.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM512_BUILD_DIR)\bin mkdir $(MLKEM512_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /Fe$(MLKEM512_BUILD_DIR)\bin\wycheproof_mlkem512 $** /link + +# compile wycheproof test for mlkem768 +wycheproof_mlkem768: $(OBJ_FILES_768) $(MLKEM768_BUILD_DIR)\test\wycheproof\wycheproof_mlkem.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM768_BUILD_DIR)\bin mkdir $(MLKEM768_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /Fe$(MLKEM768_BUILD_DIR)\bin\wycheproof_mlkem768 $** /link + +# compile wycheproof test for mlkem1024 +wycheproof_mlkem1024: $(OBJ_FILES_1024) $(MLKEM1024_BUILD_DIR)\test\wycheproof\wycheproof_mlkem.obj $(BUILD_DIR)\randombytes\notrandombytes.obj + @if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin + $(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\wycheproof_mlkem1024 $** /link + acvp: acvp_mlkem512 acvp_mlkem768 acvp_mlkem1024 +wycheproof: wycheproof_mlkem512 wycheproof_mlkem768 wycheproof_mlkem1024 + gen_KAT: gen_KAT512 gen_KAT768 gen_KAT1024 run_kat: gen_KAT @@ -137,12 +249,25 @@ run_kat: gen_KAT run_acvp: acvp python test/acvp/acvp_client.py +run_wycheproof: wycheproof + python test/wycheproof/wycheproof_client.py + run_func: test_mlkem512 test_mlkem768 test_mlkem1024 $(MLKEM512_BUILD_DIR)\bin\test_mlkem512.exe $(MLKEM768_BUILD_DIR)\bin\test_mlkem768.exe $(MLKEM1024_BUILD_DIR)\bin\test_mlkem1024.exe -test: run_func run_acvp run_kat +run_rng_fail: test_rng_fail512 test_rng_fail768 test_rng_fail1024 + $(MLKEM512_BUILD_DIR)\bin\test_rng_fail512.exe + $(MLKEM768_BUILD_DIR)\bin\test_rng_fail768.exe + $(MLKEM1024_BUILD_DIR)\bin\test_rng_fail1024.exe + +run_alloc: test_alloc512 test_alloc768 test_alloc1024 + $(MLKEM512_BUILD_DIR)\bin\test_alloc512.exe + $(MLKEM768_BUILD_DIR)\bin\test_alloc768.exe + $(MLKEM1024_BUILD_DIR)\bin\test_alloc1024.exe + +test: run_func run_rng_fail run_alloc run_acvp run_kat run_wycheproof @echo Everything checks fine! quickcheck: test