From a6cc8cca47ca55a78d92dfa4c7eded5b4d212d80 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Sun, 15 Dec 2024 18:18:32 +0900 Subject: [PATCH] Hook ML-KEM related tests This patch adds ML-KEM related tests. --- .gitignore | 3 ++ tests/CMakeLists.txt | 68 ++++++++++++++++++++++++ tests/Makefile.am | 79 ++++++++++++++++++++++++++++ tests/mlkem1024_decap_tests.sh | 12 +++++ tests/mlkem1024_encap_tests.sh | 12 +++++ tests/mlkem1024_iteration_test.sh | 12 +++++ tests/mlkem1024_keygen_tests.sh | 12 +++++ tests/mlkem1024_nist_decap_tests.sh | 12 +++++ tests/mlkem1024_nist_keygen_tests.sh | 12 +++++ tests/mlkem768_decap_tests.sh | 12 +++++ tests/mlkem768_encap_tests.sh | 12 +++++ tests/mlkem768_keygen_tests.sh | 12 +++++ tests/mlkem768_nist_decap_tests.sh | 12 +++++ tests/mlkem768_nist_keygen_tests.sh | 12 +++++ update.sh | 1 + 15 files changed, 283 insertions(+) create mode 100755 tests/mlkem1024_decap_tests.sh create mode 100755 tests/mlkem1024_encap_tests.sh create mode 100755 tests/mlkem1024_iteration_test.sh create mode 100755 tests/mlkem1024_keygen_tests.sh create mode 100755 tests/mlkem1024_nist_decap_tests.sh create mode 100755 tests/mlkem1024_nist_keygen_tests.sh create mode 100755 tests/mlkem768_decap_tests.sh create mode 100755 tests/mlkem768_encap_tests.sh create mode 100755 tests/mlkem768_keygen_tests.sh create mode 100755 tests/mlkem768_nist_decap_tests.sh create mode 100755 tests/mlkem768_nist_keygen_tests.sh diff --git a/.gitignore b/.gitignore index cc132b5be4..3c823869c6 100644 --- a/.gitignore +++ b/.gitignore @@ -115,6 +115,9 @@ tests/freenull* tests/gost2814789t* tests/key_schedule* tests/lhash_test* +tests/mlkem*.c +tests/mlkem*.h +tests/mlkem*.txt tests/mont* tests/policy* tests/rfc3779* diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 568d474d64..ba521ad55b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,7 +8,9 @@ include_directories( ../crypto/bn ../crypto/curve25519 ../crypto/evp + ../crypto/mlkem ../crypto/modes + ../crypto/sha ../crypto/x509 ../ssl ../apps/openssl @@ -534,6 +536,72 @@ add_executable(md_test md_test.c) target_link_libraries(md_test ${OPENSSL_TEST_LIBS}) add_platform_test(md_test md_test) +# mlkem1024_decap_tests +add_executable(mlkem1024_decap_tests mlkem1024_decap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem1024_decap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem1024_decap_tests) +add_platform_test(mlkem1024_decap_tests mlkem1024_decap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem1024_decap_tests.txt) + +# mlkem1024_encap_tests +add_executable(mlkem1024_encap_tests mlkem1024_encap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem1024_encap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem1024_encap_tests) +add_platform_test(mlkem1024_encap_tests mlkem1024_encap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem1024_encap_tests.txt) + +# mlkem1024_keygen_tests +add_executable(mlkem1024_keygen_tests mlkem1024_keygen_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem1024_keygen_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem1024_keygen_tests) +add_platform_test(mlkem1024_keygen_tests mlkem1024_keygen_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem1024_keygen_tests.txt) + +# mlkem1024_nist_decap_tests +add_executable(mlkem1024_nist_decap_tests mlkem1024_nist_decap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem1024_nist_decap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem1024_nist_decap_tests) +add_platform_test(mlkem1024_nist_decap_tests mlkem1024_nist_decap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem1024_nist_decap_tests.txt) + +# mlkem1024_nist_keygen_tests +add_executable(mlkem1024_nist_keygen_tests mlkem1024_nist_keygen_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem1024_nist_keygen_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem1024_nist_keygen_tests) +add_platform_test(mlkem1024_nist_keygen_tests mlkem1024_nist_keygen_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem1024_nist_keygen_tests.txt) + +# mlkem768_decap_tests +add_executable(mlkem768_decap_tests mlkem768_decap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem768_decap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_decap_tests) +add_platform_test(mlkem768_decap_tests mlkem768_decap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem768_decap_tests.txt) + +# mlkem768_encap_tests +add_executable(mlkem768_encap_tests mlkem768_encap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem768_encap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_encap_tests) +add_platform_test(mlkem768_encap_tests mlkem768_encap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem768_encap_tests.txt) + +# mlkem768_iteration_test +add_executable(mlkem768_iteration_test mlkem768_iteration_test.c mlkem_tests_util.c) +target_link_libraries(mlkem768_iteration_test ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_iteration_test) +add_platform_test(mlkem768_iteration_test mlkem768_iteration_test) + +# mlkem768_keygen_tests +add_executable(mlkem768_keygen_tests mlkem768_keygen_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem768_keygen_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_keygen_tests) +add_platform_test(mlkem768_keygen_tests mlkem768_keygen_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem768_keygen_tests.txt) + +# mlkem768_nist_decap_tests +add_executable(mlkem768_nist_decap_tests mlkem768_nist_decap_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem768_nist_decap_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_nist_decap_tests) +add_platform_test(mlkem768_nist_decap_tests mlkem768_nist_decap_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem768_nist_decap_tests.txt) + +# mlkem768_nist_keygen_tests +add_executable(mlkem768_nist_keygen_tests mlkem768_nist_keygen_tests.c mlkem_tests_util.c) +target_link_libraries(mlkem768_nist_keygen_tests ${OPENSSL_TEST_LIBS}) +prepare_emscripten_test_target(mlkem768_nist_keygen_tests) +add_platform_test(mlkem768_nist_keygen_tests mlkem768_nist_keygen_tests ${CMAKE_CURRENT_SOURCE_DIR}/mlkem768_nist_keygen_tests.txt) + # objectstest add_executable(objectstest objectstest.c) target_link_libraries(objectstest ${OPENSSL_TEST_LIBS}) diff --git a/tests/Makefile.am b/tests/Makefile.am index 5f3b10271d..36cbb9ad14 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,7 +12,9 @@ AM_CPPFLAGS += -I $(top_srcdir)/crypto/bio AM_CPPFLAGS += -I $(top_srcdir)/crypto/bn AM_CPPFLAGS += -I $(top_srcdir)/crypto/curve25519 AM_CPPFLAGS += -I $(top_srcdir)/crypto/evp +AM_CPPFLAGS += -I $(top_srcdir)/crypto/mlkem AM_CPPFLAGS += -I $(top_srcdir)/crypto/modes +AM_CPPFLAGS += -I $(top_srcdir)/crypto/sha AM_CPPFLAGS += -I $(top_srcdir)/crypto/x509 AM_CPPFLAGS += -I $(top_srcdir)/ssl AM_CPPFLAGS += -I $(top_srcdir)/apps/openssl @@ -542,6 +544,83 @@ TESTS += md_test check_PROGRAMS += md_test md_test_SOURCES = md_test.c +noinst_HEADERS += mlkem_tests_util.h + +# mlkem1024_decap_tests +TESTS += mlkem1024_decap_tests.sh +check_PROGRAMS += mlkem1024_decap_tests +mlkem1024_decap_tests_SOURCES = mlkem1024_decap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem1024_decap_tests.sh +EXTRA_DIST += mlkem1024_decap_tests.txt + +# mlkem1024_encap_tests +TESTS += mlkem1024_encap_tests.sh +check_PROGRAMS += mlkem1024_encap_tests +mlkem1024_encap_tests_SOURCES = mlkem1024_encap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem1024_encap_tests.sh +EXTRA_DIST += mlkem1024_encap_tests.txt + +# mlkem1024_keygen_tests +TESTS += mlkem1024_keygen_tests.sh +check_PROGRAMS += mlkem1024_keygen_tests +mlkem1024_keygen_tests_SOURCES = mlkem1024_keygen_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem1024_keygen_tests.sh +EXTRA_DIST += mlkem1024_keygen_tests.txt + +# mlkem1024_nist_decap_tests +TESTS += mlkem1024_nist_decap_tests.sh +check_PROGRAMS += mlkem1024_nist_decap_tests +mlkem1024_nist_decap_tests_SOURCES = mlkem1024_nist_decap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem1024_nist_decap_tests.sh +EXTRA_DIST += mlkem1024_nist_decap_tests.txt + +# mlkem1024_nist_keygen_tests +TESTS += mlkem1024_nist_keygen_tests.sh +check_PROGRAMS += mlkem1024_nist_keygen_tests +mlkem1024_nist_keygen_tests_SOURCES = mlkem1024_nist_keygen_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem1024_nist_keygen_tests.sh +EXTRA_DIST += mlkem1024_nist_keygen_tests.txt + +# mlkem768_decap_tests +TESTS += mlkem768_decap_tests.sh +check_PROGRAMS += mlkem768_decap_tests +mlkem768_decap_tests_SOURCES = mlkem768_decap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem768_decap_tests.sh +EXTRA_DIST += mlkem768_decap_tests.txt + +# mlkem768_encap_tests +TESTS += mlkem768_encap_tests.sh +check_PROGRAMS += mlkem768_encap_tests +mlkem768_encap_tests_SOURCES = mlkem768_encap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem768_encap_tests.sh +EXTRA_DIST += mlkem768_encap_tests.txt + +# mlkem768_iteration_test +TESTS += mlkem768_iteration_test +check_PROGRAMS += mlkem768_iteration_test +mlkem768_iteration_test_SOURCES = mlkem768_iteration_test.c mlkem_tests_util.c + +# mlkem768_keygen_tests +TESTS += mlkem768_keygen_tests.sh +check_PROGRAMS += mlkem768_keygen_tests +mlkem768_keygen_tests_SOURCES = mlkem768_keygen_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem768_keygen_tests.sh +EXTRA_DIST += mlkem768_keygen_tests.txt + +# mlkem768_nist_decap_tests +TESTS += mlkem768_nist_decap_tests.sh +check_PROGRAMS += mlkem768_nist_decap_tests +mlkem768_nist_decap_tests_SOURCES = mlkem768_nist_decap_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem768_nist_decap_tests.sh +EXTRA_DIST += mlkem768_nist_decap_tests.txt + +# mlkem768_nist_keygen_tests +TESTS += mlkem768_nist_keygen_tests.sh +check_PROGRAMS += mlkem768_nist_keygen_tests +mlkem768_nist_keygen_tests_SOURCES = mlkem768_nist_keygen_tests.c mlkem_tests_util.c +EXTRA_DIST += mlkem768_nist_keygen_tests.sh +EXTRA_DIST += mlkem768_nist_keygen_tests.txt + # objectstest TESTS += objectstest check_PROGRAMS += objectstest diff --git a/tests/mlkem1024_decap_tests.sh b/tests/mlkem1024_decap_tests.sh new file mode 100755 index 0000000000..95efa48eb0 --- /dev/null +++ b/tests/mlkem1024_decap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_decap_tests +if [ -e ./mlkem1024_decap_tests.exe ]; then + TEST=./mlkem1024_decap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_decap_tests.txt diff --git a/tests/mlkem1024_encap_tests.sh b/tests/mlkem1024_encap_tests.sh new file mode 100755 index 0000000000..9f4f2b1586 --- /dev/null +++ b/tests/mlkem1024_encap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_encap_tests +if [ -e ./mlkem1024_encap_tests.exe ]; then + TEST=./mlkem1024_encap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_encap_tests.txt diff --git a/tests/mlkem1024_iteration_test.sh b/tests/mlkem1024_iteration_test.sh new file mode 100755 index 0000000000..95efa48eb0 --- /dev/null +++ b/tests/mlkem1024_iteration_test.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_decap_tests +if [ -e ./mlkem1024_decap_tests.exe ]; then + TEST=./mlkem1024_decap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_decap_tests.txt diff --git a/tests/mlkem1024_keygen_tests.sh b/tests/mlkem1024_keygen_tests.sh new file mode 100755 index 0000000000..5287cf2d8e --- /dev/null +++ b/tests/mlkem1024_keygen_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_keygen_tests +if [ -e ./mlkem1024_keygen_tests.exe ]; then + TEST=./mlkem1024_keygen_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_keygen_tests.txt diff --git a/tests/mlkem1024_nist_decap_tests.sh b/tests/mlkem1024_nist_decap_tests.sh new file mode 100755 index 0000000000..58bfc4eb16 --- /dev/null +++ b/tests/mlkem1024_nist_decap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_nist_decap_tests +if [ -e ./mlkem1024_nist_decap_tests.exe ]; then + TEST=./mlkem1024_nist_decap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_nist_decap_tests.txt diff --git a/tests/mlkem1024_nist_keygen_tests.sh b/tests/mlkem1024_nist_keygen_tests.sh new file mode 100755 index 0000000000..643109c35b --- /dev/null +++ b/tests/mlkem1024_nist_keygen_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem1024_nist_keygen_tests +if [ -e ./mlkem1024_nist_keygen_tests.exe ]; then + TEST=./mlkem1024_nist_keygen_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem1024_nist_keygen_tests.txt diff --git a/tests/mlkem768_decap_tests.sh b/tests/mlkem768_decap_tests.sh new file mode 100755 index 0000000000..af11da3af8 --- /dev/null +++ b/tests/mlkem768_decap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem768_decap_tests +if [ -e ./mlkem768_decap_tests.exe ]; then + TEST=./mlkem768_decap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem768_decap_tests.txt diff --git a/tests/mlkem768_encap_tests.sh b/tests/mlkem768_encap_tests.sh new file mode 100755 index 0000000000..ee5c9799f6 --- /dev/null +++ b/tests/mlkem768_encap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem768_encap_tests +if [ -e ./mlkem768_encap_tests.exe ]; then + TEST=./mlkem768_encap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem768_encap_tests.txt diff --git a/tests/mlkem768_keygen_tests.sh b/tests/mlkem768_keygen_tests.sh new file mode 100755 index 0000000000..0c847097f2 --- /dev/null +++ b/tests/mlkem768_keygen_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem768_keygen_tests +if [ -e ./mlkem768_keygen_tests.exe ]; then + TEST=./mlkem768_keygen_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem768_keygen_tests.txt diff --git a/tests/mlkem768_nist_decap_tests.sh b/tests/mlkem768_nist_decap_tests.sh new file mode 100755 index 0000000000..42bdedc58f --- /dev/null +++ b/tests/mlkem768_nist_decap_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem768_nist_decap_tests +if [ -e ./mlkem768_nist_decap_tests.exe ]; then + TEST=./mlkem768_nist_decap_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem768_nist_decap_tests.txt diff --git a/tests/mlkem768_nist_keygen_tests.sh b/tests/mlkem768_nist_keygen_tests.sh new file mode 100755 index 0000000000..0c847097f2 --- /dev/null +++ b/tests/mlkem768_nist_keygen_tests.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e +TEST=./mlkem768_keygen_tests +if [ -e ./mlkem768_keygen_tests.exe ]; then + TEST=./mlkem768_keygen_tests.exe +fi + +if [ -z $srcdir ]; then + srcdir=. +fi + +$TEST $srcdir/mlkem768_keygen_tests.txt diff --git a/update.sh b/update.sh index fa8375fb04..11a244db2c 100755 --- a/update.sh +++ b/update.sh @@ -355,6 +355,7 @@ $CP $libcrypto_regress/aead/*.txt tests $CP $libcrypto_regress/ct/ctlog.conf tests $CP $libcrypto_regress/ct/*.crt tests $CP $libcrypto_regress/x509/policy/*.pem tests +$CP $libcrypto_regress/mlkem/*.txt tests # generate libcrypto freenull.c awk -f $libcrypto_regress/free/freenull.awk \