diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index db18b27c6e..fc975211e2 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -44,7 +44,7 @@ cmake_dependent_option(OQS_ENABLE_KEM_sidh_p610_compressed "" ON "OQS_ENABLE_KEM cmake_dependent_option(OQS_ENABLE_KEM_sidh_p751 "" ON "OQS_ENABLE_KEM_SIDH" OFF) cmake_dependent_option(OQS_ENABLE_KEM_sidh_p751_compressed "" ON "OQS_ENABLE_KEM_SIDH" OFF) -option(OQS_ENABLE_SIG_PICNIC "" ON) +option(OQS_ENABLE_SIG_PICNIC "" OFF) cmake_dependent_option(OQS_ENABLE_SIG_picnic_L1_UR "" ON "OQS_ENABLE_SIG_PICNIC" OFF) cmake_dependent_option(OQS_ENABLE_SIG_picnic_L1_FS "" ON "OQS_ENABLE_SIG_PICNIC" OFF) cmake_dependent_option(OQS_ENABLE_SIG_picnic_L3_UR "" ON "OQS_ENABLE_SIG_PICNIC" OFF) @@ -55,351 +55,145 @@ cmake_dependent_option(OQS_ENABLE_SIG_picnic2_L1_FS "" ON "OQS_ENABLE_SIG_PICNIC cmake_dependent_option(OQS_ENABLE_SIG_picnic2_L3_FS "" ON "OQS_ENABLE_SIG_PICNIC" OFF) cmake_dependent_option(OQS_ENABLE_SIG_picnic2_L5_FS "" ON "OQS_ENABLE_SIG_PICNIC" OFF) -option(OQS_ENABLE_SIG_QTESLA "" ON) +option(OQS_ENABLE_SIG_QTESLA "" OFF) cmake_dependent_option(OQS_ENABLE_SIG_qTesla_p_I "" ON "OQS_ENABLE_SIG_QTESLA" OFF) cmake_dependent_option(OQS_ENABLE_SIG_qTesla_p_III "" ON "OQS_ENABLE_SIG_QTESLA" OFF) ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ENABLE_BY_ALG_START - option(OQS_ENABLE_KEM_CLASSIC_MCELIECE "" ON) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_348864_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_348864f_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_460896_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_460896f_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_6688128_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_6688128f_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_6960119_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_6960119f_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_8192128_vec ON) - cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -set(OQS_ENABLE_KEM_classic_mceliece_8192128f_vec ON) - option(OQS_ENABLE_KEM_KYBER "" ON) cmake_dependent_option(OQS_ENABLE_KEM_kyber_512 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_512_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_512_avx2 ON) -endif() +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_avx2 "" ON "OQS_ENABLE_KEM_kyber_512" OFF) endif() - cmake_dependent_option(OQS_ENABLE_KEM_kyber_768 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_768_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_768_avx2 ON) +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_avx2 "" ON "OQS_ENABLE_KEM_kyber_768" OFF) endif() -endif() - cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_1024_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_1024_avx2 ON) +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_avx2 "" ON "OQS_ENABLE_KEM_kyber_1024" OFF) endif() -endif() - cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_512_90s_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_512_90s_avx2 ON) +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_512_90s" OFF) endif() -endif() - cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_768_90s_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_768_90s_avx2 ON) -endif() +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_768_90s" OFF) endif() - cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -set(OQS_ENABLE_KEM_kyber_1024_90s_clean ON) -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS ) -set(OQS_ENABLE_KEM_kyber_1024_90s_avx2 ON) -endif() +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_1024_90s" OFF) endif() - option(OQS_ENABLE_KEM_LEDACRYPT "" ON) cmake_dependent_option(OQS_ENABLE_KEM_ledacrypt_ledakemlt12 "" ON "OQS_ENABLE_KEM_LEDACRYPT" OFF) -set(OQS_ENABLE_KEM_ledacrypt_ledakemlt12_leaktime ON) - cmake_dependent_option(OQS_ENABLE_KEM_ledacrypt_ledakemlt32 "" ON "OQS_ENABLE_KEM_LEDACRYPT" OFF) -set(OQS_ENABLE_KEM_ledacrypt_ledakemlt32_leaktime ON) - cmake_dependent_option(OQS_ENABLE_KEM_ledacrypt_ledakemlt52 "" ON "OQS_ENABLE_KEM_LEDACRYPT" OFF) -set(OQS_ENABLE_KEM_ledacrypt_ledakemlt52_leaktime ON) - option(OQS_ENABLE_KEM_NEWHOPE "" ON) cmake_dependent_option(OQS_ENABLE_KEM_newhope_512cca "" ON "OQS_ENABLE_KEM_NEWHOPE" OFF) -set(OQS_ENABLE_KEM_newhope_512cca_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_newhope_1024cca "" ON "OQS_ENABLE_KEM_NEWHOPE" OFF) -set(OQS_ENABLE_KEM_newhope_1024cca_clean ON) - option(OQS_ENABLE_KEM_NTRU "" ON) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048509 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -set(OQS_ENABLE_KEM_ntru_hps2048509_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048677 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -set(OQS_ENABLE_KEM_ntru_hps2048677_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps4096821 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -set(OQS_ENABLE_KEM_ntru_hps4096821_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_ntru_hrss701 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -set(OQS_ENABLE_KEM_ntru_hrss701_clean ON) - option(OQS_ENABLE_KEM_SABER "" ON) cmake_dependent_option(OQS_ENABLE_KEM_saber_lightsaber "" ON "OQS_ENABLE_KEM_SABER" OFF) -set(OQS_ENABLE_KEM_saber_lightsaber_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_saber_saber "" ON "OQS_ENABLE_KEM_SABER" OFF) -set(OQS_ENABLE_KEM_saber_saber_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_saber_firesaber "" ON "OQS_ENABLE_KEM_SABER" OFF) -set(OQS_ENABLE_KEM_saber_firesaber_clean ON) - option(OQS_ENABLE_KEM_THREEBEARS "" ON) cmake_dependent_option(OQS_ENABLE_KEM_threebears_babybear "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_babybear_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_threebears_babybear_ephem "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_babybear_ephem_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_threebears_mamabear "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_mamabear_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_threebears_mamabear_ephem "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_mamabear_ephem_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_threebears_papabear "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_papabear_clean ON) - cmake_dependent_option(OQS_ENABLE_KEM_threebears_papabear_ephem "" ON "OQS_ENABLE_KEM_THREEBEARS" OFF) -set(OQS_ENABLE_KEM_threebears_papabear_ephem_clean ON) - option(OQS_ENABLE_SIG_DILITHIUM "" ON) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -set(OQS_ENABLE_SIG_dilithium_2_clean ON) -if (Darwin STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_2_avx2 ON) -endif() +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2_avx2 "" ON "OQS_ENABLE_SIG_dilithium_2" OFF) endif() -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_2_avx2 ON) -endif() -endif() - cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -set(OQS_ENABLE_SIG_dilithium_3_clean ON) -if (Darwin STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_3_avx2 ON) +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3_avx2 "" ON "OQS_ENABLE_SIG_dilithium_3" OFF) endif() -endif() -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_3_avx2 ON) -endif() -endif() - cmake_dependent_option(OQS_ENABLE_SIG_dilithium_4 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -set(OQS_ENABLE_SIG_dilithium_4_clean ON) -if (Darwin STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_4_avx2 ON) -endif() -endif() -if (Linux STREQUAL CMAKE_SYSTEM_NAME) -if (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS ) -set(OQS_ENABLE_SIG_dilithium_4_avx2 ON) +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_4_avx2 "" ON "OQS_ENABLE_SIG_dilithium_4" OFF) endif() -endif() - option(OQS_ENABLE_SIG_FALCON "" ON) cmake_dependent_option(OQS_ENABLE_SIG_falcon_512 "" ON "OQS_ENABLE_SIG_FALCON" OFF) -set(OQS_ENABLE_SIG_falcon_512_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_falcon_1024 "" ON "OQS_ENABLE_SIG_FALCON" OFF) -set(OQS_ENABLE_SIG_falcon_1024_clean ON) - option(OQS_ENABLE_SIG_MQDSS "" ON) cmake_dependent_option(OQS_ENABLE_SIG_mqdss_31_48 "" ON "OQS_ENABLE_SIG_MQDSS" OFF) -set(OQS_ENABLE_SIG_mqdss_31_48_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_mqdss_31_64 "" ON "OQS_ENABLE_SIG_MQDSS" OFF) -set(OQS_ENABLE_SIG_mqdss_31_64_clean ON) - option(OQS_ENABLE_SIG_RAINBOW "" ON) cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Ia_classic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Ia_classic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Ia_cyclic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Ia_cyclic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_IIIc_classic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_IIIc_classic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_IIIc_cyclic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_IIIc_cyclic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Vc_classic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Vc_classic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Vc_cyclic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Vc_cyclic_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) -set(OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed_clean ON) - option(OQS_ENABLE_SIG_SPHINCS "" ON) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_128f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_128f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_128s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_128s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_192f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_192f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_192s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_192s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_256f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_256f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_256s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_haraka_256s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_128f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_128f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_128s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_128s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_192f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_192f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_192s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_192s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_256f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_256f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_256s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_sha256_256s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_128f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_128f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_128s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_128s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_192f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_192f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_192s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_192s_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_256f_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_256f_simple_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_256s_robust_clean ON) - cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -set(OQS_ENABLE_SIG_sphincs_shake256_256s_simple_clean ON) - ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ENABLE_BY_ALG_END diff --git a/.CMake/compiler_flags.cmake b/.CMake/compiler_opts.cmake similarity index 95% rename from .CMake/compiler_flags.cmake rename to .CMake/compiler_opts.cmake index 589a714973..0a4e2598ed 100644 --- a/.CMake/compiler_flags.cmake +++ b/.CMake/compiler_opts.cmake @@ -3,6 +3,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall) add_compile_options(-Wextra) add_compile_options(-Wpedantic) + add_compile_options(-Wno-unused-command-line-argument) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_options(-g3) add_compile_options(-fno-omit-frame-pointer) @@ -33,8 +34,8 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang") endif() elseif(CMAKE_BUILD_TYPE STREQUAL "Optimized") add_compile_options(-O3) - add_compile_options(-march=native) add_compile_options(-fomit-frame-pointer) + include(${CMAKE_CURRENT_LIST_DIR}/gcc_clang_intrinsics.cmake) else() #Build type = Generic/Dependency add_compile_options(-O3) add_compile_options(-fomit-frame-pointer) @@ -59,7 +60,6 @@ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") add_compile_options(-ggdb3) elseif(CMAKE_BUILD_TYPE STREQUAL "Optimized") add_compile_options(-O3) - add_compile_options(-march=native) add_compile_options(-fomit-frame-pointer) add_compile_options(-fdata-sections) add_compile_options(-ffunction-sections) @@ -68,6 +68,7 @@ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") else () add_compile_options(-Wl,--gc-sections) endif () + include(${CMAKE_CURRENT_LIST_DIR}/gcc_clang_intrinsics.cmake) else() #Build type = Generic/Dependency add_compile_options(-O3) add_compile_options(-fomit-frame-pointer) diff --git a/.CMake/cpu_extensions.cmake b/.CMake/cpu_extensions.cmake deleted file mode 100644 index f79fc1843d..0000000000 --- a/.CMake/cpu_extensions.cmake +++ /dev/null @@ -1,18 +0,0 @@ -try_run(RUN_RESULT COMPILE_RESULT - "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/.CMake/list_cpu_extensions.c" - CMAKE_FLAGS - -DINCLUDE_DIRECTORIES=${CPUFEATURES_INCLUDE_DIR} - LINK_LIBRARIES ${CPUFEATURES_LIBRARY} - RUN_OUTPUT_VARIABLE RUN_OUTPUT) -if(NOT RUN_RESULT EQUAL 0) - message(FATAL_ERROR ".CMake/list_cpu_extensions.c returned exit code: " ${RUN_RESULT}) -endif() -foreach(CPU_EXTENSION ${RUN_OUTPUT}) - set(OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS ON) -endforeach() -if(OQS_USE_AVX512BW_INSTRUCTIONS AND - OQS_USE_AVX512DQ_INSTRUCTIONS AND - OQS_USE_AVX512F_INSTRUCTIONS) - set(OQS_USE_AVX512_INSTRUCTIONS ON) -endif() -set(OQS_ENABLE_CPUFEATURES ON) diff --git a/.CMake/detect_gcc_clang_intrinsics.c b/.CMake/detect_gcc_clang_intrinsics.c new file mode 100644 index 0000000000..06f18c0d1d --- /dev/null +++ b/.CMake/detect_gcc_clang_intrinsics.c @@ -0,0 +1,44 @@ +#include + +int main(void) { +#if defined(__AES__) + printf("AES;"); +#endif +#if defined(__AVX__) + printf("AVX;"); +#endif +#if defined(__AVX2__) + printf("AVX2;"); +#endif +#if defined(__AVX512BW__) + printf("AVX512BW;"); +#endif +#if defined(__AVX512DQ__) + printf("AVX512DQ;"); +#endif +#if defined(__AVX512F__) + printf("AVX512F;"); +#endif +#if defined(__BMI__) + printf("BMI;"); +#endif +#if defined(__BMI2__) + printf("BMI2;"); +#endif +#if defined(__FMA__) + printf("FMA;"); +#endif +#if defined(__POPCNT__) + printf("POPCNT;"); +#endif +#if defined(__SSE__) + printf("SSE;"); +#endif +#if defined(__SSE2__) + printf("SSE2;"); +#endif +#if defined(__SSE3__) + printf("SSE3;"); +#endif + return 0; +} diff --git a/.CMake/gcc_clang_intrinsics.cmake b/.CMake/gcc_clang_intrinsics.cmake new file mode 100644 index 0000000000..5242681cb9 --- /dev/null +++ b/.CMake/gcc_clang_intrinsics.cmake @@ -0,0 +1,15 @@ +try_run(RUN_RESULT COMPILE_RESULT + "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/.CMake/detect_gcc_clang_intrinsics.c" + COMPILE_DEFINITIONS -march=native + RUN_OUTPUT_VARIABLE RUN_OUTPUT) +if(NOT RUN_RESULT EQUAL 0) + message(FATAL_ERROR ".CMake/detect_gcc_clang_intrinsics.c returned exit code: " ${RUN_RESULT}) +endif() +foreach(CPU_EXTENSION ${RUN_OUTPUT}) + set(OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS ON) +endforeach() +if(OQS_USE_AVX512BW_INSTRUCTIONS AND + OQS_USE_AVX512DQ_INSTRUCTIONS AND + OQS_USE_AVX512F_INSTRUCTIONS) + set(OQS_USE_AVX512_INSTRUCTIONS ON) +endif() diff --git a/.CMake/list_cpu_extensions.c b/.CMake/list_cpu_extensions.c deleted file mode 100644 index 12771919b9..0000000000 --- a/.CMake/list_cpu_extensions.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include - -#include - -#if defined(CPU_FEATURES_ARCH_X86) -#include -#elif defined(CPU_FEATURES_ARCH_ARM) -#include -#elif defined(CPU_FEATURES_ARCH_AARCH64) -#include -#endif - -int main(void) { -#if defined(CPU_FEATURES_ARCH_X86) - const X86Features features = GetX86Info().features; - - if(features.avx) { - printf("AVX;"); - } - if(features.avx2) { - printf("AVX2;"); - } - if(features.avx512bw) { - printf("AVX512BW;"); - } - if(features.avx512dq) { - printf("AVX512DQ;"); - } - if(features.avx512f) { - printf("AVX512F;"); - } - if(features.bmi1) { - printf("BMI;"); - } - if(features.bmi2) { - printf("BMI2;"); - } - if(features.fma3) { - printf("FMA;"); - } - if(features.fma4) { - printf("FMA4;"); - } - if(features.mmx) { - printf("MMX;"); - } - if(features.popcnt) { - printf("POPCNT;"); - } - if(features.sse) { - printf("SSE;"); - } - if(features.sse2) { - printf("SSE2;"); - } - if(features.sse3) { - printf("SSE3;"); - } - if(features.sse4a) { - printf("SSE4A;"); - } -#elif defined(CPU_FEATURES_ARCH_ARM) - const ArmFeatures features = GetArmInfo().features; - if(features.neon) { - printf("NEON;"); - } -#elif defined(CPU_FEATURES_ARCH_AARCH64) - const Aarch64Features features = GetAarch64Info().features; - if(features.asimd) { - printf("NEON;"); - } -#endif - if(features.aes) { - printf("AES;"); - } - - return 0; -} diff --git a/.astylerc b/.astylerc index 5917a731da..14c582855e 100644 --- a/.astylerc +++ b/.astylerc @@ -1,4 +1,4 @@ -# find src tests -name '*.[ch]' | grep -v '/external/' | grep -v 'kem.*/pqclean_' | grep -v 'sig.*/pqclean_' | xargs astyle --options=.astylerc +# find src tests .CMake -name '*.[ch]' | grep -v '/external/' | grep -v 'kem.*/pqclean_' | grep -v 'sig.*/pqclean_' | xargs astyle --options=.astylerc --style=google --indent=tab #--indent-preproc-define diff --git a/.circleci/config.yml b/.circleci/config.yml index e50ce8a3c8..f2e9e4bbc0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -65,9 +65,9 @@ localCheckout: &localCheckout name: win/default steps: - checkout - - run: + - run: name: Install ninja - command: $ProgressPreference="SilentlyContinue" ; Invoke-RestMethod -Uri https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip -Method Get -OutFile ninja.zip; Expand-Archive ninja.zip + command: $ProgressPreference="SilentlyContinue" ; Invoke-RestMethod -Uri https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip -Method Get -OutFile ninja.zip; Expand-Archive ninja.zip shell: powershell.exe - run: name: Install dependencies @@ -199,7 +199,7 @@ jobs: win-static: <<: *winjob environment: - CONFIGURE_ARGS: -DOQS_USE_OPENSSL=OFF + CONFIGURE_ARGS: -DOQS_USE_OPENSSL=OFF SKIP_TESTS: style win-shared: <<: *winjob @@ -212,14 +212,14 @@ workflows: build: jobs: - win-static: - filters: + filters: branches: - only: + only: - /mb-.*/ - win-shared: - filters: + filters: branches: - only: + only: - /mb-.*/ - centos-7-amd64 - centos-8-amd64 diff --git a/CMakeLists.txt b/CMakeLists.txt index 44cea8cd02..84b16565b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,17 @@ cmake_minimum_required (VERSION 3.5) -cmake_policy(SET CMP0063 NEW) +# option() honors normal variables. +# see: https://cmake.org/cmake/help/git-stage/policy/CMP0077.html +if(POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() +# Honor symbol visibility properties for all target types. +# see: https://cmake.org/cmake/help/git-stage/policy/CMP0063.html +if(POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) +endif() project(liboqs C ASM) + set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -11,8 +21,6 @@ set(OQS_COMPILE_BUILD_TARGET "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") set(ARCH "x86_64") -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86|i386|i686") - set(ARCH "x86") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|aarch64") set(ARCH "arm64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") @@ -30,11 +38,10 @@ endif() if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) endif() -include(.CMake/compiler_flags.cmake) if(CMAKE_BUILD_TYPE STREQUAL "Optimized") - include(third_party/cpu_features/add_lib.cmake) - include(.CMake/cpu_extensions.cmake) + set(OQS_OPTIMIZED_BUILD ON) endif() +include(.CMake/compiler_opts.cmake) include(.CMake/alg_support.cmake) @@ -136,7 +143,7 @@ if(NOT CMAKE_BUILD_TYPE STREQUAL "Dependency") if(NOT WIN32) add_custom_target( prettyprint - COMMAND find src tests -name '*.[ch]' | grep -v '/external/' | grep -v 'kem.*/pqclean_' | grep -v 'sig.*/pqclean_' | xargs astyle --options=.astylerc + COMMAND find src tests .CMake -name '*.[ch]' | grep -v '/external/' | grep -v 'kem.*/pqclean_' | grep -v 'sig.*/pqclean_' | xargs astyle --options=.astylerc WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} USES_TERMINAL) endif() diff --git a/scripts/copy_from_pqclean/.CMake/alg_support.cmake/add_enable_by_alg.fragment b/scripts/copy_from_pqclean/.CMake/alg_support.cmake/add_enable_by_alg.fragment index 99ed353531..433d734d42 100644 --- a/scripts/copy_from_pqclean/.CMake/alg_support.cmake/add_enable_by_alg.fragment +++ b/scripts/copy_from_pqclean/.CMake/alg_support.cmake/add_enable_by_alg.fragment @@ -1,43 +1,28 @@ - {% for family in instructions['kems'] %} option(OQS_ENABLE_KEM_{{ family['name']|upper }} "" ON) -{%- for scheme in family['schemes'] %} + {%- for scheme in family['schemes'] %} cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_{{ family['name']|upper }}" OFF) -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['supported_platforms'] -%} -{% for platform in impl['supported_platforms'] -%} -{% for os in platform['operating_systems'] -%} -if ({{ os }} STREQUAL CMAKE_SYSTEM_NAME) -if ({{ impl['cmake_options'] }}) -set(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON) -endif() + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}" {%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%}) + cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) endif() + {%- endfor -%} + {%- endfor -%} + {%- endfor %} {% endfor -%} -{% endfor -%} -{% else -%} -set(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON) -{% endif -%} -{% endfor -%} -{% endfor %} -{% endfor -%} + {% for family in instructions['sigs'] %} option(OQS_ENABLE_SIG_{{ family['name']|upper }} "" ON) -{%- for scheme in family['schemes'] %} + {%- for scheme in family['schemes'] %} cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_{{ family['name']|upper }}" OFF) -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['supported_platforms'] -%} -{% for platform in impl['supported_platforms'] -%} -{% for os in platform['operating_systems'] -%} -if ({{ os }} STREQUAL CMAKE_SYSTEM_NAME) -if ({{ impl['cmake_options'] }}) -set(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON) -endif() + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}" {%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%}) + cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) endif() + {%- endfor -%} + {%- endfor -%} + {%- endfor %} {% endfor -%} -{% endfor -%} -{% else -%} -set(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON) -{% endif -%} -{% endfor -%} -{% endfor %} -{% endfor %} + diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.py b/scripts/copy_from_pqclean/copy_from_pqclean.py index ef9c55cb95..9a09bacc21 100755 --- a/scripts/copy_from_pqclean/copy_from_pqclean.py +++ b/scripts/copy_from_pqclean/copy_from_pqclean.py @@ -9,13 +9,6 @@ import yaml from pathlib import Path -INSTR_MAP = { - "avx2": "OQS_USE_AVX2_INSTRUCTIONS", - "bmi2": "OQS_USE_BMI2_INSTRUCTIONS", - "aes": "OQS_USE_AES_INSTRUCTIONS", - "popcnt": "OQS_USE_POPCNT_INSTRUCTIONS" - } - if 'PQCLEAN_DIR' not in os.environ: print("Must set environment variable PQCLEAN_DIR") exit(1) @@ -67,6 +60,7 @@ def load_instructions(): scheme['metadata']['ind_cca'] = 'true' if (scheme['metadata']['claimed-security'] == "IND-CCA2") else 'false' scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') scheme['scheme_c'] = scheme['scheme'].replace('-', '') + scheme['default_implementation'] = family['default_implementation'] for family in instructions['sigs']: family['type'] = 'sig' family['pqclean_type'] = 'sign' @@ -76,27 +70,27 @@ def load_instructions(): scheme['metadata']['euf_cma'] = 'true' scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') scheme['scheme_c'] = scheme['scheme'].replace('-', '') + scheme['default_implementation'] = family['default_implementation'] return instructions # Copy over all files for a given impl in a family using scheme # Returns list of all relative source files def handle_implementation(impl, family, scheme): - shutil.rmtree(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl)), ignore_errors=True) - srcfolder = os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl)) + shutil.rmtree(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], impl)), ignore_errors=True) + srcfolder = os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], impl)) subprocess.run([ 'cp', '-pr', os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_' + family['pqclean_type'], scheme['pqclean_scheme'], impl), srcfolder ]) - try: - os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl), 'Makefile')) - os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl), 'Makefile.Microsoft_nmake')) + try: + os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], impl), 'Makefile')) + os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], impl), 'Makefile.Microsoft_nmake')) except FileNotFoundError: - pass + pass extensions = [ '.c', '.s' ] return [str(x.relative_to(srcfolder)) for x in Path(srcfolder).iterdir() if x.suffix.lower() in extensions] - instructions = load_instructions() @@ -107,51 +101,28 @@ def handle_implementation(impl, family, scheme): os.mkdir(os.path.join('src', family['type'], family['name'])) except: pass - # If no scheme['implementation'] given, get the list from META.yml and add all implementations - try: - impl = scheme['implementation'] - except KeyError: - impl = None - if (impl): + if 'implementation' in scheme: + impl = scheme['implementation'] srcs = handle_implementation(impl, family, scheme) if (scheme['sources']): assert(len(scheme['sources']) == len(srcs)) - # in any case: add 'sources' to implementation(s) + # in any case: add 'sources' to implementation(s) # Only retain this 1 implementation: scheme['metadata']['implementations'] = [imp for imp in scheme['metadata']['implementations'] if imp['name'] == impl] scheme['metadata']['implementations'][0]['sources'] = srcs - else: + # If no scheme['implementation'] given, get the list from META.yml and add all implementations for impl in scheme['metadata']['implementations']: srcs = handle_implementation(impl['name'], family, scheme) - # in any case: add 'sources' to implementation(s) + # in any case: add 'sources' to implementation(s) impl['sources'] = srcs - # generate 'oqs_unsupported.c' files to permit building also on platforms where the optimized code cannot compile - if (impl['name'] != 'clean'): - unsupported_filename = os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl['name']) , 'oqs_unsupported.c') - with open(unsupported_filename, 'w') as gen_file: - gen_file.write('int {}_{}_unsupported=1;\n'.format(scheme['pqclean_scheme'].replace('-','_'), impl['name'])) # also add suitable defines: - try: - comp_opts = "" - rt_opts = "" - cmake_opts = "" + try: for i in range(len(impl['supported_platforms'])): req = impl['supported_platforms'][i] - if (req['architecture'] == "x86_64"): - for i in range(len(req['required_flags'])): - rt_opts = rt_opts + "OQS_RT_cpu_flags()."+req['required_flags'][i].upper()+"_INSTRUCTIONS " - cmake_opts = cmake_opts + INSTR_MAP[req['required_flags'][i]] + " " - comp_opts = comp_opts + "-m"+req['required_flags'][i] - if (i < len(req['required_flags'])-1): - rt_opts = rt_opts + " && " - cmake_opts = cmake_opts + " AND " - comp_opts = comp_opts + " " - impl['compile_options'] = comp_opts - impl['rt_options'] = rt_opts - impl['cmake_options'] = cmake_opts + impl['required_flags'] = req['required_flags'] except KeyError as ke: - if (impl['name'] != "clean"): + if (impl['name'] != family['default_implementation']): print("No required flags found for %s (KeyError %s on impl %s)\n" % (scheme['scheme'], str(ke), impl['name'])) pass diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.yml b/scripts/copy_from_pqclean/copy_from_pqclean.yml index d212a7a160..34f403f926 100644 --- a/scripts/copy_from_pqclean/copy_from_pqclean.yml +++ b/scripts/copy_from_pqclean/copy_from_pqclean.yml @@ -1,20 +1,21 @@ kems: - - + - name: classic_mceliece + default_implementation: vec schemes: - - + - scheme: "348864" pqclean_scheme: mceliece348864 pretty_name_full: Classic-McEliece-348864 implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "348864f" pqclean_scheme: mceliece348864f pretty_name_full: Classic-McEliece-348864f implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "460896" pqclean_scheme: mceliece460896 pretty_name_full: Classic-McEliece-460896 @@ -26,50 +27,51 @@ kems: pretty_name_full: Classic-McEliece-460896f implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "6688128" pqclean_scheme: mceliece6688128 pretty_name_full: Classic-McEliece-6688128 implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "6688128f" pqclean_scheme: mceliece6688128f pretty_name_full: Classic-McEliece-6688128f implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "6960119" pqclean_scheme: mceliece6960119 pretty_name_full: Classic-McEliece-6960119 implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "6960119f" pqclean_scheme: mceliece6960119f pretty_name_full: Classic-McEliece-6960119f implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "8192128" pqclean_scheme: mceliece8192128 pretty_name_full: Classic-McEliece-8192128 implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - scheme: "8192128f" pqclean_scheme: mceliece8192128f pretty_name_full: Classic-McEliece-8192128f implementation: vec sources: ['aes256ctr.c', 'benes.c', 'bm.c', 'controlbits.c', 'decrypt.c', 'encrypt.c', 'fft.c', 'fft_tr.c', 'gf.c', 'operations.c', 'pk_gen.c', 'sk_gen.c', 'transpose.c', 'util.c', 'vec.c'] - - + - name: kyber + default_implementation: clean schemes: - - + - scheme: "512" pqclean_scheme: kyber512 pretty_name_full: Kyber512 - - + - scheme: "768" pqclean_scheme: kyber768 pretty_name_full: Kyber768 @@ -89,10 +91,11 @@ kems: scheme: "1024_90s" pqclean_scheme: kyber1024-90s pretty_name_full: Kyber1024-90s - - + - name: ledacrypt + default_implementation: leaktime schemes: - - + - scheme: ledakemlt12 pqclean_scheme: ledakemlt12 pretty_name_full: LEDAcryptKEM-LT12 @@ -112,6 +115,7 @@ kems: sources: ['bf_decoding.c', 'dfr_test.c', 'gf2x_arith_mod_xPplusOne.c', 'gf2x_arith.c', 'H_Q_matrices_generation.c', 'kem.c', 'niederreiter.c', 'rng.c', 'sort.c', 'utils.c'] - name: newhope + default_implementation: clean schemes: - scheme: "512cca" @@ -127,6 +131,7 @@ kems: sources: ['cpapke.c', 'kem.c', 'ntt.c', 'poly.c', 'precomp.c', 'reduce.c', 'verify.c'] - name: ntru + default_implementation: clean schemes: - scheme: hps2048509 @@ -154,6 +159,7 @@ kems: sources: ['kem.c', 'owcpa.c', 'pack3.c', 'packq.c', 'poly.c', 'sample.c', 'verify.c'] - name: saber + default_implementation: clean schemes: - scheme: lightsaber @@ -175,6 +181,7 @@ kems: sources: ['cbd.c', 'kem.c', 'pack_unpack.c', 'poly.c', 'poly_mul.c', 'SABER_indcpa.c', 'verify.c'] - name: threebears + default_implementation: clean schemes: - scheme: babybear @@ -213,8 +220,9 @@ kems: implementation: clean sources: ['kem.c', 'melas_fec.c', 'ring.c', 'threebears.c'] sigs: - - + - name: dilithium + default_implementation: clean schemes: - scheme: "2" @@ -233,6 +241,7 @@ sigs: signed_msg_order: sig_then_msg - name: falcon + default_implementation: clean schemes: - scheme: "512" @@ -250,6 +259,7 @@ sigs: signed_msg_order: falcon - name: mqdss + default_implementation: clean schemes: - scheme: "31_48" @@ -267,6 +277,7 @@ sigs: signed_msg_order: sig_then_msg - name: rainbow + default_implementation: clean schemes: - scheme: "Ia_classic" @@ -333,6 +344,7 @@ sigs: signed_msg_order: msg_then_sig - name: sphincs + default_implementation: clean schemes: - scheme: haraka_128f_robust diff --git a/scripts/copy_from_pqclean/src/CMakeLists.txt/add_alg_objects.fragment b/scripts/copy_from_pqclean/src/CMakeLists.txt/add_alg_objects.fragment index 24ef0832f0..92b49fc86e 100644 --- a/scripts/copy_from_pqclean/src/CMakeLists.txt/add_alg_objects.fragment +++ b/scripts/copy_from_pqclean/src/CMakeLists.txt/add_alg_objects.fragment @@ -1,9 +1,11 @@ {%- for family in instructions['kems'] %} if(OQS_ENABLE_KEM_{{ family['name']|upper }}) add_subdirectory(kem/{{ family['name'] }}) + set(KEM_OBJS ${KEM_OBJS} {% raw -%}${{%- endraw-%}{{ family['name']|upper }}_OBJS}) endif(){% endfor %} {%- for family in instructions['sigs'] %} if(OQS_ENABLE_SIG_{{ family['name']|upper }}) add_subdirectory(sig/{{ family['name'] }}) + set(SIG_OBJS ${SIG_OBJS} {% raw -%}${{%- endraw-%}{{ family['name']|upper }}_OBJS}) endif(){% endfor %} diff --git a/scripts/copy_from_pqclean/src/CMakeLists.txt/add_template_objects.fragment b/scripts/copy_from_pqclean/src/CMakeLists.txt/add_template_objects.fragment deleted file mode 100644 index 95563876ec..0000000000 --- a/scripts/copy_from_pqclean/src/CMakeLists.txt/add_template_objects.fragment +++ /dev/null @@ -1,15 +0,0 @@ - -{% for family in instructions['kems'] -%} - {% for scheme in family['schemes'] -%} - {% for impl in scheme['metadata']['implementations'] -%} - $ - {% endfor -%} - {% endfor -%} -{% endfor -%} -{% for family in instructions['sigs'] -%} - {% for scheme in family['schemes'] -%} - {% for impl in scheme['metadata']['implementations'] -%} - $ - {% endfor -%} - {% endfor -%} -{% endfor -%} diff --git a/scripts/copy_from_pqclean/src/kem/family/CMakeLists.txt b/scripts/copy_from_pqclean/src/kem/family/CMakeLists.txt index 9ed2c21223..c474471aed 100644 --- a/scripts/copy_from_pqclean/src/kem/family/CMakeLists.txt +++ b/scripts/copy_from_pqclean/src/kem/family/CMakeLists.txt @@ -1,33 +1,26 @@ # This file was generated by # scripts/copy_from_pqclean/copy_from_pqclean.py -{% for scheme in schemes %} +{%- for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] -%} + {%- if impl['name'] == scheme['default_implementation'] %} + if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}) - {% for impl in scheme['metadata']['implementations'] %} -{%- if impl['name']|upper != "CLEAN" %} + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + + {%- else %} + if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}) -{%- endif %} - set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS {% for source in impl['sources']|sort %}pqclean_{{ scheme['pqclean_scheme'].replace('-','_') }}_{{ impl['name'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor %}) -{%- if impl['name']|upper != "CLEAN" %} -else() - set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}/oqs_unsupported.c ) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + {%- endif %} + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) + {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{{ flag }} {%- endfor -%}) + {%- endif %} + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() -{%- endif %} - {% endfor %} -{% if scheme['metadata']['implementations']|length > 1 -%} -set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS} kem_{{ family }}_{{ scheme['scheme_c'] }}.c ) -{% else %} -set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS} kem_{{ family }}_{{ scheme['scheme_c'] }}.c ) -{% endif %} -endif() -{% endfor %} - -{% for scheme in schemes %} - {% for impl in scheme['metadata']['implementations'] %} -add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS}) -target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/{{ family }}/pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}) -target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_options'] }}) - {% endfor %} -{% endfor %} + {%- endfor -%} +{%- endfor %} +set({{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} PARENT_SCOPE) diff --git a/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c b/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c index 1cd94c55c7..6ca53894d0 100644 --- a/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c @@ -3,7 +3,7 @@ #include {% for scheme in schemes -%} -#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}) OQS_KEM *OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_new() { @@ -29,103 +29,67 @@ OQS_KEM *OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_new() { return kem; } -{% for impl in scheme['metadata']['implementations'] %} -{% if impl['name']|upper != "CLEAN" -%} +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + #if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) -{% endif -%} int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -{% if impl['name']|upper != "CLEAN" -%} #endif -{% endif -%} -{% endfor %} + {%- endfor %} OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_keypair(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_keypair(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else -// Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_keypair(public_key, secret_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_keypair(public_key, secret_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#endif -{% endif -%} + {%- endif %} } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else -// Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#endif -{% endif -%} + {%- endif %} } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else -// Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} + {%- endif %} } #endif diff --git a/scripts/copy_from_pqclean/src/oqsconfig.h.cmake/add_alg_enable_defines.fragment b/scripts/copy_from_pqclean/src/oqsconfig.h.cmake/add_alg_enable_defines.fragment index af4df95695..82d5d9b8df 100644 --- a/scripts/copy_from_pqclean/src/oqsconfig.h.cmake/add_alg_enable_defines.fragment +++ b/scripts/copy_from_pqclean/src/oqsconfig.h.cmake/add_alg_enable_defines.fragment @@ -1,23 +1,22 @@ {% for family in instructions['kems'] %} + #cmakedefine OQS_ENABLE_KEM_{{ family['name']|upper }} 1 -{%- for scheme in family['schemes'] %} + {%- for scheme in family['schemes'] %} #cmakedefine OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} 1 -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name']|upper != "CLEAN" -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} #cmakedefine OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1 -{%- endif -%} -{% endfor -%} -{% endfor %} + {%- endfor -%} + {%- endfor -%} {% endfor -%} {% for family in instructions['sigs'] %} -#cmakedefine OQS_ENABLE_SIG_{{ family['name']|upper }} -{%- for scheme in family['schemes'] %} + +#cmakedefine OQS_ENABLE_SIG_{{ family['name']|upper }} 1 + {%- for scheme in family['schemes'] %} #cmakedefine OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} 1 -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name']|upper != "CLEAN" -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} #cmakedefine OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1 -{%- endif -%} -{% endfor -%} -{% endfor %} + {%- endfor -%} + {%- endfor -%} {% endfor %} + diff --git a/scripts/copy_from_pqclean/src/sig/family/CMakeLists.txt b/scripts/copy_from_pqclean/src/sig/family/CMakeLists.txt index 1ef56c13f7..ec3b63eb01 100644 --- a/scripts/copy_from_pqclean/src/sig/family/CMakeLists.txt +++ b/scripts/copy_from_pqclean/src/sig/family/CMakeLists.txt @@ -1,33 +1,26 @@ # This file was generated by # scripts/copy_from_pqclean/copy_from_pqclean.py -{% for scheme in schemes %} +{%- for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] -%} + {%- if impl['name'] == scheme['default_implementation'] %} + if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}) - {% for impl in scheme['metadata']['implementations'] %} -{%- if impl['name']|upper != "CLEAN" %} + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT sig_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + + {%- else %} + if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}) -{%- endif %} - set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS {% for source in impl['sources']|sort %}pqclean_{{ scheme['pqclean_scheme'].replace('-','_') }}_{{ impl['name'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor %}) -{%- if impl['name']|upper != "CLEAN" %} -else() - set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}/oqs_unsupported.c ) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + {%- endif %} + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) + {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{{ flag }} {%- endfor -%}) + {%- endif %} + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() -{%- endif %} - {% endfor %} -{% if scheme['metadata']['implementations']|length > 1 -%} -set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS} sig_{{ family }}_{{ scheme['scheme_c'] }}.c ) -{% else %} -set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS} sig_{{ family }}_{{ scheme['scheme_c'] }}.c ) -{% endif %} -endif() -{% endfor %} - -{% for scheme in schemes %} - {% for impl in scheme['metadata']['implementations'] %} -add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS}) -target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/{{ family }}/pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}) -target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_options'] }}) - {% endfor %} -{% endfor %} + {%- endfor -%} +{%- endfor %} +set({{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} PARENT_SCOPE) diff --git a/scripts/copy_from_pqclean/src/sig/family/sig_scheme.c b/scripts/copy_from_pqclean/src/sig/family/sig_scheme.c index f91d1eda3b..b1b3c98526 100644 --- a/scripts/copy_from_pqclean/src/sig/family/sig_scheme.c +++ b/scripts/copy_from_pqclean/src/sig/family/sig_scheme.c @@ -3,7 +3,7 @@ #include {% for scheme in schemes -%} -#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }} +#if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}) OQS_SIG *OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_new() { @@ -28,103 +28,67 @@ OQS_SIG *OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_new() { return sig; } -{% for impl in scheme['metadata']['implementations'] %} -{% if impl['name']|upper != "CLEAN" -%} +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); +int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + #if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) -{% endif -%} int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); -{% if impl['name']|upper != "CLEAN" -%} #endif -{% endif -%} -{% endfor %} + {%- endfor %} OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(public_key, secret_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_keypair(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(public_key, secret_key); + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_keypair(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else - // Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_keypair(public_key, secret_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_keypair(public_key, secret_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#endif -{% endif -%} + {%- endif %} } OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else - // Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#endif -{% endif -%} + {%- endif %} } OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { -{% if scheme['metadata']['implementations']|length > 1 -%} -{% for impl in scheme['metadata']['implementations'] -%} -{% if impl['name'] != 'clean' -%} -#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} -#ifdef OQS_ENABLE_CPUFEATURES - if ({{ impl['rt_options'] }}) { + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} +#if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if ({%- for flag in impl['required_flags'] -%}available_cpu_extensions.{{ flag|upper }}_ENABLED{%- if not loop.last %} && {% endif -%}{%- endfor -%}) { return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } else { - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } #else - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -#endif -{% endif -%} -{% endfor -%} -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} -#else - // Assume CLEAN always compiles - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -{% else %} - return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -{% endif -%} -{% if scheme['metadata']['implementations']|length > 1 -%} + {%- endfor %} + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['default_implementation']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif -{% endif -%} + {%- endif %} } #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6e0b3b2d39..8a439146e0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,39 +23,51 @@ endif() ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_OBJECTS_START if(OQS_ENABLE_KEM_CLASSIC_MCELIECE) add_subdirectory(kem/classic_mceliece) + set(KEM_OBJS ${KEM_OBJS} ${CLASSIC_MCELIECE_OBJS}) endif() if(OQS_ENABLE_KEM_KYBER) add_subdirectory(kem/kyber) + set(KEM_OBJS ${KEM_OBJS} ${KYBER_OBJS}) endif() if(OQS_ENABLE_KEM_LEDACRYPT) add_subdirectory(kem/ledacrypt) + set(KEM_OBJS ${KEM_OBJS} ${LEDACRYPT_OBJS}) endif() if(OQS_ENABLE_KEM_NEWHOPE) add_subdirectory(kem/newhope) + set(KEM_OBJS ${KEM_OBJS} ${NEWHOPE_OBJS}) endif() if(OQS_ENABLE_KEM_NTRU) add_subdirectory(kem/ntru) + set(KEM_OBJS ${KEM_OBJS} ${NTRU_OBJS}) endif() if(OQS_ENABLE_KEM_SABER) add_subdirectory(kem/saber) + set(KEM_OBJS ${KEM_OBJS} ${SABER_OBJS}) endif() if(OQS_ENABLE_KEM_THREEBEARS) add_subdirectory(kem/threebears) + set(KEM_OBJS ${KEM_OBJS} ${THREEBEARS_OBJS}) endif() if(OQS_ENABLE_SIG_DILITHIUM) add_subdirectory(sig/dilithium) + set(SIG_OBJS ${SIG_OBJS} ${DILITHIUM_OBJS}) endif() if(OQS_ENABLE_SIG_FALCON) add_subdirectory(sig/falcon) + set(SIG_OBJS ${SIG_OBJS} ${FALCON_OBJS}) endif() if(OQS_ENABLE_SIG_MQDSS) add_subdirectory(sig/mqdss) + set(SIG_OBJS ${SIG_OBJS} ${MQDSS_OBJS}) endif() if(OQS_ENABLE_SIG_RAINBOW) add_subdirectory(sig/rainbow) + set(SIG_OBJS ${SIG_OBJS} ${RAINBOW_OBJS}) endif() if(OQS_ENABLE_SIG_SPHINCS) add_subdirectory(sig/sphincs) + set(SIG_OBJS ${SIG_OBJS} ${SPHINCS_OBJS}) endif() ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_OBJECTS_END @@ -63,103 +75,6 @@ add_library(oqs kem/kem.c ${KEM_OBJS} sig/sig.c ${SIG_OBJS} -##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_TEMPLATE_OBJECTS_START -$ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_TEMPLATE_OBJECTS_END $) if(DEFINED SANITIZER_LD_FLAGS) target_link_libraries(oqs PUBLIC ${SANITIZER_LD_FLAGS}) @@ -168,10 +83,6 @@ if(OQS_USE_OPENSSL) target_link_libraries(oqs PUBLIC ${OPENSSL_CRYPTO_LIBRARY}) target_include_directories(oqs PUBLIC ${OPENSSL_INCLUDE_DIR}) endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(oqs PRIVATE ${CPUFEATURES_LIBRARY}) -endif() - set_target_properties(oqs PROPERTIES diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index a1fa17e38d..9aef49090b 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -8,7 +8,27 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang") add_compile_options(-Wconversion) endif() -include(crypto_impl.cmake) +if(OQS_USE_AES_OPENSSL) + set(AES_IMPL aes/aes_ossl.c) +else() + set(AES_IMPL aes/aes_c.c) +endif() + +if(OQS_USE_SHA2_OPENSSL) + set(SHA2_IMPL sha2/sha2_ossl.c) +else() + set(SHA2_IMPL sha2/sha2_c.c) +endif() + +set(SHA3_IMPL sha3/sha3_c.c) +if(OQS_USE_SHA3_OPENSSL) + set(SHA3_IMPL ${SHA3_IMPL} sha3/sha3_ossl.c) +endif() +if(OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS) + set(SHA3_IMPL ${SHA3_IMPL} sha3/sha3x4.c) + add_compile_options(-mavx2) + add_compile_options(-maes) +endif() add_library(common OBJECT ${AES_IMPL} ${SHA2_IMPL} @@ -16,9 +36,6 @@ add_library(common OBJECT ${AES_IMPL} common.c rand/rand.c rand/rand_nist.c) -if(DEFINED CPUFEATURES_INCLUDE_DIR) - target_include_directories(common PUBLIC ${CPUFEATURES_INCLUDE_DIR}) -endif() if(OQS_USE_OPENSSL) target_include_directories(common PRIVATE ${OPENSSL_INCLUDE_DIR}) endif() diff --git a/src/common/common.c b/src/common/common.c index 116dff1f03..2c8abfce50 100644 --- a/src/common/common.c +++ b/src/common/common.c @@ -4,97 +4,92 @@ #include #include - #if defined(_WIN32) #include #endif -#ifdef OQS_ENABLE_CPUFEATURES -#include +#if defined(OQS_OPTIMIZED_BUILD) -#if defined(CPU_FEATURES_ARCH_X86) -#include -#elif defined(CPU_FEATURES_ARCH_ARM) -#include -#elif defined(CPU_FEATURES_ARCH_AARCH64) -#include -#endif +static OQS_CPU_EXTENSIONS available_cpu_extensions = { 0 }; +static unsigned int available_cpu_extensions_set = 0; -static OQS_RT rt_cpu_flags = {0}; -static int rt_cpu_flags_initialized = 0; +#if defined(ARCH_X86_64) -OQS_API void OQS_init(void) { -#if defined(CPU_FEATURES_ARCH_X86) - const X86Features features = GetX86Info().features; +/* The code here, including x86_64_helpers.h, has been taken from: + * https://github.com/vectorclass/version2 + * https://github.com/google/cpu_features/blob/master/src/cpuinfo_x86.c + */ - if (features.avx) { - rt_cpu_flags.AVX_INSTRUCTIONS = 1; - } - if (features.avx2) { - rt_cpu_flags.AVX2_INSTRUCTIONS = 1; - } - if (features.avx512bw & features.avx512dq & features.avx512f) { - rt_cpu_flags.AVX512_INSTRUCTIONS = 1; - } - if (features.bmi1) { - rt_cpu_flags.BMI_INSTRUCTIONS = 1; - } - if (features.bmi2) { - rt_cpu_flags.BMI2_INSTRUCTIONS = 1; - } - if (features.fma3) { - rt_cpu_flags.FMA_INSTRUCTIONS = 1; - } - if (features.fma4) { - rt_cpu_flags.FMA4_INSTRUCTIONS = 1; - } - if (features.mmx) { - rt_cpu_flags.MMX_INSTRUCTIONS = 1; - } - if (features.popcnt) { - rt_cpu_flags.POPCNT_INSTRUCTIONS = 1; - } - if (features.sse) { - rt_cpu_flags.SSE_INSTRUCTIONS = 1; - } - if (features.sse2) { - rt_cpu_flags.SSE2_INSTRUCTIONS = 1; - } - if (features.sse3) { - rt_cpu_flags.SSE3_INSTRUCTIONS = 1; - } - if (features.sse4a) { - rt_cpu_flags.SSE4A_INSTRUCTIONS = 1; - } -#elif defined(CPU_FEATURES_ARCH_ARM) - const ArmFeatures features = GetArmInfo().features; +#include "x86_64_helpers.h" - if (features.neon) { - rt_cpu_flags.NEON_INSTRUCTIONS = 1; +static void set_available_cpu_extensions_x86_64(void) { + cpuid_out leaf_1; + cpuid(&leaf_1, 1); + if (leaf_1.eax == 0) { + return; } -#elif defined(CPU_FEATURES_ARCH_AARCH64) - const Aarch64Features features = GetAarch64Info().features; - if (features.asimd) { - rt_cpu_flags.NEON_INSTRUCTIONS = 1; - } -#endif - if (features.aes) { - rt_cpu_flags.AES_INSTRUCTIONS = 1; + cpuid_out leaf_7; + cpuid(&leaf_7, 7); + + const unsigned int has_xsave = is_bit_set(leaf_1.ecx, 26); + const unsigned int has_osxsave = is_bit_set(leaf_1.ecx, 27); + const uint32_t xcr0_eax = (has_xsave && has_osxsave) ? xgetbv_eax(0) : 0; + + available_cpu_extensions.AES_ENABLED = is_bit_set(leaf_1.ecx, 25); + if (has_mask(xcr0_eax, MASK_XMM | MASK_YMM)) { + available_cpu_extensions.AVX_ENABLED = is_bit_set(leaf_1.ecx, 28); + available_cpu_extensions.AVX2_ENABLED = is_bit_set(leaf_7.ebx, 5); + } + available_cpu_extensions.POPCNT_ENABLED = is_bit_set(leaf_1.ecx, 23); + available_cpu_extensions.BMI_ENABLED = is_bit_set(leaf_7.ebx, 3); + available_cpu_extensions.BMI2_ENABLED = is_bit_set(leaf_7.ebx, 8); + + if (has_mask(xcr0_eax, MASK_XMM)) { + available_cpu_extensions.SSE_ENABLED = is_bit_set(leaf_1.edx, 25); + available_cpu_extensions.SSE2_ENABLED = is_bit_set(leaf_1.edx, 26); + available_cpu_extensions.SSE3_ENABLED = is_bit_set(leaf_1.ecx, 0); } -} -OQS_API OQS_RT OQS_RT_cpu_flags(void) { - if (!rt_cpu_flags_initialized) { - OQS_init(); - rt_cpu_flags_initialized = 1; + if (has_mask(xcr0_eax, MASK_XMM | MASK_YMM | MASK_MASKREG | MASK_ZMM0_15 | MASK_ZMM16_31)) { + unsigned int avx512f = is_bit_set(leaf_7.ebx, 16); + unsigned int avx512bw = is_bit_set(leaf_7.ebx, 30); + unsigned int avx512dq = is_bit_set(leaf_7.ebx, 17); + if (avx512f && avx512bw && avx512dq) { + available_cpu_extensions.AVX512_ENABLED = 1; + } } - return rt_cpu_flags; } -#else /* OQS_ENABLE_CPUFEATURES */ +#elif defined(ARCH_ARM_ANY) +static void set_available_cpu_extensions_arm(void) { + //TODO +} +#endif /* ARCH_X86_64 or ARCH_ARM_ANY */ +OQS_API OQS_CPU_EXTENSIONS OQS_get_available_CPU_extensions(void) { + if (!available_cpu_extensions_set) { +#if defined(ARCH_X86_64) + set_available_cpu_extensions_x86_64(); +#elif defined(ARCH_ARM_ANY) + set_available_cpu_extensions_arm(); +#endif /* ARCH_X86_64 or ARCH_ARM_ANY */ + available_cpu_extensions_set = 1; + } + return available_cpu_extensions; +} +#endif /* OQS_OPTIMIZED_BUILD */ + OQS_API void OQS_init(void) { +#if defined(OQS_OPTIMIZED_BUILD) + if (!available_cpu_extensions_set) { +#if defined(ARCH_X86_64) + set_available_cpu_extensions_x86_64(); +#elif defined(ARCH_ARM_ANY) + set_available_cpu_extensions_arm(); +#endif /* ARCH_X86_64 or ARCH_ARM_ANY */ + available_cpu_extensions_set = 1; + } +#endif /* OQS_OPTIMIZED_BUILD */ } -#endif /* OQS_ENABLE_CPUFEATURES */ OQS_API void OQS_MEM_cleanse(void *ptr, size_t len) { #if defined(_WIN32) diff --git a/src/common/common.h b/src/common/common.h index f5aae603eb..8dc5f08409 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -68,54 +68,51 @@ typedef enum { OQS_EXTERNAL_LIB_ERROR_OPENSSL = 50, } OQS_STATUS; -#ifdef OQS_ENABLE_CPUFEATURES +#if defined(OQS_OPTIMIZED_BUILD) + +/** + * Architecture macros. + */ +#if (defined(_M_X64) || defined(__x86_64__)) +#define ARCH_X86_64 +#elif (defined(__arm__) || defined(_M_ARM) || defined(__aarch64__)) +#define ARCH_ARM_ANY +#endif + /** * CPU runtime detection flags */ +#if defined(ARCH_X86_64) typedef struct { - int AES_INSTRUCTIONS; ///< Runtime CPU feature flag indicating AES support - - int AVX_INSTRUCTIONS; ///< Runtime CPU feature flag indicating AVX support - - int AVX2_INSTRUCTIONS; ///< Runtime CPU feature flag indicating AVX2 support - - int AVX512_INSTRUCTIONS; ///< Runtime CPU feature flag indicating AVX512 support - - int BMI_INSTRUCTIONS; ///< Runtime CPU feature flag indicating BMI support - - int BMI2_INSTRUCTIONS; ///< Runtime CPU feature flag indicating BMI2 support - - int FMA_INSTRUCTIONS; ///< Runtime CPU feature flag indicating FMA support - - int FMA4_INSTRUCTIONS; ///< Runtime CPU feature flag indicating FMA4 support - - int MMX_INSTRUCTIONS; ///< Runtime CPU feature flag indicating MMX support - - int POPCNT_INSTRUCTIONS; ///< Runtime CPU feature flag indicating POPCNT support - - int SSE_INSTRUCTIONS; ///< Runtime CPU feature flag indicating SSE support - - int SSE2_INSTRUCTIONS; ///< Runtime CPU feature flag indicating SSE2 support - - int SSE3_INSTRUCTIONS; ///< Runtime CPU feature flag indicating SSE3 support - - int SSE4A_INSTRUCTIONS; ///< Runtime CPU feature flag indicating SSE4A support - - int NEON_INSTRUCTIONS; ///< Runtime CPU feature flag indicating NEON support -} OQS_RT; + unsigned int AES_ENABLED; + unsigned int AVX_ENABLED; + unsigned int AVX2_ENABLED; + unsigned int AVX512_ENABLED; + unsigned int BMI_ENABLED; + unsigned int BMI2_ENABLED; + unsigned int POPCNT_ENABLED; + unsigned int SSE_ENABLED; + unsigned int SSE2_ENABLED; + unsigned int SSE3_ENABLED; +} OQS_CPU_EXTENSIONS; +#elif defined(ARCH_ARM_ANY) +typedef struct { + unsigned int NEON_ENABLED; +} OQS_CPU_EXTENSIONS; +#endif /** - * CPU runtime detection flags + * Returns a list of available CPU extensions. * - * \return Struct of type OQS_RT containing the CPU runtime detection flags + * \return Struct of type OQS_CPU_EXTENSIONS containing flags for runtime CPU extension detection. */ -OQS_API OQS_RT OQS_RT_cpu_flags(void); +OQS_API OQS_CPU_EXTENSIONS OQS_get_available_CPU_extensions(void); -#endif /* OQS_ENABLE_CPUFEATURES */ +#endif /* OQS_OPTIMIZED_BUILD */ /** - * Initialization function. - * For now, it sets the CPU runtime feature flags + * This currently only sets the values in the OQS_CPU_EXTENSIONS, + * and so has effect only when OQS_OPTIMIZED_BUILD is set. */ OQS_API void OQS_init(void); diff --git a/src/common/crypto_impl.cmake b/src/common/crypto_impl.cmake deleted file mode 100644 index e87ec21733..0000000000 --- a/src/common/crypto_impl.cmake +++ /dev/null @@ -1,21 +0,0 @@ -# The *_IMPL variables are absolute paths -# as they are needed in the tests/ sub-directory. -if(OQS_USE_AES_OPENSSL) - set(AES_IMPL ${CMAKE_CURRENT_LIST_DIR}/aes/aes_ossl.c) -else() - set(AES_IMPL ${CMAKE_CURRENT_LIST_DIR}/aes/aes_c.c) -endif() - -if(OQS_USE_SHA2_OPENSSL) - set(SHA2_IMPL ${CMAKE_CURRENT_LIST_DIR}/sha2/sha2_ossl.c) -else() - set(SHA2_IMPL ${CMAKE_CURRENT_LIST_DIR}/sha2/sha2_c.c) -endif() - -set(SHA3_IMPL ${CMAKE_CURRENT_LIST_DIR}/sha3/sha3_c.c) -if(OQS_USE_SHA3_OPENSSL) - set(SHA3_IMPL ${SHA3_IMPL} ${CMAKE_CURRENT_LIST_DIR}/sha3/sha3_ossl.c) -endif() -if(OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS) - set(SHA3_IMPL ${SHA3_IMPL} ${CMAKE_CURRENT_LIST_DIR}/sha3/sha3x4.c) -endif() diff --git a/src/common/sha3/sha3x4.c b/src/common/sha3/sha3x4.c index ccfa3840a5..7792af2b92 100644 --- a/src/common/sha3/sha3x4.c +++ b/src/common/sha3/sha3x4.c @@ -17,11 +17,13 @@ static uint64_t load64(const unsigned char *x) { } static void store64(uint8_t *x, uint64_t u) { - unsigned int i; - - for (i = 0; i < 8; ++i) { - x[i] = u; - u >>= 8; + union { + uint64_t val; + uint8_t bytes[8]; + } v; + v.val = u; + for (unsigned int i = 0; i < 8; ++i) { + x[i] = v.bytes[i]; } } diff --git a/src/common/x86_64_helpers.h b/src/common/x86_64_helpers.h new file mode 100644 index 0000000000..50150a461f --- /dev/null +++ b/src/common/x86_64_helpers.h @@ -0,0 +1,61 @@ +#include + +#if defined(_MSC_VER) +#include +#include +#endif + +#define MASK_XMM 0x2 +#define MASK_YMM 0x4 +#define MASK_MASKREG 0x20 +#define MASK_ZMM0_15 0x40 +#define MASK_ZMM16_31 0x80 + +typedef struct { + uint32_t eax; + uint32_t ebx; + uint32_t ecx; + uint32_t edx; +} cpuid_out; + +static inline uint32_t xgetbv_eax(uint32_t xcr) { +#if defined(__GNUC__) || defined(__clang__) + uint32_t eax; + __asm__ ( ".byte 0x0f, 0x01, 0xd0" : "=a"(eax) : "c"(xcr)); + return eax; +#elif defined(_MSC_VER) + return _xgetbv(xcr) & 0xFFFF; +#else +#error "Only GCC, Clang, and MSVC are supported." +#endif +} + +static unsigned int has_mask(const uint32_t value, const uint32_t mask) { + return (value & mask) == mask; +} + +static inline unsigned int is_bit_set(const uint32_t val, const unsigned int bit_pos) { + return val & (1 << bit_pos) ? 1 : 0; +} + +static inline void cpuid(cpuid_out *out, const uint32_t eax_leaf) { + const uint32_t ecx_leaf = 0; + +#if defined(__GNUC__) || defined(__clang__) + uint32_t eax, ebx, ecx, edx; + __asm__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(eax_leaf), "c"(ecx_leaf) : ); + out->eax = eax; + out->ebx = ebx; + out->ecx = ecx; + out->edx = edx; +#elif defined(_MSC_VER) + uint32_t output[4]; + __cpuidex(output, eax_leaf, ecx_leaf); + out->eax = output[0]; + out->ebx = output[1]; + out->ecx = output[2]; + out->edx = output[3]; +#else +#error "Only GCC, Clang, and MSVC are supported." +#endif +} diff --git a/src/kem/bike/CMakeLists.txt b/src/kem/bike/CMakeLists.txt index a89a730fe0..6a17ebb0f4 100644 --- a/src/kem/bike/CMakeLists.txt +++ b/src/kem/bike/CMakeLists.txt @@ -27,12 +27,14 @@ elseif(OQS_USE_AVX512_INSTRUCTIONS) additional/sampling_avx512.S additional/gf_mul.S) set(CPP_DEFS AVX512) + add_compile_options(-mavx512bw -mavx512dq -mavx512f) elseif(OQS_USE_AVX2_INSTRUCTIONS) set(SRCS ${SRCS} additional/red.S additional/secure_decode_avx2.c additional/sampling_avx2.S additional/gf_mul.S) set(CPP_DEFS AVX2) + add_compile_options(-mavx2) else() set(SRCS ${SRCS} additional/sampling_portable.c additional/secure_decode_portable.c) @@ -52,7 +54,7 @@ set(_BIKE_OBJS $) # CPA variants if(OQS_ENABLE_KEM_bike1_l1_cpa) - add_library(bike1_l1_cpa OBJECT additional/kem_cpa.c ${SRCS}) + add_library(bike1_l1_cpa OBJECT ${SRCS} additional/kem_cpa.c) target_compile_definitions(bike1_l1_cpa PRIVATE INDCPA=1 LEVEL=1 FUNC_PREFIX=OQS_KEM_bike1_l1_cpa ${CPP_DEFS}) set(_BIKE_OBJS ${_BIKE_OBJS} $) endif() diff --git a/src/kem/classic_mceliece/CMakeLists.txt b/src/kem/classic_mceliece/CMakeLists.txt index 7803bb083f..c15c3d54ba 100644 --- a/src/kem/classic_mceliece/CMakeLists.txt +++ b/src/kem/classic_mceliece/CMakeLists.txt @@ -2,205 +2,73 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_classic_mceliece_348864) - -if(OQS_ENABLE_KEM_classic_mceliece_348864_vec) - set(SRCS_CLASSIC_MCELIECE_348864_VEC_SRCS pqclean_mceliece348864_vec/aes256ctr.c pqclean_mceliece348864_vec/benes.c pqclean_mceliece348864_vec/bm.c pqclean_mceliece348864_vec/controlbits.c pqclean_mceliece348864_vec/decrypt.c pqclean_mceliece348864_vec/encrypt.c pqclean_mceliece348864_vec/fft.c pqclean_mceliece348864_vec/fft_tr.c pqclean_mceliece348864_vec/gf.c pqclean_mceliece348864_vec/operations.c pqclean_mceliece348864_vec/pk_gen.c pqclean_mceliece348864_vec/sk_gen.c pqclean_mceliece348864_vec/transpose.c pqclean_mceliece348864_vec/util.c pqclean_mceliece348864_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_348864_VEC_SRCS pqclean_classic_mceliece348864_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_348864_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_348864_VEC_SRCS} kem_classic_mceliece_348864.c ) - + add_library(classic_mceliece_348864_vec OBJECT kem_classic_mceliece_348864.c pqclean_mceliece348864_vec/aes256ctr.c pqclean_mceliece348864_vec/benes.c pqclean_mceliece348864_vec/bm.c pqclean_mceliece348864_vec/controlbits.c pqclean_mceliece348864_vec/decrypt.c pqclean_mceliece348864_vec/encrypt.c pqclean_mceliece348864_vec/fft.c pqclean_mceliece348864_vec/fft_tr.c pqclean_mceliece348864_vec/gf.c pqclean_mceliece348864_vec/operations.c pqclean_mceliece348864_vec/pk_gen.c pqclean_mceliece348864_vec/sk_gen.c pqclean_mceliece348864_vec/transpose.c pqclean_mceliece348864_vec/util.c pqclean_mceliece348864_vec/vec.c) + target_include_directories(classic_mceliece_348864_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_348864_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece348864_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_348864f) - -if(OQS_ENABLE_KEM_classic_mceliece_348864f_vec) - set(SRCS_CLASSIC_MCELIECE_348864F_VEC_SRCS pqclean_mceliece348864f_vec/aes256ctr.c pqclean_mceliece348864f_vec/benes.c pqclean_mceliece348864f_vec/bm.c pqclean_mceliece348864f_vec/controlbits.c pqclean_mceliece348864f_vec/decrypt.c pqclean_mceliece348864f_vec/encrypt.c pqclean_mceliece348864f_vec/fft.c pqclean_mceliece348864f_vec/fft_tr.c pqclean_mceliece348864f_vec/gf.c pqclean_mceliece348864f_vec/operations.c pqclean_mceliece348864f_vec/pk_gen.c pqclean_mceliece348864f_vec/sk_gen.c pqclean_mceliece348864f_vec/transpose.c pqclean_mceliece348864f_vec/util.c pqclean_mceliece348864f_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_348864F_VEC_SRCS pqclean_classic_mceliece348864f_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_348864F_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_348864F_VEC_SRCS} kem_classic_mceliece_348864f.c ) - + add_library(classic_mceliece_348864f_vec OBJECT kem_classic_mceliece_348864f.c pqclean_mceliece348864f_vec/aes256ctr.c pqclean_mceliece348864f_vec/benes.c pqclean_mceliece348864f_vec/bm.c pqclean_mceliece348864f_vec/controlbits.c pqclean_mceliece348864f_vec/decrypt.c pqclean_mceliece348864f_vec/encrypt.c pqclean_mceliece348864f_vec/fft.c pqclean_mceliece348864f_vec/fft_tr.c pqclean_mceliece348864f_vec/gf.c pqclean_mceliece348864f_vec/operations.c pqclean_mceliece348864f_vec/pk_gen.c pqclean_mceliece348864f_vec/sk_gen.c pqclean_mceliece348864f_vec/transpose.c pqclean_mceliece348864f_vec/util.c pqclean_mceliece348864f_vec/vec.c) + target_include_directories(classic_mceliece_348864f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_348864f_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece348864f_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_460896) - -if(OQS_ENABLE_KEM_classic_mceliece_460896_vec) - set(SRCS_CLASSIC_MCELIECE_460896_VEC_SRCS pqclean_mceliece460896_vec/aes256ctr.c pqclean_mceliece460896_vec/benes.c pqclean_mceliece460896_vec/bm.c pqclean_mceliece460896_vec/controlbits.c pqclean_mceliece460896_vec/decrypt.c pqclean_mceliece460896_vec/encrypt.c pqclean_mceliece460896_vec/fft.c pqclean_mceliece460896_vec/fft_tr.c pqclean_mceliece460896_vec/gf.c pqclean_mceliece460896_vec/operations.c pqclean_mceliece460896_vec/pk_gen.c pqclean_mceliece460896_vec/sk_gen.c pqclean_mceliece460896_vec/transpose.c pqclean_mceliece460896_vec/util.c pqclean_mceliece460896_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_460896_VEC_SRCS pqclean_classic_mceliece460896_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_460896_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_460896_VEC_SRCS} kem_classic_mceliece_460896.c ) - + add_library(classic_mceliece_460896_vec OBJECT kem_classic_mceliece_460896.c pqclean_mceliece460896_vec/aes256ctr.c pqclean_mceliece460896_vec/benes.c pqclean_mceliece460896_vec/bm.c pqclean_mceliece460896_vec/controlbits.c pqclean_mceliece460896_vec/decrypt.c pqclean_mceliece460896_vec/encrypt.c pqclean_mceliece460896_vec/fft.c pqclean_mceliece460896_vec/fft_tr.c pqclean_mceliece460896_vec/gf.c pqclean_mceliece460896_vec/operations.c pqclean_mceliece460896_vec/pk_gen.c pqclean_mceliece460896_vec/sk_gen.c pqclean_mceliece460896_vec/transpose.c pqclean_mceliece460896_vec/util.c pqclean_mceliece460896_vec/vec.c) + target_include_directories(classic_mceliece_460896_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_460896_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece460896_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_460896f) - -if(OQS_ENABLE_KEM_classic_mceliece_460896f_vec) - set(SRCS_CLASSIC_MCELIECE_460896F_VEC_SRCS pqclean_mceliece460896f_vec/aes256ctr.c pqclean_mceliece460896f_vec/benes.c pqclean_mceliece460896f_vec/bm.c pqclean_mceliece460896f_vec/controlbits.c pqclean_mceliece460896f_vec/decrypt.c pqclean_mceliece460896f_vec/encrypt.c pqclean_mceliece460896f_vec/fft.c pqclean_mceliece460896f_vec/fft_tr.c pqclean_mceliece460896f_vec/gf.c pqclean_mceliece460896f_vec/operations.c pqclean_mceliece460896f_vec/pk_gen.c pqclean_mceliece460896f_vec/sk_gen.c pqclean_mceliece460896f_vec/transpose.c pqclean_mceliece460896f_vec/util.c pqclean_mceliece460896f_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_460896F_VEC_SRCS pqclean_classic_mceliece460896f_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_460896F_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_460896F_VEC_SRCS} kem_classic_mceliece_460896f.c ) - + add_library(classic_mceliece_460896f_vec OBJECT kem_classic_mceliece_460896f.c pqclean_mceliece460896f_vec/aes256ctr.c pqclean_mceliece460896f_vec/benes.c pqclean_mceliece460896f_vec/bm.c pqclean_mceliece460896f_vec/controlbits.c pqclean_mceliece460896f_vec/decrypt.c pqclean_mceliece460896f_vec/encrypt.c pqclean_mceliece460896f_vec/fft.c pqclean_mceliece460896f_vec/fft_tr.c pqclean_mceliece460896f_vec/gf.c pqclean_mceliece460896f_vec/operations.c pqclean_mceliece460896f_vec/pk_gen.c pqclean_mceliece460896f_vec/sk_gen.c pqclean_mceliece460896f_vec/transpose.c pqclean_mceliece460896f_vec/util.c pqclean_mceliece460896f_vec/vec.c) + target_include_directories(classic_mceliece_460896f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_460896f_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece460896f_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_6688128) - -if(OQS_ENABLE_KEM_classic_mceliece_6688128_vec) - set(SRCS_CLASSIC_MCELIECE_6688128_VEC_SRCS pqclean_mceliece6688128_vec/aes256ctr.c pqclean_mceliece6688128_vec/benes.c pqclean_mceliece6688128_vec/bm.c pqclean_mceliece6688128_vec/controlbits.c pqclean_mceliece6688128_vec/decrypt.c pqclean_mceliece6688128_vec/encrypt.c pqclean_mceliece6688128_vec/fft.c pqclean_mceliece6688128_vec/fft_tr.c pqclean_mceliece6688128_vec/gf.c pqclean_mceliece6688128_vec/operations.c pqclean_mceliece6688128_vec/pk_gen.c pqclean_mceliece6688128_vec/sk_gen.c pqclean_mceliece6688128_vec/transpose.c pqclean_mceliece6688128_vec/util.c pqclean_mceliece6688128_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_6688128_VEC_SRCS pqclean_classic_mceliece6688128_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_6688128_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_6688128_VEC_SRCS} kem_classic_mceliece_6688128.c ) - + add_library(classic_mceliece_6688128_vec OBJECT kem_classic_mceliece_6688128.c pqclean_mceliece6688128_vec/aes256ctr.c pqclean_mceliece6688128_vec/benes.c pqclean_mceliece6688128_vec/bm.c pqclean_mceliece6688128_vec/controlbits.c pqclean_mceliece6688128_vec/decrypt.c pqclean_mceliece6688128_vec/encrypt.c pqclean_mceliece6688128_vec/fft.c pqclean_mceliece6688128_vec/fft_tr.c pqclean_mceliece6688128_vec/gf.c pqclean_mceliece6688128_vec/operations.c pqclean_mceliece6688128_vec/pk_gen.c pqclean_mceliece6688128_vec/sk_gen.c pqclean_mceliece6688128_vec/transpose.c pqclean_mceliece6688128_vec/util.c pqclean_mceliece6688128_vec/vec.c) + target_include_directories(classic_mceliece_6688128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_6688128_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece6688128_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_6688128f) - -if(OQS_ENABLE_KEM_classic_mceliece_6688128f_vec) - set(SRCS_CLASSIC_MCELIECE_6688128F_VEC_SRCS pqclean_mceliece6688128f_vec/aes256ctr.c pqclean_mceliece6688128f_vec/benes.c pqclean_mceliece6688128f_vec/bm.c pqclean_mceliece6688128f_vec/controlbits.c pqclean_mceliece6688128f_vec/decrypt.c pqclean_mceliece6688128f_vec/encrypt.c pqclean_mceliece6688128f_vec/fft.c pqclean_mceliece6688128f_vec/fft_tr.c pqclean_mceliece6688128f_vec/gf.c pqclean_mceliece6688128f_vec/operations.c pqclean_mceliece6688128f_vec/pk_gen.c pqclean_mceliece6688128f_vec/sk_gen.c pqclean_mceliece6688128f_vec/transpose.c pqclean_mceliece6688128f_vec/util.c pqclean_mceliece6688128f_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_6688128F_VEC_SRCS pqclean_classic_mceliece6688128f_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_6688128F_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_6688128F_VEC_SRCS} kem_classic_mceliece_6688128f.c ) - + add_library(classic_mceliece_6688128f_vec OBJECT kem_classic_mceliece_6688128f.c pqclean_mceliece6688128f_vec/aes256ctr.c pqclean_mceliece6688128f_vec/benes.c pqclean_mceliece6688128f_vec/bm.c pqclean_mceliece6688128f_vec/controlbits.c pqclean_mceliece6688128f_vec/decrypt.c pqclean_mceliece6688128f_vec/encrypt.c pqclean_mceliece6688128f_vec/fft.c pqclean_mceliece6688128f_vec/fft_tr.c pqclean_mceliece6688128f_vec/gf.c pqclean_mceliece6688128f_vec/operations.c pqclean_mceliece6688128f_vec/pk_gen.c pqclean_mceliece6688128f_vec/sk_gen.c pqclean_mceliece6688128f_vec/transpose.c pqclean_mceliece6688128f_vec/util.c pqclean_mceliece6688128f_vec/vec.c) + target_include_directories(classic_mceliece_6688128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_6688128f_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece6688128f_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_6960119) - -if(OQS_ENABLE_KEM_classic_mceliece_6960119_vec) - set(SRCS_CLASSIC_MCELIECE_6960119_VEC_SRCS pqclean_mceliece6960119_vec/aes256ctr.c pqclean_mceliece6960119_vec/benes.c pqclean_mceliece6960119_vec/bm.c pqclean_mceliece6960119_vec/controlbits.c pqclean_mceliece6960119_vec/decrypt.c pqclean_mceliece6960119_vec/encrypt.c pqclean_mceliece6960119_vec/fft.c pqclean_mceliece6960119_vec/fft_tr.c pqclean_mceliece6960119_vec/gf.c pqclean_mceliece6960119_vec/operations.c pqclean_mceliece6960119_vec/pk_gen.c pqclean_mceliece6960119_vec/sk_gen.c pqclean_mceliece6960119_vec/transpose.c pqclean_mceliece6960119_vec/util.c pqclean_mceliece6960119_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_6960119_VEC_SRCS pqclean_classic_mceliece6960119_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_6960119_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_6960119_VEC_SRCS} kem_classic_mceliece_6960119.c ) - + add_library(classic_mceliece_6960119_vec OBJECT kem_classic_mceliece_6960119.c pqclean_mceliece6960119_vec/aes256ctr.c pqclean_mceliece6960119_vec/benes.c pqclean_mceliece6960119_vec/bm.c pqclean_mceliece6960119_vec/controlbits.c pqclean_mceliece6960119_vec/decrypt.c pqclean_mceliece6960119_vec/encrypt.c pqclean_mceliece6960119_vec/fft.c pqclean_mceliece6960119_vec/fft_tr.c pqclean_mceliece6960119_vec/gf.c pqclean_mceliece6960119_vec/operations.c pqclean_mceliece6960119_vec/pk_gen.c pqclean_mceliece6960119_vec/sk_gen.c pqclean_mceliece6960119_vec/transpose.c pqclean_mceliece6960119_vec/util.c pqclean_mceliece6960119_vec/vec.c) + target_include_directories(classic_mceliece_6960119_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_6960119_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece6960119_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_6960119f) - -if(OQS_ENABLE_KEM_classic_mceliece_6960119f_vec) - set(SRCS_CLASSIC_MCELIECE_6960119F_VEC_SRCS pqclean_mceliece6960119f_vec/aes256ctr.c pqclean_mceliece6960119f_vec/benes.c pqclean_mceliece6960119f_vec/bm.c pqclean_mceliece6960119f_vec/controlbits.c pqclean_mceliece6960119f_vec/decrypt.c pqclean_mceliece6960119f_vec/encrypt.c pqclean_mceliece6960119f_vec/fft.c pqclean_mceliece6960119f_vec/fft_tr.c pqclean_mceliece6960119f_vec/gf.c pqclean_mceliece6960119f_vec/operations.c pqclean_mceliece6960119f_vec/pk_gen.c pqclean_mceliece6960119f_vec/sk_gen.c pqclean_mceliece6960119f_vec/transpose.c pqclean_mceliece6960119f_vec/util.c pqclean_mceliece6960119f_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_6960119F_VEC_SRCS pqclean_classic_mceliece6960119f_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_6960119F_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_6960119F_VEC_SRCS} kem_classic_mceliece_6960119f.c ) - + add_library(classic_mceliece_6960119f_vec OBJECT kem_classic_mceliece_6960119f.c pqclean_mceliece6960119f_vec/aes256ctr.c pqclean_mceliece6960119f_vec/benes.c pqclean_mceliece6960119f_vec/bm.c pqclean_mceliece6960119f_vec/controlbits.c pqclean_mceliece6960119f_vec/decrypt.c pqclean_mceliece6960119f_vec/encrypt.c pqclean_mceliece6960119f_vec/fft.c pqclean_mceliece6960119f_vec/fft_tr.c pqclean_mceliece6960119f_vec/gf.c pqclean_mceliece6960119f_vec/operations.c pqclean_mceliece6960119f_vec/pk_gen.c pqclean_mceliece6960119f_vec/sk_gen.c pqclean_mceliece6960119f_vec/transpose.c pqclean_mceliece6960119f_vec/util.c pqclean_mceliece6960119f_vec/vec.c) + target_include_directories(classic_mceliece_6960119f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_6960119f_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece6960119f_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_8192128) - -if(OQS_ENABLE_KEM_classic_mceliece_8192128_vec) - set(SRCS_CLASSIC_MCELIECE_8192128_VEC_SRCS pqclean_mceliece8192128_vec/aes256ctr.c pqclean_mceliece8192128_vec/benes.c pqclean_mceliece8192128_vec/bm.c pqclean_mceliece8192128_vec/controlbits.c pqclean_mceliece8192128_vec/decrypt.c pqclean_mceliece8192128_vec/encrypt.c pqclean_mceliece8192128_vec/fft.c pqclean_mceliece8192128_vec/fft_tr.c pqclean_mceliece8192128_vec/gf.c pqclean_mceliece8192128_vec/operations.c pqclean_mceliece8192128_vec/pk_gen.c pqclean_mceliece8192128_vec/sk_gen.c pqclean_mceliece8192128_vec/transpose.c pqclean_mceliece8192128_vec/util.c pqclean_mceliece8192128_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_8192128_VEC_SRCS pqclean_classic_mceliece8192128_vec/oqs_unsupported.c ) -endif() - - -set(SRCS_CLASSIC_MCELIECE_8192128_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_8192128_VEC_SRCS} kem_classic_mceliece_8192128.c ) - + add_library(classic_mceliece_8192128_vec OBJECT kem_classic_mceliece_8192128.c pqclean_mceliece8192128_vec/aes256ctr.c pqclean_mceliece8192128_vec/benes.c pqclean_mceliece8192128_vec/bm.c pqclean_mceliece8192128_vec/controlbits.c pqclean_mceliece8192128_vec/decrypt.c pqclean_mceliece8192128_vec/encrypt.c pqclean_mceliece8192128_vec/fft.c pqclean_mceliece8192128_vec/fft_tr.c pqclean_mceliece8192128_vec/gf.c pqclean_mceliece8192128_vec/operations.c pqclean_mceliece8192128_vec/pk_gen.c pqclean_mceliece8192128_vec/sk_gen.c pqclean_mceliece8192128_vec/transpose.c pqclean_mceliece8192128_vec/util.c pqclean_mceliece8192128_vec/vec.c) + target_include_directories(classic_mceliece_8192128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_8192128_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece8192128_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() if(OQS_ENABLE_KEM_classic_mceliece_8192128f) - -if(OQS_ENABLE_KEM_classic_mceliece_8192128f_vec) - set(SRCS_CLASSIC_MCELIECE_8192128F_VEC_SRCS pqclean_mceliece8192128f_vec/aes256ctr.c pqclean_mceliece8192128f_vec/benes.c pqclean_mceliece8192128f_vec/bm.c pqclean_mceliece8192128f_vec/controlbits.c pqclean_mceliece8192128f_vec/decrypt.c pqclean_mceliece8192128f_vec/encrypt.c pqclean_mceliece8192128f_vec/fft.c pqclean_mceliece8192128f_vec/fft_tr.c pqclean_mceliece8192128f_vec/gf.c pqclean_mceliece8192128f_vec/operations.c pqclean_mceliece8192128f_vec/pk_gen.c pqclean_mceliece8192128f_vec/sk_gen.c pqclean_mceliece8192128f_vec/transpose.c pqclean_mceliece8192128f_vec/util.c pqclean_mceliece8192128f_vec/vec.c) -else() - set(SRCS_CLASSIC_MCELIECE_8192128F_VEC_SRCS pqclean_classic_mceliece8192128f_vec/oqs_unsupported.c ) + add_library(classic_mceliece_8192128f_vec OBJECT kem_classic_mceliece_8192128f.c pqclean_mceliece8192128f_vec/aes256ctr.c pqclean_mceliece8192128f_vec/benes.c pqclean_mceliece8192128f_vec/bm.c pqclean_mceliece8192128f_vec/controlbits.c pqclean_mceliece8192128f_vec/decrypt.c pqclean_mceliece8192128f_vec/encrypt.c pqclean_mceliece8192128f_vec/fft.c pqclean_mceliece8192128f_vec/fft_tr.c pqclean_mceliece8192128f_vec/gf.c pqclean_mceliece8192128f_vec/operations.c pqclean_mceliece8192128f_vec/pk_gen.c pqclean_mceliece8192128f_vec/sk_gen.c pqclean_mceliece8192128f_vec/transpose.c pqclean_mceliece8192128f_vec/util.c pqclean_mceliece8192128f_vec/vec.c) + target_include_directories(classic_mceliece_8192128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(classic_mceliece_8192128f_vec PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mceliece8192128f_vec) + set(_CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} $) endif() - - -set(SRCS_CLASSIC_MCELIECE_8192128F_VEC_SRCS ${SRCS_CLASSIC_MCELIECE_8192128F_VEC_SRCS} kem_classic_mceliece_8192128f.c ) - -endif() - - - - -add_library(classic_mceliece_348864_vec OBJECT ${SRCS_CLASSIC_MCELIECE_348864_VEC_SRCS}) -target_include_directories(classic_mceliece_348864_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_348864_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece348864_vec) -target_compile_options(classic_mceliece_348864_vec PUBLIC ) - - - -add_library(classic_mceliece_348864f_vec OBJECT ${SRCS_CLASSIC_MCELIECE_348864F_VEC_SRCS}) -target_include_directories(classic_mceliece_348864f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_348864f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece348864f_vec) -target_compile_options(classic_mceliece_348864f_vec PUBLIC ) - - - -add_library(classic_mceliece_460896_vec OBJECT ${SRCS_CLASSIC_MCELIECE_460896_VEC_SRCS}) -target_include_directories(classic_mceliece_460896_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_460896_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece460896_vec) -target_compile_options(classic_mceliece_460896_vec PUBLIC ) - - - -add_library(classic_mceliece_460896f_vec OBJECT ${SRCS_CLASSIC_MCELIECE_460896F_VEC_SRCS}) -target_include_directories(classic_mceliece_460896f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_460896f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece460896f_vec) -target_compile_options(classic_mceliece_460896f_vec PUBLIC ) - - - -add_library(classic_mceliece_6688128_vec OBJECT ${SRCS_CLASSIC_MCELIECE_6688128_VEC_SRCS}) -target_include_directories(classic_mceliece_6688128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_6688128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece6688128_vec) -target_compile_options(classic_mceliece_6688128_vec PUBLIC ) - - - -add_library(classic_mceliece_6688128f_vec OBJECT ${SRCS_CLASSIC_MCELIECE_6688128F_VEC_SRCS}) -target_include_directories(classic_mceliece_6688128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_6688128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece6688128f_vec) -target_compile_options(classic_mceliece_6688128f_vec PUBLIC ) - - - -add_library(classic_mceliece_6960119_vec OBJECT ${SRCS_CLASSIC_MCELIECE_6960119_VEC_SRCS}) -target_include_directories(classic_mceliece_6960119_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_6960119_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece6960119_vec) -target_compile_options(classic_mceliece_6960119_vec PUBLIC ) - - - -add_library(classic_mceliece_6960119f_vec OBJECT ${SRCS_CLASSIC_MCELIECE_6960119F_VEC_SRCS}) -target_include_directories(classic_mceliece_6960119f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_6960119f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece6960119f_vec) -target_compile_options(classic_mceliece_6960119f_vec PUBLIC ) - - - -add_library(classic_mceliece_8192128_vec OBJECT ${SRCS_CLASSIC_MCELIECE_8192128_VEC_SRCS}) -target_include_directories(classic_mceliece_8192128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_8192128_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece8192128_vec) -target_compile_options(classic_mceliece_8192128_vec PUBLIC ) - - - -add_library(classic_mceliece_8192128f_vec OBJECT ${SRCS_CLASSIC_MCELIECE_8192128F_VEC_SRCS}) -target_include_directories(classic_mceliece_8192128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(classic_mceliece_8192128f_vec PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/classic_mceliece/pqclean_classic_mceliece8192128f_vec) -target_compile_options(classic_mceliece_8192128f_vec PUBLIC ) - - +set(CLASSIC_MCELIECE_OBJS ${_CLASSIC_MCELIECE_OBJS} PARENT_SCOPE) diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_348864.c b/src/kem/classic_mceliece/kem_classic_mceliece_348864.c index a629396026..d97b5961be 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_348864.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_348864.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_348864 +#if defined(OQS_ENABLE_KEM_classic_mceliece_348864) OQS_KEM *OQS_KEM_classic_mceliece_348864_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_348864_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_348864_vec) int PQCLEAN_MCELIECE348864_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE348864_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE348864_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_348864f.c b/src/kem/classic_mceliece/kem_classic_mceliece_348864f.c index 36241fb17c..29a269ed64 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_348864f.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_348864f.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_348864f +#if defined(OQS_ENABLE_KEM_classic_mceliece_348864f) OQS_KEM *OQS_KEM_classic_mceliece_348864f_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_348864f_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_348864f_vec) int PQCLEAN_MCELIECE348864F_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE348864F_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE348864F_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864f_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864F_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864f_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864F_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_348864f_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE348864F_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_460896.c b/src/kem/classic_mceliece/kem_classic_mceliece_460896.c index ecc624412f..6ffb957d90 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_460896.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_460896.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_460896 +#if defined(OQS_ENABLE_KEM_classic_mceliece_460896) OQS_KEM *OQS_KEM_classic_mceliece_460896_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_460896_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_460896_vec) int PQCLEAN_MCELIECE460896_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE460896_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE460896_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_460896f.c b/src/kem/classic_mceliece/kem_classic_mceliece_460896f.c index c62b86324d..38aed47aaf 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_460896f.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_460896f.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_460896f +#if defined(OQS_ENABLE_KEM_classic_mceliece_460896f) OQS_KEM *OQS_KEM_classic_mceliece_460896f_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_460896f_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_460896f_vec) int PQCLEAN_MCELIECE460896F_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE460896F_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE460896F_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896f_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896F_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896f_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896F_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_460896f_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE460896F_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_6688128.c b/src/kem/classic_mceliece/kem_classic_mceliece_6688128.c index 44eff516e5..070cd1e3b0 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_6688128.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_6688128.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_6688128 +#if defined(OQS_ENABLE_KEM_classic_mceliece_6688128) OQS_KEM *OQS_KEM_classic_mceliece_6688128_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_6688128_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_6688128_vec) int PQCLEAN_MCELIECE6688128_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE6688128_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE6688128_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_6688128f.c b/src/kem/classic_mceliece/kem_classic_mceliece_6688128f.c index 6e683a7466..c00b78dd4e 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_6688128f.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_6688128f.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_6688128f +#if defined(OQS_ENABLE_KEM_classic_mceliece_6688128f) OQS_KEM *OQS_KEM_classic_mceliece_6688128f_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_6688128f_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_6688128f_vec) int PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128f_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128f_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6688128f_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6688128F_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_6960119.c b/src/kem/classic_mceliece/kem_classic_mceliece_6960119.c index 16815e597f..0f448cc535 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_6960119.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_6960119.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_6960119 +#if defined(OQS_ENABLE_KEM_classic_mceliece_6960119) OQS_KEM *OQS_KEM_classic_mceliece_6960119_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_6960119_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_6960119_vec) int PQCLEAN_MCELIECE6960119_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE6960119_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE6960119_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_6960119f.c b/src/kem/classic_mceliece/kem_classic_mceliece_6960119f.c index ed5b76a5af..22b986b455 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_6960119f.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_6960119f.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_6960119f +#if defined(OQS_ENABLE_KEM_classic_mceliece_6960119f) OQS_KEM *OQS_KEM_classic_mceliece_6960119f_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_6960119f_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_6960119f_vec) int PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119f_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119f_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_6960119f_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE6960119F_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_8192128.c b/src/kem/classic_mceliece/kem_classic_mceliece_8192128.c index 6ddc531a99..87adcd5828 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_8192128.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_8192128.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_8192128 +#if defined(OQS_ENABLE_KEM_classic_mceliece_8192128) OQS_KEM *OQS_KEM_classic_mceliece_8192128_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_8192128_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_8192128_vec) int PQCLEAN_MCELIECE8192128_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE8192128_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE8192128_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/classic_mceliece/kem_classic_mceliece_8192128f.c b/src/kem/classic_mceliece/kem_classic_mceliece_8192128f.c index 3101bffc0d..c0b1b4e935 100644 --- a/src/kem/classic_mceliece/kem_classic_mceliece_8192128f.c +++ b/src/kem/classic_mceliece/kem_classic_mceliece_8192128f.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_classic_mceliece_8192128f +#if defined(OQS_ENABLE_KEM_classic_mceliece_8192128f) OQS_KEM *OQS_KEM_classic_mceliece_8192128f_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_classic_mceliece_8192128f_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_classic_mceliece_8192128f_vec) int PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128f_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128f_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_classic_mceliece_8192128f_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MCELIECE8192128F_VEC_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/CMakeLists.txt b/src/kem/frodokem/CMakeLists.txt index ee9857f76d..9e27eb1b57 100644 --- a/src/kem/frodokem/CMakeLists.txt +++ b/src/kem/frodokem/CMakeLists.txt @@ -20,3 +20,6 @@ if(OQS_ENABLE_KEM_frodokem_1344_shake) endif() add_library(frodokem OBJECT ${SRCS}) +if(OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS) + target_compile_options(frodokem PRIVATE -maes -mavx2) +endif() diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 9b2b0a955f..a6c2eb68cd 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -2,161 +2,93 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_kyber_512) - - set(SRCS_KYBER_512_CLEAN_SRCS pqclean_kyber512_clean/cbd.c pqclean_kyber512_clean/indcpa.c pqclean_kyber512_clean/kem.c pqclean_kyber512_clean/ntt.c pqclean_kyber512_clean/poly.c pqclean_kyber512_clean/polyvec.c pqclean_kyber512_clean/reduce.c pqclean_kyber512_clean/symmetric-fips202.c pqclean_kyber512_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_512_avx2) - set(SRCS_KYBER_512_AVX2_SRCS pqclean_kyber512_avx2/basemul.S pqclean_kyber512_avx2/cbd.c pqclean_kyber512_avx2/consts.c pqclean_kyber512_avx2/fips202x4.c pqclean_kyber512_avx2/fq.s pqclean_kyber512_avx2/indcpa.c pqclean_kyber512_avx2/invntt.s pqclean_kyber512_avx2/kem.c pqclean_kyber512_avx2/ntt.s pqclean_kyber512_avx2/poly.c pqclean_kyber512_avx2/polyvec.c pqclean_kyber512_avx2/rejsample.c pqclean_kyber512_avx2/shuffle.s pqclean_kyber512_avx2/symmetric-fips202.c pqclean_kyber512_avx2/verify.c) -else() - set(SRCS_KYBER_512_AVX2_SRCS pqclean_kyber512_avx2/oqs_unsupported.c ) + add_library(kyber_512_clean OBJECT kem_kyber_512.c pqclean_kyber512_clean/cbd.c pqclean_kyber512_clean/indcpa.c pqclean_kyber512_clean/kem.c pqclean_kyber512_clean/ntt.c pqclean_kyber512_clean/poly.c pqclean_kyber512_clean/polyvec.c pqclean_kyber512_clean/reduce.c pqclean_kyber512_clean/symmetric-fips202.c pqclean_kyber512_clean/verify.c) + target_include_directories(kyber_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_512_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber512_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_512_CLEAN_SRCS ${SRCS_KYBER_512_CLEAN_SRCS} kem_kyber_512.c ) +if(OQS_ENABLE_KEM_kyber_512_avx2) + add_library(kyber_512_avx2 OBJECT pqclean_kyber512_avx2/basemul.S pqclean_kyber512_avx2/cbd.c pqclean_kyber512_avx2/consts.c pqclean_kyber512_avx2/fips202x4.c pqclean_kyber512_avx2/fq.s pqclean_kyber512_avx2/indcpa.c pqclean_kyber512_avx2/invntt.s pqclean_kyber512_avx2/kem.c pqclean_kyber512_avx2/ntt.s pqclean_kyber512_avx2/poly.c pqclean_kyber512_avx2/polyvec.c pqclean_kyber512_avx2/rejsample.c pqclean_kyber512_avx2/shuffle.s pqclean_kyber512_avx2/symmetric-fips202.c pqclean_kyber512_avx2/verify.c) + target_include_directories(kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_512_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber512_avx2) + target_compile_options(kyber_512_avx2 PRIVATE -mavx2 -mbmi2) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_KEM_kyber_768) - - set(SRCS_KYBER_768_CLEAN_SRCS pqclean_kyber768_clean/cbd.c pqclean_kyber768_clean/indcpa.c pqclean_kyber768_clean/kem.c pqclean_kyber768_clean/ntt.c pqclean_kyber768_clean/poly.c pqclean_kyber768_clean/polyvec.c pqclean_kyber768_clean/reduce.c pqclean_kyber768_clean/symmetric-fips202.c pqclean_kyber768_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_768_avx2) - set(SRCS_KYBER_768_AVX2_SRCS pqclean_kyber768_avx2/basemul.S pqclean_kyber768_avx2/cbd.c pqclean_kyber768_avx2/consts.c pqclean_kyber768_avx2/fips202x4.c pqclean_kyber768_avx2/fq.s pqclean_kyber768_avx2/indcpa.c pqclean_kyber768_avx2/invntt.s pqclean_kyber768_avx2/kem.c pqclean_kyber768_avx2/ntt.s pqclean_kyber768_avx2/poly.c pqclean_kyber768_avx2/polyvec.c pqclean_kyber768_avx2/rejsample.c pqclean_kyber768_avx2/shuffle.s pqclean_kyber768_avx2/symmetric-fips202.c pqclean_kyber768_avx2/verify.c) -else() - set(SRCS_KYBER_768_AVX2_SRCS pqclean_kyber768_avx2/oqs_unsupported.c ) + add_library(kyber_768_clean OBJECT kem_kyber_768.c pqclean_kyber768_clean/cbd.c pqclean_kyber768_clean/indcpa.c pqclean_kyber768_clean/kem.c pqclean_kyber768_clean/ntt.c pqclean_kyber768_clean/poly.c pqclean_kyber768_clean/polyvec.c pqclean_kyber768_clean/reduce.c pqclean_kyber768_clean/symmetric-fips202.c pqclean_kyber768_clean/verify.c) + target_include_directories(kyber_768_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_768_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber768_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_768_CLEAN_SRCS ${SRCS_KYBER_768_CLEAN_SRCS} kem_kyber_768.c ) +if(OQS_ENABLE_KEM_kyber_768_avx2) + add_library(kyber_768_avx2 OBJECT pqclean_kyber768_avx2/basemul.S pqclean_kyber768_avx2/cbd.c pqclean_kyber768_avx2/consts.c pqclean_kyber768_avx2/fips202x4.c pqclean_kyber768_avx2/fq.s pqclean_kyber768_avx2/indcpa.c pqclean_kyber768_avx2/invntt.s pqclean_kyber768_avx2/kem.c pqclean_kyber768_avx2/ntt.s pqclean_kyber768_avx2/poly.c pqclean_kyber768_avx2/polyvec.c pqclean_kyber768_avx2/rejsample.c pqclean_kyber768_avx2/shuffle.s pqclean_kyber768_avx2/symmetric-fips202.c pqclean_kyber768_avx2/verify.c) + target_include_directories(kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_768_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber768_avx2) + target_compile_options(kyber_768_avx2 PRIVATE -maes -mavx2 -mbmi2 -mpopcnt) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_KEM_kyber_1024) - - set(SRCS_KYBER_1024_CLEAN_SRCS pqclean_kyber1024_clean/cbd.c pqclean_kyber1024_clean/indcpa.c pqclean_kyber1024_clean/kem.c pqclean_kyber1024_clean/ntt.c pqclean_kyber1024_clean/poly.c pqclean_kyber1024_clean/polyvec.c pqclean_kyber1024_clean/reduce.c pqclean_kyber1024_clean/symmetric-fips202.c pqclean_kyber1024_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_1024_avx2) - set(SRCS_KYBER_1024_AVX2_SRCS pqclean_kyber1024_avx2/basemul.S pqclean_kyber1024_avx2/cbd.c pqclean_kyber1024_avx2/consts.c pqclean_kyber1024_avx2/fips202x4.c pqclean_kyber1024_avx2/fq.s pqclean_kyber1024_avx2/indcpa.c pqclean_kyber1024_avx2/invntt.s pqclean_kyber1024_avx2/kem.c pqclean_kyber1024_avx2/ntt.s pqclean_kyber1024_avx2/poly.c pqclean_kyber1024_avx2/polyvec.c pqclean_kyber1024_avx2/rejsample.c pqclean_kyber1024_avx2/shuffle.s pqclean_kyber1024_avx2/symmetric-fips202.c pqclean_kyber1024_avx2/verify.c) -else() - set(SRCS_KYBER_1024_AVX2_SRCS pqclean_kyber1024_avx2/oqs_unsupported.c ) + add_library(kyber_1024_clean OBJECT kem_kyber_1024.c pqclean_kyber1024_clean/cbd.c pqclean_kyber1024_clean/indcpa.c pqclean_kyber1024_clean/kem.c pqclean_kyber1024_clean/ntt.c pqclean_kyber1024_clean/poly.c pqclean_kyber1024_clean/polyvec.c pqclean_kyber1024_clean/reduce.c pqclean_kyber1024_clean/symmetric-fips202.c pqclean_kyber1024_clean/verify.c) + target_include_directories(kyber_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_1024_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber1024_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_1024_CLEAN_SRCS ${SRCS_KYBER_1024_CLEAN_SRCS} kem_kyber_1024.c ) +if(OQS_ENABLE_KEM_kyber_1024_avx2) + add_library(kyber_1024_avx2 OBJECT pqclean_kyber1024_avx2/basemul.S pqclean_kyber1024_avx2/cbd.c pqclean_kyber1024_avx2/consts.c pqclean_kyber1024_avx2/fips202x4.c pqclean_kyber1024_avx2/fq.s pqclean_kyber1024_avx2/indcpa.c pqclean_kyber1024_avx2/invntt.s pqclean_kyber1024_avx2/kem.c pqclean_kyber1024_avx2/ntt.s pqclean_kyber1024_avx2/poly.c pqclean_kyber1024_avx2/polyvec.c pqclean_kyber1024_avx2/rejsample.c pqclean_kyber1024_avx2/shuffle.s pqclean_kyber1024_avx2/symmetric-fips202.c pqclean_kyber1024_avx2/verify.c) + target_include_directories(kyber_1024_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_1024_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber1024_avx2) + target_compile_options(kyber_1024_avx2 PRIVATE -maes -mavx2 -mbmi2 -mpopcnt) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_KEM_kyber_512_90s) - - set(SRCS_KYBER_512_90S_CLEAN_SRCS pqclean_kyber512_90s_clean/aes256ctr.c pqclean_kyber512_90s_clean/cbd.c pqclean_kyber512_90s_clean/indcpa.c pqclean_kyber512_90s_clean/kem.c pqclean_kyber512_90s_clean/ntt.c pqclean_kyber512_90s_clean/poly.c pqclean_kyber512_90s_clean/polyvec.c pqclean_kyber512_90s_clean/reduce.c pqclean_kyber512_90s_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_512_90s_avx2) - set(SRCS_KYBER_512_90S_AVX2_SRCS pqclean_kyber512_90s_avx2/aes256ctr.c pqclean_kyber512_90s_avx2/basemul.S pqclean_kyber512_90s_avx2/cbd.c pqclean_kyber512_90s_avx2/consts.c pqclean_kyber512_90s_avx2/fq.s pqclean_kyber512_90s_avx2/indcpa.c pqclean_kyber512_90s_avx2/invntt.s pqclean_kyber512_90s_avx2/kem.c pqclean_kyber512_90s_avx2/ntt.s pqclean_kyber512_90s_avx2/poly.c pqclean_kyber512_90s_avx2/polyvec.c pqclean_kyber512_90s_avx2/rejsample.c pqclean_kyber512_90s_avx2/shuffle.s pqclean_kyber512_90s_avx2/verify.c) -else() - set(SRCS_KYBER_512_90S_AVX2_SRCS pqclean_kyber512_90s_avx2/oqs_unsupported.c ) + add_library(kyber_512_90s_clean OBJECT kem_kyber_512_90s.c pqclean_kyber512-90s_clean/aes256ctr.c pqclean_kyber512-90s_clean/cbd.c pqclean_kyber512-90s_clean/indcpa.c pqclean_kyber512-90s_clean/kem.c pqclean_kyber512-90s_clean/ntt.c pqclean_kyber512-90s_clean/poly.c pqclean_kyber512-90s_clean/polyvec.c pqclean_kyber512-90s_clean/reduce.c pqclean_kyber512-90s_clean/verify.c) + target_include_directories(kyber_512_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_512_90s_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber512-90s_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_512_90S_CLEAN_SRCS ${SRCS_KYBER_512_90S_CLEAN_SRCS} kem_kyber_512_90s.c ) +if(OQS_ENABLE_KEM_kyber_512_90s_avx2) + add_library(kyber_512_90s_avx2 OBJECT pqclean_kyber512-90s_avx2/aes256ctr.c pqclean_kyber512-90s_avx2/basemul.S pqclean_kyber512-90s_avx2/cbd.c pqclean_kyber512-90s_avx2/consts.c pqclean_kyber512-90s_avx2/fq.s pqclean_kyber512-90s_avx2/indcpa.c pqclean_kyber512-90s_avx2/invntt.s pqclean_kyber512-90s_avx2/kem.c pqclean_kyber512-90s_avx2/ntt.s pqclean_kyber512-90s_avx2/poly.c pqclean_kyber512-90s_avx2/polyvec.c pqclean_kyber512-90s_avx2/rejsample.c pqclean_kyber512-90s_avx2/shuffle.s pqclean_kyber512-90s_avx2/verify.c) + target_include_directories(kyber_512_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_512_90s_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber512-90s_avx2) + target_compile_options(kyber_512_90s_avx2 PRIVATE -maes -mavx2 -mbmi2 -mpopcnt) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_KEM_kyber_768_90s) - - set(SRCS_KYBER_768_90S_CLEAN_SRCS pqclean_kyber768_90s_clean/aes256ctr.c pqclean_kyber768_90s_clean/cbd.c pqclean_kyber768_90s_clean/indcpa.c pqclean_kyber768_90s_clean/kem.c pqclean_kyber768_90s_clean/ntt.c pqclean_kyber768_90s_clean/poly.c pqclean_kyber768_90s_clean/polyvec.c pqclean_kyber768_90s_clean/reduce.c pqclean_kyber768_90s_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_768_90s_avx2) - set(SRCS_KYBER_768_90S_AVX2_SRCS pqclean_kyber768_90s_avx2/aes256ctr.c pqclean_kyber768_90s_avx2/basemul.S pqclean_kyber768_90s_avx2/cbd.c pqclean_kyber768_90s_avx2/consts.c pqclean_kyber768_90s_avx2/fq.s pqclean_kyber768_90s_avx2/indcpa.c pqclean_kyber768_90s_avx2/invntt.s pqclean_kyber768_90s_avx2/kem.c pqclean_kyber768_90s_avx2/ntt.s pqclean_kyber768_90s_avx2/poly.c pqclean_kyber768_90s_avx2/polyvec.c pqclean_kyber768_90s_avx2/rejsample.c pqclean_kyber768_90s_avx2/shuffle.s pqclean_kyber768_90s_avx2/verify.c) -else() - set(SRCS_KYBER_768_90S_AVX2_SRCS pqclean_kyber768_90s_avx2/oqs_unsupported.c ) + add_library(kyber_768_90s_clean OBJECT kem_kyber_768_90s.c pqclean_kyber768-90s_clean/aes256ctr.c pqclean_kyber768-90s_clean/cbd.c pqclean_kyber768-90s_clean/indcpa.c pqclean_kyber768-90s_clean/kem.c pqclean_kyber768-90s_clean/ntt.c pqclean_kyber768-90s_clean/poly.c pqclean_kyber768-90s_clean/polyvec.c pqclean_kyber768-90s_clean/reduce.c pqclean_kyber768-90s_clean/verify.c) + target_include_directories(kyber_768_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_768_90s_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber768-90s_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_768_90S_CLEAN_SRCS ${SRCS_KYBER_768_90S_CLEAN_SRCS} kem_kyber_768_90s.c ) +if(OQS_ENABLE_KEM_kyber_768_90s_avx2) + add_library(kyber_768_90s_avx2 OBJECT pqclean_kyber768-90s_avx2/aes256ctr.c pqclean_kyber768-90s_avx2/basemul.S pqclean_kyber768-90s_avx2/cbd.c pqclean_kyber768-90s_avx2/consts.c pqclean_kyber768-90s_avx2/fq.s pqclean_kyber768-90s_avx2/indcpa.c pqclean_kyber768-90s_avx2/invntt.s pqclean_kyber768-90s_avx2/kem.c pqclean_kyber768-90s_avx2/ntt.s pqclean_kyber768-90s_avx2/poly.c pqclean_kyber768-90s_avx2/polyvec.c pqclean_kyber768-90s_avx2/rejsample.c pqclean_kyber768-90s_avx2/shuffle.s pqclean_kyber768-90s_avx2/verify.c) + target_include_directories(kyber_768_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_768_90s_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber768-90s_avx2) + target_compile_options(kyber_768_90s_avx2 PRIVATE -maes -mavx2 -mbmi2 -mpopcnt) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_KEM_kyber_1024_90s) - - set(SRCS_KYBER_1024_90S_CLEAN_SRCS pqclean_kyber1024_90s_clean/aes256ctr.c pqclean_kyber1024_90s_clean/cbd.c pqclean_kyber1024_90s_clean/indcpa.c pqclean_kyber1024_90s_clean/kem.c pqclean_kyber1024_90s_clean/ntt.c pqclean_kyber1024_90s_clean/poly.c pqclean_kyber1024_90s_clean/polyvec.c pqclean_kyber1024_90s_clean/reduce.c pqclean_kyber1024_90s_clean/verify.c) - -if(OQS_ENABLE_KEM_kyber_1024_90s_avx2) - set(SRCS_KYBER_1024_90S_AVX2_SRCS pqclean_kyber1024_90s_avx2/aes256ctr.c pqclean_kyber1024_90s_avx2/basemul.S pqclean_kyber1024_90s_avx2/cbd.c pqclean_kyber1024_90s_avx2/consts.c pqclean_kyber1024_90s_avx2/fq.s pqclean_kyber1024_90s_avx2/indcpa.c pqclean_kyber1024_90s_avx2/invntt.s pqclean_kyber1024_90s_avx2/kem.c pqclean_kyber1024_90s_avx2/ntt.s pqclean_kyber1024_90s_avx2/poly.c pqclean_kyber1024_90s_avx2/polyvec.c pqclean_kyber1024_90s_avx2/rejsample.c pqclean_kyber1024_90s_avx2/shuffle.s pqclean_kyber1024_90s_avx2/verify.c) -else() - set(SRCS_KYBER_1024_90S_AVX2_SRCS pqclean_kyber1024_90s_avx2/oqs_unsupported.c ) + add_library(kyber_1024_90s_clean OBJECT kem_kyber_1024_90s.c pqclean_kyber1024-90s_clean/aes256ctr.c pqclean_kyber1024-90s_clean/cbd.c pqclean_kyber1024-90s_clean/indcpa.c pqclean_kyber1024-90s_clean/kem.c pqclean_kyber1024-90s_clean/ntt.c pqclean_kyber1024-90s_clean/poly.c pqclean_kyber1024-90s_clean/polyvec.c pqclean_kyber1024-90s_clean/reduce.c pqclean_kyber1024-90s_clean/verify.c) + target_include_directories(kyber_1024_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_1024_90s_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber1024-90s_clean) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - -set(SRCS_KYBER_1024_90S_CLEAN_SRCS ${SRCS_KYBER_1024_90S_CLEAN_SRCS} kem_kyber_1024_90s.c ) +if(OQS_ENABLE_KEM_kyber_1024_90s_avx2) + add_library(kyber_1024_90s_avx2 OBJECT pqclean_kyber1024-90s_avx2/aes256ctr.c pqclean_kyber1024-90s_avx2/basemul.S pqclean_kyber1024-90s_avx2/cbd.c pqclean_kyber1024-90s_avx2/consts.c pqclean_kyber1024-90s_avx2/fq.s pqclean_kyber1024-90s_avx2/indcpa.c pqclean_kyber1024-90s_avx2/invntt.s pqclean_kyber1024-90s_avx2/kem.c pqclean_kyber1024-90s_avx2/ntt.s pqclean_kyber1024-90s_avx2/poly.c pqclean_kyber1024-90s_avx2/polyvec.c pqclean_kyber1024-90s_avx2/rejsample.c pqclean_kyber1024-90s_avx2/shuffle.s pqclean_kyber1024-90s_avx2/verify.c) + target_include_directories(kyber_1024_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(kyber_1024_90s_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_kyber1024-90s_avx2) + target_compile_options(kyber_1024_90s_avx2 PRIVATE -maes -mavx2 -mbmi2 -mpopcnt) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() - - - -add_library(kyber_512_clean OBJECT ${SRCS_KYBER_512_CLEAN_SRCS}) -target_include_directories(kyber_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber512_clean) -target_compile_options(kyber_512_clean PUBLIC ) - -add_library(kyber_512_avx2 OBJECT ${SRCS_KYBER_512_AVX2_SRCS}) -target_include_directories(kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber512_avx2) -target_compile_options(kyber_512_avx2 PUBLIC -mavx2 -mbmi2) - - - -add_library(kyber_768_clean OBJECT ${SRCS_KYBER_768_CLEAN_SRCS}) -target_include_directories(kyber_768_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_768_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber768_clean) -target_compile_options(kyber_768_clean PUBLIC ) - -add_library(kyber_768_avx2 OBJECT ${SRCS_KYBER_768_AVX2_SRCS}) -target_include_directories(kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber768_avx2) -target_compile_options(kyber_768_avx2 PUBLIC -maes -mavx2 -mbmi2 -mpopcnt) - - - -add_library(kyber_1024_clean OBJECT ${SRCS_KYBER_1024_CLEAN_SRCS}) -target_include_directories(kyber_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber1024_clean) -target_compile_options(kyber_1024_clean PUBLIC ) - -add_library(kyber_1024_avx2 OBJECT ${SRCS_KYBER_1024_AVX2_SRCS}) -target_include_directories(kyber_1024_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_1024_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber1024_avx2) -target_compile_options(kyber_1024_avx2 PUBLIC -maes -mavx2 -mbmi2 -mpopcnt) - - - -add_library(kyber_512_90s_clean OBJECT ${SRCS_KYBER_512_90S_CLEAN_SRCS}) -target_include_directories(kyber_512_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_512_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber512_90s_clean) -target_compile_options(kyber_512_90s_clean PUBLIC ) - -add_library(kyber_512_90s_avx2 OBJECT ${SRCS_KYBER_512_90S_AVX2_SRCS}) -target_include_directories(kyber_512_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_512_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber512_90s_avx2) -target_compile_options(kyber_512_90s_avx2 PUBLIC -maes -mavx2 -mbmi2 -mpopcnt) - - - -add_library(kyber_768_90s_clean OBJECT ${SRCS_KYBER_768_90S_CLEAN_SRCS}) -target_include_directories(kyber_768_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_768_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber768_90s_clean) -target_compile_options(kyber_768_90s_clean PUBLIC ) - -add_library(kyber_768_90s_avx2 OBJECT ${SRCS_KYBER_768_90S_AVX2_SRCS}) -target_include_directories(kyber_768_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_768_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber768_90s_avx2) -target_compile_options(kyber_768_90s_avx2 PUBLIC -maes -mavx2 -mbmi2 -mpopcnt) - - - -add_library(kyber_1024_90s_clean OBJECT ${SRCS_KYBER_1024_90S_CLEAN_SRCS}) -target_include_directories(kyber_1024_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_1024_90s_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber1024_90s_clean) -target_compile_options(kyber_1024_90s_clean PUBLIC ) - -add_library(kyber_1024_90s_avx2 OBJECT ${SRCS_KYBER_1024_90S_AVX2_SRCS}) -target_include_directories(kyber_1024_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(kyber_1024_90s_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/kyber/pqclean_kyber1024_90s_avx2) -target_compile_options(kyber_1024_90s_avx2 PUBLIC -maes -mavx2 -mbmi2 -mpopcnt) - - - +set(KYBER_OBJS ${_KYBER_OBJS} PARENT_SCOPE) diff --git a/src/kem/kyber/kem_kyber_1024.c b/src/kem/kyber/kem_kyber_1024.c index 9f0aec79fa..8539bc61fb 100644 --- a/src/kem/kyber/kem_kyber_1024.c +++ b/src/kem/kyber/kem_kyber_1024.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_1024 +#if defined(OQS_ENABLE_KEM_kyber_1024) OQS_KEM *OQS_KEM_kyber_1024_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_1024_new() { return kem; } - int PQCLEAN_KYBER1024_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER1024_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER1024_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER1024_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *ss, int PQCLEAN_KYBER1024_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_1024_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_1024_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_1024_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER1024_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER1024_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/kem_kyber_1024_90s.c b/src/kem/kyber/kem_kyber_1024_90s.c index 9bf92cc8fd..364ec8ad7d 100644 --- a/src/kem/kyber/kem_kyber_1024_90s.c +++ b/src/kem/kyber/kem_kyber_1024_90s.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_1024_90s +#if defined(OQS_ENABLE_KEM_kyber_1024_90s) OQS_KEM *OQS_KEM_kyber_1024_90s_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_1024_90s_new() { return kem; } - int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER102490S_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *s int PQCLEAN_KYBER102490S_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_1024_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_1024_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER102490S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER102490S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index 77568e369b..dc86b6227a 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_512 +#if defined(OQS_ENABLE_KEM_kyber_512) OQS_KEM *OQS_KEM_kyber_512_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_512_new() { return kem; } - int PQCLEAN_KYBER512_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER512_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER512_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER512_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *ss, c int PQCLEAN_KYBER512_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER512_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER512_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/kem_kyber_512_90s.c b/src/kem/kyber/kem_kyber_512_90s.c index 5ed97d44ed..b148e502fc 100644 --- a/src/kem/kyber/kem_kyber_512_90s.c +++ b/src/kem/kyber/kem_kyber_512_90s.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_512_90s +#if defined(OQS_ENABLE_KEM_kyber_512_90s) OQS_KEM *OQS_KEM_kyber_512_90s_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_512_90s_new() { return kem; } - int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER51290S_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *ss int PQCLEAN_KYBER51290S_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_512_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_512_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER51290S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER51290S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index b0bd0e87ca..4ab60a8659 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_768 +#if defined(OQS_ENABLE_KEM_kyber_768) OQS_KEM *OQS_KEM_kyber_768_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_768_new() { return kem; } - int PQCLEAN_KYBER768_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER768_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER768_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER768_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *ss, c int PQCLEAN_KYBER768_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER768_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER768_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/kem_kyber_768_90s.c b/src/kem/kyber/kem_kyber_768_90s.c index d0634548d6..0ba37e24c0 100644 --- a/src/kem/kyber/kem_kyber_768_90s.c +++ b/src/kem/kyber/kem_kyber_768_90s.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_kyber_768_90s +#if defined(OQS_ENABLE_KEM_kyber_768_90s) OQS_KEM *OQS_KEM_kyber_768_90s_new() { @@ -28,7 +28,6 @@ OQS_KEM *OQS_KEM_kyber_768_90s_new() { return kem; } - int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); @@ -39,54 +38,41 @@ int PQCLEAN_KYBER76890S_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *ss int PQCLEAN_KYBER76890S_AVX2_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); #endif - OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_keypair(public_key, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); } else { return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_enc(ciphertext, shared_secret, public_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); #endif } OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_KEM_kyber_768_90s_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AES_INSTRUCTIONS && OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS && OQS_RT_cpu_flags().POPCNT_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_KEM_kyber_768_90s_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AES_ENABLED && available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED && available_cpu_extensions.POPCNT_ENABLED) { return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); } else { return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #else - return (OQS_STATUS) PQCLEAN_KYBER76890S_AVX2_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#endif -#else -// Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_KYBER76890S_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); #endif } diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/LICENSE b/src/kem/kyber/pqclean_kyber1024-90s_avx2/LICENSE similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/LICENSE rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/LICENSE diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/aes256ctr.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/aes256ctr.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/aes256ctr.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/aes256ctr.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/aes256ctr.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/aes256ctr.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/aes256ctr.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/aes256ctr.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/api.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/api.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/api.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/api.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/basemul.S b/src/kem/kyber/pqclean_kyber1024-90s_avx2/basemul.S similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/basemul.S rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/basemul.S diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/cbd.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/cbd.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/cbd.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/cbd.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/cbd.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/cbd.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/cbd.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/cbd.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/consts.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/consts.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/consts.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/consts.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/consts.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/consts.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/consts.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/consts.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/fq.inc b/src/kem/kyber/pqclean_kyber1024-90s_avx2/fq.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/fq.inc rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/fq.inc diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/fq.s b/src/kem/kyber/pqclean_kyber1024-90s_avx2/fq.s similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/fq.s rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/fq.s diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/indcpa.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/indcpa.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/indcpa.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/indcpa.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/indcpa.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/indcpa.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/indcpa.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/indcpa.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/invntt.s b/src/kem/kyber/pqclean_kyber1024-90s_avx2/invntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/invntt.s rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/invntt.s diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/kem.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/kem.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/kem.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/kem.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/ntt.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/ntt.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/ntt.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/ntt.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/ntt.s b/src/kem/kyber/pqclean_kyber1024-90s_avx2/ntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/ntt.s rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/ntt.s diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/params.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/params.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/params.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/params.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/poly.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/poly.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/poly.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/poly.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/poly.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/poly.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/poly.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/poly.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/polyvec.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/polyvec.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/polyvec.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/polyvec.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/polyvec.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/polyvec.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/polyvec.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/polyvec.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/reduce.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/reduce.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/reduce.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/reduce.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/rejsample.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/rejsample.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/rejsample.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/rejsample.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/rejsample.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/rejsample.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/rejsample.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/rejsample.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/shuffle.inc b/src/kem/kyber/pqclean_kyber1024-90s_avx2/shuffle.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/shuffle.inc rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/shuffle.inc diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/shuffle.s b/src/kem/kyber/pqclean_kyber1024-90s_avx2/shuffle.s similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/shuffle.s rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/shuffle.s diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/symmetric.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/symmetric.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/symmetric.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/symmetric.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/verify.c b/src/kem/kyber/pqclean_kyber1024-90s_avx2/verify.c similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/verify.c rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/verify.c diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/verify.h b/src/kem/kyber/pqclean_kyber1024-90s_avx2/verify.h similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_avx2/verify.h rename to src/kem/kyber/pqclean_kyber1024-90s_avx2/verify.h diff --git a/src/kem/kyber/pqclean_kyber1024_90s_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber1024_90s_avx2/oqs_unsupported.c deleted file mode 100644 index 896b1d0211..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber1024_90s_avx2_unsupported=1; diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.c deleted file mode 100644 index 2d4592e5d5..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.c +++ /dev/null @@ -1,100 +0,0 @@ -#include "aes256ctr.h" -#include "aes.h" -#include -#include -#include - -static inline void br_enc32be(unsigned char *dst, uint32_t x) { - dst[3] = (unsigned char)x; - dst[2] = (unsigned char)(x >> 8); - dst[1] = (unsigned char)(x >> 16); - dst[0] = (unsigned char)(x >> 24); -} - -static void aes256_ctr_xof(unsigned char *out, size_t outlen, const unsigned char *iv, uint32_t ctr, const aes256ctx *ctx) { - uint8_t ivw[16]; - uint8_t buf[AES_BLOCKBYTES]; - size_t i; - - memcpy(ivw, iv, AESCTR_NONCEBYTES); - br_enc32be(ivw + AESCTR_NONCEBYTES, ctr); - - while (outlen > AES_BLOCKBYTES) { - aes256_ecb(out, ivw, 1, ctx); - br_enc32be(ivw + AESCTR_NONCEBYTES, ++ctr); - out += AES_BLOCKBYTES; - outlen -= AES_BLOCKBYTES; - } - if (outlen > 0) { - aes256_ecb(buf, ivw, 1, ctx); - for (i = 0; i < outlen; i++) { - out[i] = buf[i]; - } - } -} - -/************************************************* -* Name: aes256_prf -* -* Description: AES256 stream generation in CTR mode using 32-bit counter, -* nonce is zero-padded to 12 bytes, counter starts at zero -* -* Arguments: - uint8_t *output: pointer to output -* - size_t outlen: length of requested output in bytes -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t nonce: 1-byte nonce (will be zero-padded to 12 bytes) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce) { - uint8_t iv[12]; - for (int i = 1; i < 12; i++) { - iv[i] = 0; - } - iv[0] = nonce; - - aes256ctx ctx; - aes256_ctr_keyexp(&ctx, key); - aes256_ctr(output, outlen, iv, &ctx); - aes256_ctx_release(&ctx); -} - -/************************************************* -* Name: aes256xof_absorb -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* "absorbs" a 32-byte key and two additional bytes that are zero-padded -* to a 12-byte nonce -* -* Arguments: - aes256xof_ctx *s: pointer to state to "absorb" key and IV into -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t x: first additional byte to "absorb" -* - uint8_t y: second additional byte to "absorb" -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y) { - aes256_ecb_keyexp(&s->sk_exp, key); - for (int i = 2; i < 12; i++) { - s->iv[i] = 0; - } - s->iv[0] = x; - s->iv[1] = y; - s->ctr = 0; -} - -/************************************************* -* Name: aes256xof_squeezeblocks -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* generates 4 blocks out AES256-CTR output -* -* Arguments: - uint8_t *out: pointer to output -* - size_t nblocks: number of reqested 64-byte output blocks -* - aes256xof_ctx *s: AES "state", i.e. expanded key and IV -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s) { - aes256_ctr_xof(out, nblocks * 64, s->iv, s->ctr, &s->sk_exp); - s->ctr += (uint32_t) (4 * nblocks); -} - -/** Free the AES ctx **/ -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s) { - aes256_ctx_release(&s->sk_exp); -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.h deleted file mode 100644 index bc2d7483af..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/aes256ctr.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef AES256CTR_H -#define AES256CTR_H - -#include "aes.h" - -#include -#include - -typedef struct { - aes256ctx sk_exp; - uint8_t iv[12]; - uint32_t ctr; -} aes256xof_ctx; - -void PQCLEAN_KYBER102490S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce); -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y); -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s); -void PQCLEAN_KYBER102490S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/api.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/api.h deleted file mode 100644 index 69d338fc78..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_KYBER102490S_CLEAN_API_H -#define PQCLEAN_KYBER102490S_CLEAN_API_H - -#include - -#define PQCLEAN_KYBER102490S_CLEAN_CRYPTO_SECRETKEYBYTES 3168 -#define PQCLEAN_KYBER102490S_CLEAN_CRYPTO_PUBLICKEYBYTES 1568 -#define PQCLEAN_KYBER102490S_CLEAN_CRYPTO_CIPHERTEXTBYTES 1568 -#define PQCLEAN_KYBER102490S_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_KYBER102490S_CLEAN_CRYPTO_ALGNAME "Kyber1024-90s" - -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.c deleted file mode 100644 index 8b7b95d185..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "cbd.h" -#include "params.h" - -#include -#include - -/************************************************* -* Name: load32_littleendian -* -* Description: load bytes into a 32-bit integer -* in little-endian order -* -* Arguments: - const uint8_t *x: pointer to input byte array -* -* Returns 32-bit unsigned integer loaded from x -**************************************************/ -static uint32_t load32_littleendian(const uint8_t *x) { - uint32_t r; - r = (uint32_t)x[0]; - r |= (uint32_t)x[1] << 8; - r |= (uint32_t)x[2] << 16; - r |= (uint32_t)x[3] << 24; - return r; -} - -/************************************************* -* Name: cbd -* -* Description: Given an array of uniformly random bytes, compute -* polynomial with coefficients distributed according to -* a centered binomial distribution with parameter KYBER_ETA -* specialized for KYBER_ETA=2 -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *buf: pointer to input byte array -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_cbd(poly *r, const uint8_t *buf) { - uint32_t d, t; - int16_t a, b; - - for (size_t i = 0; i < KYBER_N / 8; i++) { - t = load32_littleendian(buf + 4 * i); - d = t & 0x55555555; - d += (t >> 1) & 0x55555555; - - for (size_t j = 0; j < 8; j++) { - a = (d >> 4 * j) & 0x3; - b = (d >> (4 * j + 2)) & 0x3; - r->coeffs[8 * i + j] = a - b; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.h deleted file mode 100644 index d1e4ecdd2c..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/cbd.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CBD_H -#define CBD_H - -#include "poly.h" - -void PQCLEAN_KYBER102490S_CLEAN_cbd(poly *r, const uint8_t *buf); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.c deleted file mode 100644 index e60c89b218..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.c +++ /dev/null @@ -1,300 +0,0 @@ -#include "indcpa.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "polyvec.h" -#include "randombytes.h" -#include "symmetric.h" - -#include - -/************************************************* -* Name: pack_pk -* -* Description: Serialize the public key as concatenation of the -* serialized vector of polynomials pk -* and the public seed used to generate the matrix A. -* -* Arguments: uint8_t *r: pointer to the output serialized public key -* const poly *pk: pointer to the input public-key polynomial -* const uint8_t *seed: pointer to the input public seed -**************************************************/ -static void pack_pk(uint8_t *r, polyvec *pk, const uint8_t *seed) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_tobytes(r, pk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - r[i + KYBER_POLYVECBYTES] = seed[i]; - } -} - -/************************************************* -* Name: unpack_pk -* -* Description: De-serialize public key from a byte array; -* approximate inverse of pack_pk -* -* Arguments: - polyvec *pk: pointer to output public-key vector of polynomials -* - uint8_t *seed: pointer to output seed to generate matrix A -* - const uint8_t *packedpk: pointer to input serialized public key -**************************************************/ -static void unpack_pk(polyvec *pk, uint8_t *seed, const uint8_t *packedpk) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_frombytes(pk, packedpk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - seed[i] = packedpk[i + KYBER_POLYVECBYTES]; - } -} - -/************************************************* -* Name: pack_sk -* -* Description: Serialize the secret key -* -* Arguments: - uint8_t *r: pointer to output serialized secret key -* - const polyvec *sk: pointer to input vector of polynomials (secret key) -**************************************************/ -static void pack_sk(uint8_t *r, polyvec *sk) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_tobytes(r, sk); -} - -/************************************************* -* Name: unpack_sk -* -* Description: De-serialize the secret key; -* inverse of pack_sk -* -* Arguments: - polyvec *sk: pointer to output vector of polynomials (secret key) -* - const uint8_t *packedsk: pointer to input serialized secret key -**************************************************/ -static void unpack_sk(polyvec *sk, const uint8_t *packedsk) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_frombytes(sk, packedsk); -} - -/************************************************* -* Name: pack_ciphertext -* -* Description: Serialize the ciphertext as concatenation of the -* compressed and serialized vector of polynomials b -* and the compressed and serialized polynomial v -* -* Arguments: uint8_t *r: pointer to the output serialized ciphertext -* const poly *pk: pointer to the input vector of polynomials b -* const uint8_t *seed: pointer to the input polynomial v -**************************************************/ -static void pack_ciphertext(uint8_t *r, polyvec *b, poly *v) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_compress(r, b); - PQCLEAN_KYBER102490S_CLEAN_poly_compress(r + KYBER_POLYVECCOMPRESSEDBYTES, v); -} - -/************************************************* -* Name: unpack_ciphertext -* -* Description: De-serialize and decompress ciphertext from a byte array; -* approximate inverse of pack_ciphertext -* -* Arguments: - polyvec *b: pointer to the output vector of polynomials b -* - poly *v: pointer to the output polynomial v -* - const uint8_t *c: pointer to the input serialized ciphertext -**************************************************/ -static void unpack_ciphertext(polyvec *b, poly *v, const uint8_t *c) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_decompress(b, c); - PQCLEAN_KYBER102490S_CLEAN_poly_decompress(v, c + KYBER_POLYVECCOMPRESSEDBYTES); -} - -/************************************************* -* Name: rej_uniform -* -* Description: Run rejection sampling on uniform random bytes to generate -* uniform random integers mod q -* -* Arguments: - int16_t *r: pointer to output buffer -* - size_t len: requested number of 16-bit integers (uniform mod q) -* - const uint8_t *buf: pointer to input buffer (assumed to be uniform random bytes) -* - size_t buflen: length of input buffer in bytes -* -* Returns number of sampled 16-bit integers (at most len) -**************************************************/ -static size_t rej_uniform(int16_t *r, size_t len, const uint8_t *buf, size_t buflen) { - size_t ctr, pos; - uint16_t val; - - ctr = pos = 0; - while (ctr < len && pos + 2 <= buflen) { - val = (uint16_t)(buf[pos] | ((uint16_t)buf[pos + 1] << 8)); - pos += 2; - - if (val < 19 * KYBER_Q) { - val -= (uint16_t)((val >> 12) * KYBER_Q); // Barrett reduction - r[ctr++] = (int16_t)val; - } - } - - return ctr; -} - -#define gen_a(A,B) gen_matrix(A,B,0) -#define gen_at(A,B) gen_matrix(A,B,1) - -/************************************************* -* Name: gen_matrix -* -* Description: Deterministically generate matrix A (or the transpose of A) -* from a seed. Entries of the matrix are polynomials that look -* uniformly random. Performs rejection sampling on output of -* a XOF -* -* Arguments: - polyvec *a: pointer to ouptput matrix A -* - const uint8_t *seed: pointer to input seed -* - int transposed: boolean deciding whether A or A^T is generated -**************************************************/ -#define MAXNBLOCKS ((530+XOF_BLOCKBYTES)/XOF_BLOCKBYTES) /* 530 is expected number of required bytes */ -static void gen_matrix(polyvec *a, const uint8_t *seed, int transposed) { - size_t ctr; - uint8_t i, j; - uint8_t buf[XOF_BLOCKBYTES * MAXNBLOCKS + 1]; - xof_state state; - - for (i = 0; i < KYBER_K; i++) { - for (j = 0; j < KYBER_K; j++) { - if (transposed) { - xof_absorb(&state, seed, i, j); - } else { - xof_absorb(&state, seed, j, i); - } - - xof_squeezeblocks(buf, MAXNBLOCKS, &state); - ctr = rej_uniform(a[i].vec[j].coeffs, KYBER_N, buf, MAXNBLOCKS * XOF_BLOCKBYTES); - - while (ctr < KYBER_N) { - xof_squeezeblocks(buf, 1, &state); - ctr += rej_uniform(a[i].vec[j].coeffs + ctr, KYBER_N - ctr, buf, XOF_BLOCKBYTES); - } - xof_ctx_release(&state); - } - } -} - -/************************************************* -* Name: indcpa_keypair -* -* Description: Generates public and private key for the CPA-secure -* public-key encryption scheme underlying Kyber -* -* Arguments: - uint8_t *pk: pointer to output public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (of length KYBER_INDCPA_SECRETKEYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_indcpa_keypair(uint8_t *pk, uint8_t *sk) { - polyvec a[KYBER_K], e, pkpv, skpv; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t *publicseed = buf; - uint8_t *noiseseed = buf + KYBER_SYMBYTES; - uint8_t nonce = 0; - - randombytes(buf, KYBER_SYMBYTES); - hash_g(buf, buf, KYBER_SYMBYTES); - - gen_a(a, publicseed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(skpv.vec + i, noiseseed, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(e.vec + i, noiseseed, nonce++); - } - - PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(&skpv); - PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(&e); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(&pkpv.vec[i], &a[i], &skpv); - PQCLEAN_KYBER102490S_CLEAN_poly_frommont(&pkpv.vec[i]); - } - - PQCLEAN_KYBER102490S_CLEAN_polyvec_add(&pkpv, &pkpv, &e); - PQCLEAN_KYBER102490S_CLEAN_polyvec_reduce(&pkpv); - - pack_sk(sk, &skpv); - pack_pk(pk, &pkpv, publicseed); -} - -/************************************************* -* Name: indcpa_enc -* -* Description: Encryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *c: pointer to output ciphertext (of length KYBER_INDCPA_BYTES bytes) -* - const uint8_t *m: pointer to input message (of length KYBER_INDCPA_MSGBYTES bytes) -* - const uint8_t *pk: pointer to input public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - const uint8_t *coin: pointer to input random coins used as seed (of length KYBER_SYMBYTES bytes) -* to deterministically generate all randomness -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_indcpa_enc(uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins) { - polyvec sp, pkpv, ep, at[KYBER_K], bp; - poly v, k, epp; - uint8_t seed[KYBER_SYMBYTES]; - uint8_t nonce = 0; - - unpack_pk(&pkpv, seed, pk); - PQCLEAN_KYBER102490S_CLEAN_poly_frommsg(&k, m); - gen_at(at, seed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(sp.vec + i, coins, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(ep.vec + i, coins, nonce++); - } - PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(&epp, coins, nonce++); - - PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(&sp); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(&bp.vec[i], &at[i], &sp); - } - - PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(&v, &pkpv, &sp); - - PQCLEAN_KYBER102490S_CLEAN_polyvec_invntt(&bp); - PQCLEAN_KYBER102490S_CLEAN_poly_invntt(&v); - - PQCLEAN_KYBER102490S_CLEAN_polyvec_add(&bp, &bp, &ep); - PQCLEAN_KYBER102490S_CLEAN_poly_add(&v, &v, &epp); - PQCLEAN_KYBER102490S_CLEAN_poly_add(&v, &v, &k); - PQCLEAN_KYBER102490S_CLEAN_polyvec_reduce(&bp); - PQCLEAN_KYBER102490S_CLEAN_poly_reduce(&v); - - pack_ciphertext(c, &bp, &v); -} - -/************************************************* -* Name: indcpa_dec -* -* Description: Decryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *m: pointer to output decrypted message (of length KYBER_INDCPA_MSGBYTES) -* - const uint8_t *c: pointer to input ciphertext (of length KYBER_INDCPA_BYTES) -* - const uint8_t *sk: pointer to input secret key (of length KYBER_INDCPA_SECRETKEYBYTES) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_indcpa_dec(uint8_t *m, - const uint8_t *c, - const uint8_t *sk) { - polyvec bp, skpv; - poly v, mp; - - unpack_ciphertext(&bp, &v, c); - unpack_sk(&skpv, sk); - - PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(&bp); - PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(&mp, &skpv, &bp); - PQCLEAN_KYBER102490S_CLEAN_poly_invntt(&mp); - - PQCLEAN_KYBER102490S_CLEAN_poly_sub(&mp, &v, &mp); - PQCLEAN_KYBER102490S_CLEAN_poly_reduce(&mp); - - PQCLEAN_KYBER102490S_CLEAN_poly_tomsg(m, &mp); -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.h deleted file mode 100644 index a245286306..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/indcpa.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H - -#include - -void PQCLEAN_KYBER102490S_CLEAN_indcpa_keypair( - uint8_t *pk, - uint8_t *sk); - -void PQCLEAN_KYBER102490S_CLEAN_indcpa_enc( - uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins); - -void PQCLEAN_KYBER102490S_CLEAN_indcpa_dec( - uint8_t *m, - const uint8_t *c, - const uint8_t *sk); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/kem.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/kem.c deleted file mode 100644 index 3ed2331557..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/kem.c +++ /dev/null @@ -1,99 +0,0 @@ -#include "api.h" -#include "indcpa.h" -#include "params.h" -#include "randombytes.h" -#include "symmetric.h" -#include "verify.h" - -#include -/************************************************* -* Name: crypto_kem_keypair -* -* Description: Generates public and private key -* for CCA-secure Kyber key encapsulation mechanism -* -* Arguments: - uint8_t *pk: pointer to output public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - PQCLEAN_KYBER102490S_CLEAN_indcpa_keypair(pk, sk); - for (i = 0; i < KYBER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + KYBER_INDCPA_SECRETKEYBYTES] = pk[i]; - } - hash_h(sk + KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); - randombytes(sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES); /* Value z for pseudo-random output on reject */ - return 0; -} - -/************************************************* -* Name: crypto_kem_enc -* -* Description: Generates cipher text and shared -* secret for given public key -* -* Arguments: - uint8_t *ct: pointer to output cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *pk: pointer to input public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - uint8_t buf[2 * KYBER_SYMBYTES]; - - randombytes(buf, KYBER_SYMBYTES); - hash_h(buf, buf, KYBER_SYMBYTES); /* Don't release system RNG output */ - - hash_h(buf + KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); /* Multitarget countermeasure for coins + contributory KEM */ - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER102490S_CLEAN_indcpa_enc(ct, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} - -/************************************************* -* Name: crypto_kem_dec -* -* Description: Generates shared secret for given -* cipher text and private key -* -* Arguments: - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *ct: pointer to input cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - const uint8_t *sk: pointer to input private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0. -* -* On failure, ss will contain a pseudo-random value. -**************************************************/ -int PQCLEAN_KYBER102490S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[KYBER_CIPHERTEXTBYTES]; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - const uint8_t *pk = sk + KYBER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_KYBER102490S_CLEAN_indcpa_dec(buf, ct, sk); - - for (i = 0; i < KYBER_SYMBYTES; i++) { /* Multitarget countermeasure for coins + contributory KEM */ - buf[KYBER_SYMBYTES + i] = sk[KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES + i]; /* Save hash by storing H(pk) in sk */ - } - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER102490S_CLEAN_indcpa_enc(cmp, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - fail = PQCLEAN_KYBER102490S_CLEAN_verify(ct, cmp, KYBER_CIPHERTEXTBYTES); - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - - PQCLEAN_KYBER102490S_CLEAN_cmov(kr, sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES, fail); /* Overwrite pre-k with z on re-encryption failure */ - - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.c deleted file mode 100644 index aa395c0bf0..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "ntt.h" -#include "params.h" -#include "reduce.h" - -#include -#include - -/* Code to generate zetas and zetas_inv used in the number-theoretic transform: - -#define KYBER_ROOT_OF_UNITY 17 - -static const uint16_t tree[128] = { - 0, 64, 32, 96, 16, 80, 48, 112, 8, 72, 40, 104, 24, 88, 56, 120, - 4, 68, 36, 100, 20, 84, 52, 116, 12, 76, 44, 108, 28, 92, 60, 124, - 2, 66, 34, 98, 18, 82, 50, 114, 10, 74, 42, 106, 26, 90, 58, 122, - 6, 70, 38, 102, 22, 86, 54, 118, 14, 78, 46, 110, 30, 94, 62, 126, - 1, 65, 33, 97, 17, 81, 49, 113, 9, 73, 41, 105, 25, 89, 57, 121, - 5, 69, 37, 101, 21, 85, 53, 117, 13, 77, 45, 109, 29, 93, 61, 125, - 3, 67, 35, 99, 19, 83, 51, 115, 11, 75, 43, 107, 27, 91, 59, 123, - 7, 71, 39, 103, 23, 87, 55, 119, 15, 79, 47, 111, 31, 95, 63, 127}; - - -static int16_t fqmul(int16_t a, int16_t b) { - return montgomery_reduce((int32_t)a*b); -} - -void init_ntt() { - unsigned int i, j, k; - int16_t tmp[128]; - - tmp[0] = MONT; - for(i = 1; i < 128; ++i) - tmp[i] = fqmul(tmp[i-1], KYBER_ROOT_OF_UNITY*MONT % KYBER_Q); - - for(i = 0; i < 128; ++i) - zetas[i] = tmp[tree[i]]; - - k = 0; - for(i = 64; i >= 1; i >>= 1) - for(j = i; j < 2*i; ++j) - zetas_inv[k++] = -tmp[128 - tree[j]]; - - zetas_inv[127] = MONT * (MONT * (KYBER_Q - 1) * ((KYBER_Q - 1)/128) % KYBER_Q) % KYBER_Q; -} - -*/ -const int16_t PQCLEAN_KYBER102490S_CLEAN_zetas[128] = { - 2285, 2571, 2970, 1812, 1493, 1422, 287, 202, 3158, 622, 1577, 182, 962, 2127, 1855, 1468, - 573, 2004, 264, 383, 2500, 1458, 1727, 3199, 2648, 1017, 732, 608, 1787, 411, 3124, 1758, - 1223, 652, 2777, 1015, 2036, 1491, 3047, 1785, 516, 3321, 3009, 2663, 1711, 2167, 126, 1469, - 2476, 3239, 3058, 830, 107, 1908, 3082, 2378, 2931, 961, 1821, 2604, 448, 2264, 677, 2054, - 2226, 430, 555, 843, 2078, 871, 1550, 105, 422, 587, 177, 3094, 3038, 2869, 1574, 1653, - 3083, 778, 1159, 3182, 2552, 1483, 2727, 1119, 1739, 644, 2457, 349, 418, 329, 3173, 3254, - 817, 1097, 603, 610, 1322, 2044, 1864, 384, 2114, 3193, 1218, 1994, 2455, 220, 2142, 1670, - 2144, 1799, 2051, 794, 1819, 2475, 2459, 478, 3221, 3021, 996, 991, 958, 1869, 1522, 1628 -}; - -const int16_t PQCLEAN_KYBER102490S_CLEAN_zetas_inv[128] = { - 1701, 1807, 1460, 2371, 2338, 2333, 308, 108, 2851, 870, 854, 1510, 2535, 1278, 1530, 1185, - 1659, 1187, 3109, 874, 1335, 2111, 136, 1215, 2945, 1465, 1285, 2007, 2719, 2726, 2232, 2512, - 75, 156, 3000, 2911, 2980, 872, 2685, 1590, 2210, 602, 1846, 777, 147, 2170, 2551, 246, - 1676, 1755, 460, 291, 235, 3152, 2742, 2907, 3224, 1779, 2458, 1251, 2486, 2774, 2899, 1103, - 1275, 2652, 1065, 2881, 725, 1508, 2368, 398, 951, 247, 1421, 3222, 2499, 271, 90, 853, - 1860, 3203, 1162, 1618, 666, 320, 8, 2813, 1544, 282, 1838, 1293, 2314, 552, 2677, 2106, - 1571, 205, 2918, 1542, 2721, 2597, 2312, 681, 130, 1602, 1871, 829, 2946, 3065, 1325, 2756, - 1861, 1474, 1202, 2367, 3147, 1752, 2707, 171, 3127, 3042, 1907, 1836, 1517, 359, 758, 1441 -}; - - -/************************************************* -* Name: fqmul -* -* Description: Multiplication followed by Montgomery reduction -* -* Arguments: - int16_t a: first factor -* - int16_t b: second factor -* -* Returns 16-bit integer congruent to a*b*R^{-1} mod q -**************************************************/ -static int16_t fqmul(int16_t a, int16_t b) { - return PQCLEAN_KYBER102490S_CLEAN_montgomery_reduce((int32_t)a * b); -} - -/************************************************* -* Name: ntt -* -* Description: Inplace number-theoretic transform (NTT) in Rq -* input is in standard order, output is in bitreversed order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_ntt(int16_t poly[256]) { - size_t j, k = 1; - int16_t t, zeta; - - for (size_t len = 128; len >= 2; len >>= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER102490S_CLEAN_zetas[k++]; - for (j = start; j < start + len; ++j) { - t = fqmul(zeta, poly[j + len]); - poly[j + len] = poly[j] - t; - poly[j] = poly[j] + t; - } - } - } -} - -/************************************************* -* Name: invntt -* -* Description: Inplace inverse number-theoretic transform in Rq -* input is in bitreversed order, output is in standard order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_invntt(int16_t poly[256]) { - size_t j, k = 0; - int16_t t, zeta; - - for (size_t len = 2; len <= 128; len <<= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER102490S_CLEAN_zetas_inv[k++]; - for (j = start; j < start + len; ++j) { - t = poly[j]; - poly[j] = PQCLEAN_KYBER102490S_CLEAN_barrett_reduce(t + poly[j + len]); - poly[j + len] = t - poly[j + len]; - poly[j + len] = fqmul(zeta, poly[j + len]); - } - } - } - - for (j = 0; j < 256; ++j) { - poly[j] = fqmul(poly[j], PQCLEAN_KYBER102490S_CLEAN_zetas_inv[127]); - } -} - -/************************************************* -* Name: basemul -* -* Description: Multiplication of polynomials in Zq[X]/((X^2-zeta)) -* used for multiplication of elements in Rq in NTT domain -* -* Arguments: - int16_t r[2]: pointer to the output polynomial -* - const int16_t a[2]: pointer to the first factor -* - const int16_t b[2]: pointer to the second factor -* - int16_t zeta: integer defining the reduction polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta) { - r[0] = fqmul(a[1], b[1]); - r[0] = fqmul(r[0], zeta); - r[0] += fqmul(a[0], b[0]); - - r[1] = fqmul(a[0], b[1]); - r[1] += fqmul(a[1], b[0]); -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.h deleted file mode 100644 index dd4b75ae20..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NTT_H -#define NTT_H - -#include - -extern const int16_t PQCLEAN_KYBER102490S_CLEAN_zetas[128]; -extern const int16_t PQCLEAN_KYBER102490S_CLEAN_zetasinv[128]; - -void PQCLEAN_KYBER102490S_CLEAN_ntt(int16_t *poly); -void PQCLEAN_KYBER102490S_CLEAN_invntt(int16_t *poly); -void PQCLEAN_KYBER102490S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/params.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/params.h deleted file mode 100644 index 85dcf73abf..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/params.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change parameters below this line */ - -#define KYBER_N 256 -#define KYBER_Q 3329 - -#define KYBER_ETA 2 - -#define KYBER_SYMBYTES 32 /* size in bytes of hashes, and seeds */ -#define KYBER_SSBYTES 32 /* size in bytes of shared key */ - -#define KYBER_POLYBYTES 384 -#define KYBER_POLYVECBYTES (KYBER_K * KYBER_POLYBYTES) - - -#define KYBER_K 4 -#define KYBER_POLYCOMPRESSEDBYTES 160 -#define KYBER_POLYVECCOMPRESSEDBYTES (KYBER_K * 352) - -#define KYBER_INDCPA_MSGBYTES KYBER_SYMBYTES -#define KYBER_INDCPA_PUBLICKEYBYTES (KYBER_POLYVECBYTES + KYBER_SYMBYTES) -#define KYBER_INDCPA_SECRETKEYBYTES (KYBER_POLYVECBYTES) -#define KYBER_INDCPA_BYTES (KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES) - -#define KYBER_PUBLICKEYBYTES (KYBER_INDCPA_PUBLICKEYBYTES) -#define KYBER_SECRETKEYBYTES (KYBER_INDCPA_SECRETKEYBYTES + KYBER_INDCPA_PUBLICKEYBYTES + 2*KYBER_SYMBYTES) /* 32 bytes of additional space to save H(pk) */ -#define KYBER_CIPHERTEXTBYTES KYBER_INDCPA_BYTES - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.c deleted file mode 100644 index a2855378cb..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.c +++ /dev/null @@ -1,281 +0,0 @@ -#include "cbd.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "reduce.h" -#include "symmetric.h" - -#include -/************************************************* -* Name: poly_compress -* -* Description: Compression and subsequent serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYCOMPRESSEDBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_compress(uint8_t *r, poly *a) { - uint8_t t[8]; - size_t k = 0; - - PQCLEAN_KYBER102490S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N; i += 8) { - for (size_t j = 0; j < 8; j++) { - t[j] = ((((uint32_t)a->coeffs[i + j] << 5) + KYBER_Q / 2) / KYBER_Q) & 31; - } - - r[k] = (uint8_t)( t[0] | (t[1] << 5)); - r[k + 1] = (uint8_t)((t[1] >> 3) | (t[2] << 2) | (t[3] << 7)); - r[k + 2] = (uint8_t)((t[3] >> 1) | (t[4] << 4)); - r[k + 3] = (uint8_t)((t[4] >> 4) | (t[5] << 1) | (t[6] << 6)); - r[k + 4] = (uint8_t)((t[6] >> 2) | (t[7] << 3)); - k += 5; - } -} - -/************************************************* -* Name: poly_decompress -* -* Description: De-serialization and subsequent decompression of a polynomial; -* approximate inverse of poly_compress -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of length KYBER_POLYCOMPRESSEDBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_decompress(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N; i += 8) { - r->coeffs[i + 0] = (int16_t)( (((a[0] & 31) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 1] = (int16_t)(((((a[0] >> 5) | ((a[1] & 3) << 3)) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 2] = (int16_t)(((((a[1] >> 2) & 31) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 3] = (int16_t)(((((a[1] >> 7) | ((a[2] & 15) << 1)) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 4] = (int16_t)(((((a[2] >> 4) | ((a[3] & 1) << 4)) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 5] = (int16_t)(((((a[3] >> 1) & 31) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 6] = (int16_t)(((((a[3] >> 6) | ((a[4] & 7) << 2)) * KYBER_Q) + 16) >> 5); - r->coeffs[i + 7] = (int16_t)( (((a[4] >> 3) * KYBER_Q) + 16) >> 5); - a += 5; - } -} - -/************************************************* -* Name: poly_tobytes -* -* Description: Serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_tobytes(uint8_t *r, poly *a) { - int16_t t0, t1; - - PQCLEAN_KYBER102490S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N / 2; i++) { - t0 = a->coeffs[2 * i]; - t1 = a->coeffs[2 * i + 1]; - r[3 * i] = t0 & 0xff; - r[3 * i + 1] = (uint8_t)((t0 >> 8) | ((t1 & 0xf) << 4)); - r[3 * i + 2] = (uint8_t)(t1 >> 4); - } -} - -/************************************************* -* Name: poly_frombytes -* -* Description: De-serialization of a polynomial; -* inverse of poly_tobytes -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of KYBER_POLYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_frombytes(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N / 2; i++) { - r->coeffs[2 * i] = (int16_t)(a[3 * i] | ((uint16_t)a[3 * i + 1] & 0x0f) << 8); - r->coeffs[2 * i + 1] = (int16_t)(a[3 * i + 1] >> 4 | ((uint16_t)a[3 * i + 2] & 0xff) << 4); - } -} - -/************************************************* -* Name: poly_getnoise -* -* Description: Sample a polynomial deterministically from a seed and a nonce, -* with output polynomial close to centered binomial distribution -* with parameter KYBER_ETA -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *seed: pointer to input seed (pointing to array of length KYBER_SYMBYTES bytes) -* - uint8_t nonce: one-byte input nonce -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce) { - uint8_t buf[KYBER_ETA * KYBER_N / 4]; - - prf(buf, KYBER_ETA * KYBER_N / 4, seed, nonce); - PQCLEAN_KYBER102490S_CLEAN_cbd(r, buf); -} - -/************************************************* -* Name: poly_ntt -* -* Description: Computes negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in normal order, output in bitreversed order -* -* Arguments: - uint16_t *r: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_ntt(poly *r) { - PQCLEAN_KYBER102490S_CLEAN_ntt(r->coeffs); - PQCLEAN_KYBER102490S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: poly_invntt -* -* Description: Computes inverse of negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in bitreversed order, output in normal order -* -* Arguments: - uint16_t *a: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_invntt(poly *r) { - PQCLEAN_KYBER102490S_CLEAN_invntt(r->coeffs); -} - -/************************************************* -* Name: poly_basemul -* -* Description: Multiplication of two polynomials in NTT domain -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N / 4; ++i) { - PQCLEAN_KYBER102490S_CLEAN_basemul( - r->coeffs + 4 * i, - a->coeffs + 4 * i, - b->coeffs + 4 * i, - PQCLEAN_KYBER102490S_CLEAN_zetas[64 + i]); - PQCLEAN_KYBER102490S_CLEAN_basemul( - r->coeffs + 4 * i + 2, - a->coeffs + 4 * i + 2, - b->coeffs + 4 * i + 2, - -PQCLEAN_KYBER102490S_CLEAN_zetas[64 + i]); - } -} - -/************************************************* -* Name: poly_frommont -* -* Description: Inplace conversion of all coefficients of a polynomial -* from Montgomery domain to normal domain -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_frommont(poly *r) { - const int16_t f = (1ULL << 32) % KYBER_Q; - - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER102490S_CLEAN_montgomery_reduce( - (int32_t)r->coeffs[i] * f); - } -} - -/************************************************* -* Name: poly_reduce -* -* Description: Applies Barrett reduction to all coefficients of a polynomial -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_reduce(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER102490S_CLEAN_barrett_reduce(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_csubq -* -* Description: Applies conditional subtraction of q to each coefficient of a polynomial -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_csubq(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER102490S_CLEAN_csubq(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_add -* -* Description: Add two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_add(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] + b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_sub -* -* Description: Subtract two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] - b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_frommsg -* -* Description: Convert 32-byte message to polynomial -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *msg: pointer to input message -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]) { - uint16_t mask; - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - for (size_t j = 0; j < 8; j++) { - mask = -((msg[i] >> j) & 1); - r->coeffs[8 * i + j] = mask & ((KYBER_Q + 1) / 2); - } - } -} - -/************************************************* -* Name: poly_tomsg -* -* Description: Convert polynomial to 32-byte message -* -* Arguments: - uint8_t *msg: pointer to output message -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a) { - uint16_t t; - - PQCLEAN_KYBER102490S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - msg[i] = 0; - for (size_t j = 0; j < 8; j++) { - t = (((a->coeffs[8 * i + j] << 1) + KYBER_Q / 2) / KYBER_Q) & 1; - msg[i] |= t << j; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.h deleted file mode 100644 index e483c05076..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/poly.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -/* - * Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial - * coeffs[0] + X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1] - */ -typedef struct { - int16_t coeffs[KYBER_N]; -} poly; - -void PQCLEAN_KYBER102490S_CLEAN_poly_compress(uint8_t *r, poly *a); -void PQCLEAN_KYBER102490S_CLEAN_poly_decompress(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER102490S_CLEAN_poly_tobytes(uint8_t *r, poly *a); -void PQCLEAN_KYBER102490S_CLEAN_poly_frombytes(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER102490S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]); -void PQCLEAN_KYBER102490S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a); - -void PQCLEAN_KYBER102490S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce); - -void PQCLEAN_KYBER102490S_CLEAN_poly_ntt(poly *r); -void PQCLEAN_KYBER102490S_CLEAN_poly_invntt(poly *r); -void PQCLEAN_KYBER102490S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER102490S_CLEAN_poly_frommont(poly *r); - -void PQCLEAN_KYBER102490S_CLEAN_poly_reduce(poly *r); -void PQCLEAN_KYBER102490S_CLEAN_poly_csubq(poly *r); - -void PQCLEAN_KYBER102490S_CLEAN_poly_add(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER102490S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.c deleted file mode 100644 index bd5a60b304..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.c +++ /dev/null @@ -1,185 +0,0 @@ -#include "polyvec.h" - -#include "poly.h" - -#include -#include -/************************************************* -* Name: polyvec_compress -* -* Description: Compress and serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECCOMPRESSEDBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a) { - PQCLEAN_KYBER102490S_CLEAN_polyvec_csubq(a); - - uint16_t t[8]; - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 8; j++) { - for (size_t k = 0; k < 8; k++) { - t[k] = ((((uint32_t)a->vec[i].coeffs[8 * j + k] << 11) + KYBER_Q / 2) / KYBER_Q) & 0x7ff; - } - - r[11 * j + 0] = (uint8_t)t[0]; - r[11 * j + 1] = (uint8_t)((t[0] >> 8) | ((t[1] & 0x1f) << 3)); - r[11 * j + 2] = (uint8_t)((t[1] >> 5) | ((t[2] & 0x03) << 6)); - r[11 * j + 3] = (uint8_t)((t[2] >> 2)); - r[11 * j + 4] = (uint8_t)((t[2] >> 10) | ((t[3] & 0x7f) << 1)); - r[11 * j + 5] = (uint8_t)((t[3] >> 7) | ((t[4] & 0x0f) << 4)); - r[11 * j + 6] = (uint8_t)((t[4] >> 4) | ((t[5] & 0x01) << 7)); - r[11 * j + 7] = (uint8_t)((t[5] >> 1)); - r[11 * j + 8] = (uint8_t)((t[5] >> 9) | ((t[6] & 0x3f) << 2)); - r[11 * j + 9] = (uint8_t)((t[6] >> 6) | ((t[7] & 0x07) << 5)); - r[11 * j + 10] = (uint8_t)((t[7] >> 3)); - } - r += 352; - } -} - -/************************************************* -* Name: polyvec_decompress -* -* Description: De-serialize and decompress vector of polynomials; -* approximate inverse of polyvec_compress -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - uint8_t *a: pointer to input byte array (of length KYBER_POLYVECCOMPRESSEDBYTES) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 8; j++) { - r->vec[i].coeffs[8 * j + 0] = (int16_t)( (((a[11 * j + 0] | (((uint32_t)a[11 * j + 1] & 0x07) << 8)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 1] = (int16_t)(((((a[11 * j + 1] >> 3) | (((uint32_t)a[11 * j + 2] & 0x3f) << 5)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 2] = (int16_t)(((((a[11 * j + 2] >> 6) | (((uint32_t)a[11 * j + 3] & 0xff) << 2) | (((uint32_t)a[11 * j + 4] & 0x01) << 10)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 3] = (int16_t)(((((a[11 * j + 4] >> 1) | (((uint32_t)a[11 * j + 5] & 0x0f) << 7)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 4] = (int16_t)(((((a[11 * j + 5] >> 4) | (((uint32_t)a[11 * j + 6] & 0x7f) << 4)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 5] = (int16_t)(((((a[11 * j + 6] >> 7) | (((uint32_t)a[11 * j + 7] & 0xff) << 1) | (((uint32_t)a[11 * j + 8] & 0x03) << 9)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 6] = (int16_t)(((((a[11 * j + 8] >> 2) | (((uint32_t)a[11 * j + 9] & 0x1f) << 6)) * KYBER_Q) + 1024) >> 11); - r->vec[i].coeffs[8 * j + 7] = (int16_t)(((((a[11 * j + 9] >> 5) | (((uint32_t)a[11 * j + 10] & 0xff) << 3)) * KYBER_Q) + 1024) >> 11); - } - a += 352; - } -} - -/************************************************* -* Name: polyvec_tobytes -* -* Description: Serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_tobytes(r + i * KYBER_POLYBYTES, &a->vec[i]); - } -} - -/************************************************* -* Name: polyvec_frombytes -* -* Description: De-serialize vector of polynomials; -* inverse of polyvec_tobytes -* -* Arguments: - uint8_t *r: pointer to output byte array -* - const polyvec *a: pointer to input vector of polynomials (of length KYBER_POLYVECBYTES) -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_frombytes(&r->vec[i], a + i * KYBER_POLYBYTES); - } -} - -/************************************************* -* Name: polyvec_ntt -* -* Description: Apply forward NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_ntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_invntt -* -* Description: Apply inverse NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_invntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_invntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_pointwise_acc -* -* Description: Pointwise multiply elements of a and b and accumulate into r -* -* Arguments: - poly *r: pointer to output polynomial -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b) { - poly t; - - PQCLEAN_KYBER102490S_CLEAN_poly_basemul(r, &a->vec[0], &b->vec[0]); - for (size_t i = 1; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_basemul(&t, &a->vec[i], &b->vec[i]); - PQCLEAN_KYBER102490S_CLEAN_poly_add(r, r, &t); - } - - PQCLEAN_KYBER102490S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: polyvec_reduce -* -* Description: Applies Barrett reduction to each coefficient -* of each element of a vector of polynomials -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_reduce(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_reduce(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_csubq -* -* Description: Applies conditional subtraction of q to each coefficient -* of each element of a vector of polynomials -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_csubq(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_csubq(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_add -* -* Description: Add vectors of polynomials -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER102490S_CLEAN_poly_add(&r->vec[i], &a->vec[i], &b->vec[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.h deleted file mode 100644 index 9df6e4d9ce..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/polyvec.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef POLYVEC_H -#define POLYVEC_H - -#include "params.h" -#include "poly.h" - -#include - -typedef struct { - poly vec[KYBER_K]; -} polyvec; - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER102490S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER102490S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_ntt(polyvec *r); -void PQCLEAN_KYBER102490S_CLEAN_polyvec_invntt(polyvec *r); - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b); - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_reduce(polyvec *r); -void PQCLEAN_KYBER102490S_CLEAN_polyvec_csubq(polyvec *r); - -void PQCLEAN_KYBER102490S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.c deleted file mode 100644 index b7b3722bf0..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "reduce.h" - -#include "params.h" - -#include -/************************************************* -* Name: montgomery_reduce -* -* Description: Montgomery reduction; given a 32-bit integer a, computes -* 16-bit integer congruent to a * R^-1 mod q, -* where R=2^16 -* -* Arguments: - int32_t a: input integer to be reduced; has to be in {-q2^15,...,q2^15-1} -* -* Returns: integer in {-q+1,...,q-1} congruent to a * R^-1 modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER102490S_CLEAN_montgomery_reduce(int32_t a) { - int32_t t; - int16_t u; - - u = (int16_t)(a * (int64_t)QINV); - t = (int32_t)u * KYBER_Q; - t = a - t; - t >>= 16; - return (int16_t)t; -} - -/************************************************* -* Name: barrett_reduce -* -* Description: Barrett reduction; given a 16-bit integer a, computes -* 16-bit integer congruent to a mod q in {0,...,q} -* -* Arguments: - int16_t a: input integer to be reduced -* -* Returns: integer in {0,...,q} congruent to a modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER102490S_CLEAN_barrett_reduce(int16_t a) { - int32_t t; - const int32_t v = (1U << 26) / KYBER_Q + 1; - - t = v * a; - t >>= 26; - t *= KYBER_Q; - return a - (int16_t)t; -} - -/************************************************* -* Name: csubq -* -* Description: Conditionallly subtract q -* -* Arguments: - int16_t a: input integer -* -* Returns: a - q if a >= q, else a -**************************************************/ -int16_t PQCLEAN_KYBER102490S_CLEAN_csubq(int16_t a) { - a -= KYBER_Q; - a += (a >> 15) & KYBER_Q; - return a; -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.h deleted file mode 100644 index 04a43f8581..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/reduce.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef REDUCE_H -#define REDUCE_H - -#include - -#define MONT 2285 // 2^16 % Q -#define QINV 62209 // q^(-1) mod 2^16 - -int16_t PQCLEAN_KYBER102490S_CLEAN_montgomery_reduce(int32_t a); - -int16_t PQCLEAN_KYBER102490S_CLEAN_barrett_reduce(int16_t a); - -int16_t PQCLEAN_KYBER102490S_CLEAN_csubq(int16_t a); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/symmetric.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/symmetric.h deleted file mode 100644 index df1faa565f..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/symmetric.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SYMMETRIC_H -#define SYMMETRIC_H - -#include "params.h" - - -#include "aes256ctr.h" -#include "sha2.h" - -#define hash_h(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) -#define hash_g(OUT, IN, INBYTES) sha512(OUT, IN, INBYTES) -#define xof_absorb(STATE, IN, X, Y) PQCLEAN_KYBER102490S_CLEAN_aes256xof_absorb(STATE, IN, X, Y) -#define xof_squeezeblocks(OUT, OUTBLOCKS, STATE) PQCLEAN_KYBER102490S_CLEAN_aes256xof_squeezeblocks(OUT, OUTBLOCKS, STATE) -#define xof_ctx_release(STATE) PQCLEAN_KYBER102490S_CLEAN_aes256xof_ctx_release(STATE) -#define prf(OUT, OUTBYTES, KEY, NONCE) PQCLEAN_KYBER102490S_CLEAN_aes256_prf(OUT, OUTBYTES, KEY, NONCE) -#define kdf(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) - -#define XOF_BLOCKBYTES 64 - -typedef aes256xof_ctx xof_state; - - -#endif /* SYMMETRIC_H */ diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.c b/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.c deleted file mode 100644 index 5f98ba9d68..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "verify.h" - -#include -#include - -/************************************************* -* Name: verify -* -* Description: Compare two arrays for equality in constant time. -* -* Arguments: const uint8_t *a: pointer to first byte array -* const uint8_t *b: pointer to second byte array -* size_t len: length of the byte arrays -* -* Returns 0 if the byte arrays are equal, 1 otherwise -**************************************************/ -uint8_t PQCLEAN_KYBER102490S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-r) >> 63; - return (uint8_t)r; -} - -/************************************************* -* Name: cmov -* -* Description: Copy len bytes from x to r if b is 1; -* don't modify x if b is 0. Requires b to be in {0,1}; -* assumes two's complement representation of negative integers. -* Runs in constant time. -* -* Arguments: uint8_t *r: pointer to output byte array -* const uint8_t *x: pointer to input byte array -* size_t len: Amount of bytes to be copied -* uint8_t b: Condition bit; has to be in {0,1} -**************************************************/ -void PQCLEAN_KYBER102490S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.h b/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.h deleted file mode 100644 index 3afd3feae5..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_90s_clean/verify.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include -#include - -uint8_t PQCLEAN_KYBER102490S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - -void PQCLEAN_KYBER102490S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber1024_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber1024_avx2/oqs_unsupported.c deleted file mode 100644 index 79f1facc6e..0000000000 --- a/src/kem/kyber/pqclean_kyber1024_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber1024_avx2_unsupported=1; diff --git a/src/kem/kyber/pqclean_kyber1024_90s_clean/LICENSE b/src/kem/kyber/pqclean_kyber512-90s_avx2/LICENSE similarity index 100% rename from src/kem/kyber/pqclean_kyber1024_90s_clean/LICENSE rename to src/kem/kyber/pqclean_kyber512-90s_avx2/LICENSE diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/aes256ctr.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/aes256ctr.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/aes256ctr.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/aes256ctr.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/aes256ctr.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/aes256ctr.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/aes256ctr.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/aes256ctr.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/api.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/api.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/api.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/api.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/basemul.S b/src/kem/kyber/pqclean_kyber512-90s_avx2/basemul.S similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/basemul.S rename to src/kem/kyber/pqclean_kyber512-90s_avx2/basemul.S diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/cbd.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/cbd.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/cbd.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/cbd.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/cbd.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/cbd.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/cbd.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/cbd.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/consts.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/consts.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/consts.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/consts.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/consts.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/consts.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/consts.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/consts.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/fq.inc b/src/kem/kyber/pqclean_kyber512-90s_avx2/fq.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/fq.inc rename to src/kem/kyber/pqclean_kyber512-90s_avx2/fq.inc diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/fq.s b/src/kem/kyber/pqclean_kyber512-90s_avx2/fq.s similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/fq.s rename to src/kem/kyber/pqclean_kyber512-90s_avx2/fq.s diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/indcpa.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/indcpa.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/indcpa.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/indcpa.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/indcpa.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/indcpa.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/indcpa.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/indcpa.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/invntt.s b/src/kem/kyber/pqclean_kyber512-90s_avx2/invntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/invntt.s rename to src/kem/kyber/pqclean_kyber512-90s_avx2/invntt.s diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/kem.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/kem.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/kem.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/kem.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/ntt.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/ntt.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/ntt.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/ntt.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/ntt.s b/src/kem/kyber/pqclean_kyber512-90s_avx2/ntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/ntt.s rename to src/kem/kyber/pqclean_kyber512-90s_avx2/ntt.s diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/params.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/params.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/params.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/params.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/poly.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/poly.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/poly.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/poly.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/poly.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/poly.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/poly.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/poly.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/polyvec.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/polyvec.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/polyvec.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/polyvec.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/polyvec.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/polyvec.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/polyvec.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/polyvec.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/reduce.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/reduce.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/reduce.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/reduce.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/rejsample.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/rejsample.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/rejsample.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/rejsample.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/rejsample.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/rejsample.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/rejsample.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/rejsample.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/shuffle.inc b/src/kem/kyber/pqclean_kyber512-90s_avx2/shuffle.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/shuffle.inc rename to src/kem/kyber/pqclean_kyber512-90s_avx2/shuffle.inc diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/shuffle.s b/src/kem/kyber/pqclean_kyber512-90s_avx2/shuffle.s similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/shuffle.s rename to src/kem/kyber/pqclean_kyber512-90s_avx2/shuffle.s diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/symmetric.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/symmetric.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/symmetric.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/symmetric.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/verify.c b/src/kem/kyber/pqclean_kyber512-90s_avx2/verify.c similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/verify.c rename to src/kem/kyber/pqclean_kyber512-90s_avx2/verify.c diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/verify.h b/src/kem/kyber/pqclean_kyber512-90s_avx2/verify.h similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/verify.h rename to src/kem/kyber/pqclean_kyber512-90s_avx2/verify.h diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber512_90s_avx2/oqs_unsupported.c deleted file mode 100644 index 19f5ee593b..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber512_90s_avx2_unsupported=1; diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/LICENSE b/src/kem/kyber/pqclean_kyber512_90s_clean/LICENSE deleted file mode 100644 index 7b02ea1b27..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -kyber-20170627 -Public Domain -Authors: Joppe Bos, - Léo Ducas, - Eike Kiltz , - Tancrède Lepoint, - Vadim Lyubashevsky, - John Schanck, - Peter Schwabe, - Gregor Seiler, - Damien Stehlé - -For Keccak and AES we are using public-domain -code from sources and by authors listed in -comments on top of the respective files. diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.c b/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.c deleted file mode 100644 index d15194b314..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.c +++ /dev/null @@ -1,100 +0,0 @@ -#include "aes256ctr.h" -#include "aes.h" -#include -#include -#include - -static inline void br_enc32be(unsigned char *dst, uint32_t x) { - dst[3] = (unsigned char)x; - dst[2] = (unsigned char)(x >> 8); - dst[1] = (unsigned char)(x >> 16); - dst[0] = (unsigned char)(x >> 24); -} - -static void aes256_ctr_xof(unsigned char *out, size_t outlen, const unsigned char *iv, uint32_t ctr, const aes256ctx *ctx) { - uint8_t ivw[16]; - uint8_t buf[AES_BLOCKBYTES]; - size_t i; - - memcpy(ivw, iv, AESCTR_NONCEBYTES); - br_enc32be(ivw + AESCTR_NONCEBYTES, ctr); - - while (outlen > AES_BLOCKBYTES) { - aes256_ecb(out, ivw, 1, ctx); - br_enc32be(ivw + AESCTR_NONCEBYTES, ++ctr); - out += AES_BLOCKBYTES; - outlen -= AES_BLOCKBYTES; - } - if (outlen > 0) { - aes256_ecb(buf, ivw, 1, ctx); - for (i = 0; i < outlen; i++) { - out[i] = buf[i]; - } - } -} - -/************************************************* -* Name: aes256_prf -* -* Description: AES256 stream generation in CTR mode using 32-bit counter, -* nonce is zero-padded to 12 bytes, counter starts at zero -* -* Arguments: - uint8_t *output: pointer to output -* - size_t outlen: length of requested output in bytes -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t nonce: 1-byte nonce (will be zero-padded to 12 bytes) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce) { - uint8_t iv[12]; - for (int i = 1; i < 12; i++) { - iv[i] = 0; - } - iv[0] = nonce; - - aes256ctx ctx; - aes256_ctr_keyexp(&ctx, key); - aes256_ctr(output, outlen, iv, &ctx); - aes256_ctx_release(&ctx); -} - -/************************************************* -* Name: aes256xof_absorb -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* "absorbs" a 32-byte key and two additional bytes that are zero-padded -* to a 12-byte nonce -* -* Arguments: - aes256xof_ctx *s: pointer to state to "absorb" key and IV into -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t x: first additional byte to "absorb" -* - uint8_t y: second additional byte to "absorb" -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y) { - aes256_ecb_keyexp(&s->sk_exp, key); - for (int i = 2; i < 12; i++) { - s->iv[i] = 0; - } - s->iv[0] = x; - s->iv[1] = y; - s->ctr = 0; -} - -/************************************************* -* Name: aes256xof_squeezeblocks -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* generates 4 blocks out AES256-CTR output -* -* Arguments: - uint8_t *out: pointer to output -* - size_t nblocks: number of reqested 64-byte output blocks -* - aes256xof_ctx *s: AES "state", i.e. expanded key and IV -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s) { - aes256_ctr_xof(out, nblocks * 64, s->iv, s->ctr, &s->sk_exp); - s->ctr += (uint32_t) (4 * nblocks); -} - -/** Free the AES ctx **/ -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s) { - aes256_ctx_release(&s->sk_exp); -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.h b/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.h deleted file mode 100644 index 3efa256731..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/aes256ctr.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef AES256CTR_H -#define AES256CTR_H - -#include "aes.h" - -#include -#include - -typedef struct { - aes256ctx sk_exp; - uint8_t iv[12]; - uint32_t ctr; -} aes256xof_ctx; - -void PQCLEAN_KYBER51290S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce); -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y); -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s); -void PQCLEAN_KYBER51290S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/api.h b/src/kem/kyber/pqclean_kyber512_90s_clean/api.h deleted file mode 100644 index 37dd682b7a..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_KYBER51290S_CLEAN_API_H -#define PQCLEAN_KYBER51290S_CLEAN_API_H - -#include - -#define PQCLEAN_KYBER51290S_CLEAN_CRYPTO_SECRETKEYBYTES 1632 -#define PQCLEAN_KYBER51290S_CLEAN_CRYPTO_PUBLICKEYBYTES 800 -#define PQCLEAN_KYBER51290S_CLEAN_CRYPTO_CIPHERTEXTBYTES 736 -#define PQCLEAN_KYBER51290S_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_KYBER51290S_CLEAN_CRYPTO_ALGNAME "Kyber512-90s" - -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.c b/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.c deleted file mode 100644 index ab69db4fdf..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "cbd.h" -#include "params.h" - -#include -#include - -/************************************************* -* Name: load32_littleendian -* -* Description: load bytes into a 32-bit integer -* in little-endian order -* -* Arguments: - const uint8_t *x: pointer to input byte array -* -* Returns 32-bit unsigned integer loaded from x -**************************************************/ -static uint32_t load32_littleendian(const uint8_t *x) { - uint32_t r; - r = (uint32_t)x[0]; - r |= (uint32_t)x[1] << 8; - r |= (uint32_t)x[2] << 16; - r |= (uint32_t)x[3] << 24; - return r; -} - -/************************************************* -* Name: cbd -* -* Description: Given an array of uniformly random bytes, compute -* polynomial with coefficients distributed according to -* a centered binomial distribution with parameter KYBER_ETA -* specialized for KYBER_ETA=2 -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *buf: pointer to input byte array -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_cbd(poly *r, const uint8_t *buf) { - uint32_t d, t; - int16_t a, b; - - for (size_t i = 0; i < KYBER_N / 8; i++) { - t = load32_littleendian(buf + 4 * i); - d = t & 0x55555555; - d += (t >> 1) & 0x55555555; - - for (size_t j = 0; j < 8; j++) { - a = (d >> 4 * j) & 0x3; - b = (d >> (4 * j + 2)) & 0x3; - r->coeffs[8 * i + j] = a - b; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.h b/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.h deleted file mode 100644 index a3f4c21d28..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/cbd.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CBD_H -#define CBD_H - -#include "poly.h" - -void PQCLEAN_KYBER51290S_CLEAN_cbd(poly *r, const uint8_t *buf); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.c b/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.c deleted file mode 100644 index 5f0ec6e0c5..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.c +++ /dev/null @@ -1,300 +0,0 @@ -#include "indcpa.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "polyvec.h" -#include "randombytes.h" -#include "symmetric.h" - -#include - -/************************************************* -* Name: pack_pk -* -* Description: Serialize the public key as concatenation of the -* serialized vector of polynomials pk -* and the public seed used to generate the matrix A. -* -* Arguments: uint8_t *r: pointer to the output serialized public key -* const poly *pk: pointer to the input public-key polynomial -* const uint8_t *seed: pointer to the input public seed -**************************************************/ -static void pack_pk(uint8_t *r, polyvec *pk, const uint8_t *seed) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_tobytes(r, pk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - r[i + KYBER_POLYVECBYTES] = seed[i]; - } -} - -/************************************************* -* Name: unpack_pk -* -* Description: De-serialize public key from a byte array; -* approximate inverse of pack_pk -* -* Arguments: - polyvec *pk: pointer to output public-key vector of polynomials -* - uint8_t *seed: pointer to output seed to generate matrix A -* - const uint8_t *packedpk: pointer to input serialized public key -**************************************************/ -static void unpack_pk(polyvec *pk, uint8_t *seed, const uint8_t *packedpk) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_frombytes(pk, packedpk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - seed[i] = packedpk[i + KYBER_POLYVECBYTES]; - } -} - -/************************************************* -* Name: pack_sk -* -* Description: Serialize the secret key -* -* Arguments: - uint8_t *r: pointer to output serialized secret key -* - const polyvec *sk: pointer to input vector of polynomials (secret key) -**************************************************/ -static void pack_sk(uint8_t *r, polyvec *sk) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_tobytes(r, sk); -} - -/************************************************* -* Name: unpack_sk -* -* Description: De-serialize the secret key; -* inverse of pack_sk -* -* Arguments: - polyvec *sk: pointer to output vector of polynomials (secret key) -* - const uint8_t *packedsk: pointer to input serialized secret key -**************************************************/ -static void unpack_sk(polyvec *sk, const uint8_t *packedsk) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_frombytes(sk, packedsk); -} - -/************************************************* -* Name: pack_ciphertext -* -* Description: Serialize the ciphertext as concatenation of the -* compressed and serialized vector of polynomials b -* and the compressed and serialized polynomial v -* -* Arguments: uint8_t *r: pointer to the output serialized ciphertext -* const poly *pk: pointer to the input vector of polynomials b -* const uint8_t *seed: pointer to the input polynomial v -**************************************************/ -static void pack_ciphertext(uint8_t *r, polyvec *b, poly *v) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_compress(r, b); - PQCLEAN_KYBER51290S_CLEAN_poly_compress(r + KYBER_POLYVECCOMPRESSEDBYTES, v); -} - -/************************************************* -* Name: unpack_ciphertext -* -* Description: De-serialize and decompress ciphertext from a byte array; -* approximate inverse of pack_ciphertext -* -* Arguments: - polyvec *b: pointer to the output vector of polynomials b -* - poly *v: pointer to the output polynomial v -* - const uint8_t *c: pointer to the input serialized ciphertext -**************************************************/ -static void unpack_ciphertext(polyvec *b, poly *v, const uint8_t *c) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_decompress(b, c); - PQCLEAN_KYBER51290S_CLEAN_poly_decompress(v, c + KYBER_POLYVECCOMPRESSEDBYTES); -} - -/************************************************* -* Name: rej_uniform -* -* Description: Run rejection sampling on uniform random bytes to generate -* uniform random integers mod q -* -* Arguments: - int16_t *r: pointer to output buffer -* - size_t len: requested number of 16-bit integers (uniform mod q) -* - const uint8_t *buf: pointer to input buffer (assumed to be uniform random bytes) -* - size_t buflen: length of input buffer in bytes -* -* Returns number of sampled 16-bit integers (at most len) -**************************************************/ -static size_t rej_uniform(int16_t *r, size_t len, const uint8_t *buf, size_t buflen) { - size_t ctr, pos; - uint16_t val; - - ctr = pos = 0; - while (ctr < len && pos + 2 <= buflen) { - val = (uint16_t)(buf[pos] | ((uint16_t)buf[pos + 1] << 8)); - pos += 2; - - if (val < 19 * KYBER_Q) { - val -= (uint16_t)((val >> 12) * KYBER_Q); // Barrett reduction - r[ctr++] = (int16_t)val; - } - } - - return ctr; -} - -#define gen_a(A,B) gen_matrix(A,B,0) -#define gen_at(A,B) gen_matrix(A,B,1) - -/************************************************* -* Name: gen_matrix -* -* Description: Deterministically generate matrix A (or the transpose of A) -* from a seed. Entries of the matrix are polynomials that look -* uniformly random. Performs rejection sampling on output of -* a XOF -* -* Arguments: - polyvec *a: pointer to ouptput matrix A -* - const uint8_t *seed: pointer to input seed -* - int transposed: boolean deciding whether A or A^T is generated -**************************************************/ -#define MAXNBLOCKS ((530+XOF_BLOCKBYTES)/XOF_BLOCKBYTES) /* 530 is expected number of required bytes */ -static void gen_matrix(polyvec *a, const uint8_t *seed, int transposed) { - size_t ctr; - uint8_t i, j; - uint8_t buf[XOF_BLOCKBYTES * MAXNBLOCKS + 1]; - xof_state state; - - for (i = 0; i < KYBER_K; i++) { - for (j = 0; j < KYBER_K; j++) { - if (transposed) { - xof_absorb(&state, seed, i, j); - } else { - xof_absorb(&state, seed, j, i); - } - - xof_squeezeblocks(buf, MAXNBLOCKS, &state); - ctr = rej_uniform(a[i].vec[j].coeffs, KYBER_N, buf, MAXNBLOCKS * XOF_BLOCKBYTES); - - while (ctr < KYBER_N) { - xof_squeezeblocks(buf, 1, &state); - ctr += rej_uniform(a[i].vec[j].coeffs + ctr, KYBER_N - ctr, buf, XOF_BLOCKBYTES); - } - xof_ctx_release(&state); - } - } -} - -/************************************************* -* Name: indcpa_keypair -* -* Description: Generates public and private key for the CPA-secure -* public-key encryption scheme underlying Kyber -* -* Arguments: - uint8_t *pk: pointer to output public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (of length KYBER_INDCPA_SECRETKEYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_indcpa_keypair(uint8_t *pk, uint8_t *sk) { - polyvec a[KYBER_K], e, pkpv, skpv; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t *publicseed = buf; - uint8_t *noiseseed = buf + KYBER_SYMBYTES; - uint8_t nonce = 0; - - randombytes(buf, KYBER_SYMBYTES); - hash_g(buf, buf, KYBER_SYMBYTES); - - gen_a(a, publicseed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(skpv.vec + i, noiseseed, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(e.vec + i, noiseseed, nonce++); - } - - PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(&skpv); - PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(&e); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(&pkpv.vec[i], &a[i], &skpv); - PQCLEAN_KYBER51290S_CLEAN_poly_frommont(&pkpv.vec[i]); - } - - PQCLEAN_KYBER51290S_CLEAN_polyvec_add(&pkpv, &pkpv, &e); - PQCLEAN_KYBER51290S_CLEAN_polyvec_reduce(&pkpv); - - pack_sk(sk, &skpv); - pack_pk(pk, &pkpv, publicseed); -} - -/************************************************* -* Name: indcpa_enc -* -* Description: Encryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *c: pointer to output ciphertext (of length KYBER_INDCPA_BYTES bytes) -* - const uint8_t *m: pointer to input message (of length KYBER_INDCPA_MSGBYTES bytes) -* - const uint8_t *pk: pointer to input public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - const uint8_t *coin: pointer to input random coins used as seed (of length KYBER_SYMBYTES bytes) -* to deterministically generate all randomness -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_indcpa_enc(uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins) { - polyvec sp, pkpv, ep, at[KYBER_K], bp; - poly v, k, epp; - uint8_t seed[KYBER_SYMBYTES]; - uint8_t nonce = 0; - - unpack_pk(&pkpv, seed, pk); - PQCLEAN_KYBER51290S_CLEAN_poly_frommsg(&k, m); - gen_at(at, seed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(sp.vec + i, coins, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(ep.vec + i, coins, nonce++); - } - PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(&epp, coins, nonce++); - - PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(&sp); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(&bp.vec[i], &at[i], &sp); - } - - PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(&v, &pkpv, &sp); - - PQCLEAN_KYBER51290S_CLEAN_polyvec_invntt(&bp); - PQCLEAN_KYBER51290S_CLEAN_poly_invntt(&v); - - PQCLEAN_KYBER51290S_CLEAN_polyvec_add(&bp, &bp, &ep); - PQCLEAN_KYBER51290S_CLEAN_poly_add(&v, &v, &epp); - PQCLEAN_KYBER51290S_CLEAN_poly_add(&v, &v, &k); - PQCLEAN_KYBER51290S_CLEAN_polyvec_reduce(&bp); - PQCLEAN_KYBER51290S_CLEAN_poly_reduce(&v); - - pack_ciphertext(c, &bp, &v); -} - -/************************************************* -* Name: indcpa_dec -* -* Description: Decryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *m: pointer to output decrypted message (of length KYBER_INDCPA_MSGBYTES) -* - const uint8_t *c: pointer to input ciphertext (of length KYBER_INDCPA_BYTES) -* - const uint8_t *sk: pointer to input secret key (of length KYBER_INDCPA_SECRETKEYBYTES) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_indcpa_dec(uint8_t *m, - const uint8_t *c, - const uint8_t *sk) { - polyvec bp, skpv; - poly v, mp; - - unpack_ciphertext(&bp, &v, c); - unpack_sk(&skpv, sk); - - PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(&bp); - PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(&mp, &skpv, &bp); - PQCLEAN_KYBER51290S_CLEAN_poly_invntt(&mp); - - PQCLEAN_KYBER51290S_CLEAN_poly_sub(&mp, &v, &mp); - PQCLEAN_KYBER51290S_CLEAN_poly_reduce(&mp); - - PQCLEAN_KYBER51290S_CLEAN_poly_tomsg(m, &mp); -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.h b/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.h deleted file mode 100644 index e9207d944a..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/indcpa.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H - -#include - -void PQCLEAN_KYBER51290S_CLEAN_indcpa_keypair( - uint8_t *pk, - uint8_t *sk); - -void PQCLEAN_KYBER51290S_CLEAN_indcpa_enc( - uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins); - -void PQCLEAN_KYBER51290S_CLEAN_indcpa_dec( - uint8_t *m, - const uint8_t *c, - const uint8_t *sk); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/kem.c b/src/kem/kyber/pqclean_kyber512_90s_clean/kem.c deleted file mode 100644 index f5a6efbd6e..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/kem.c +++ /dev/null @@ -1,99 +0,0 @@ -#include "api.h" -#include "indcpa.h" -#include "params.h" -#include "randombytes.h" -#include "symmetric.h" -#include "verify.h" - -#include -/************************************************* -* Name: crypto_kem_keypair -* -* Description: Generates public and private key -* for CCA-secure Kyber key encapsulation mechanism -* -* Arguments: - uint8_t *pk: pointer to output public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - PQCLEAN_KYBER51290S_CLEAN_indcpa_keypair(pk, sk); - for (i = 0; i < KYBER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + KYBER_INDCPA_SECRETKEYBYTES] = pk[i]; - } - hash_h(sk + KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); - randombytes(sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES); /* Value z for pseudo-random output on reject */ - return 0; -} - -/************************************************* -* Name: crypto_kem_enc -* -* Description: Generates cipher text and shared -* secret for given public key -* -* Arguments: - uint8_t *ct: pointer to output cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *pk: pointer to input public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - uint8_t buf[2 * KYBER_SYMBYTES]; - - randombytes(buf, KYBER_SYMBYTES); - hash_h(buf, buf, KYBER_SYMBYTES); /* Don't release system RNG output */ - - hash_h(buf + KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); /* Multitarget countermeasure for coins + contributory KEM */ - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER51290S_CLEAN_indcpa_enc(ct, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} - -/************************************************* -* Name: crypto_kem_dec -* -* Description: Generates shared secret for given -* cipher text and private key -* -* Arguments: - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *ct: pointer to input cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - const uint8_t *sk: pointer to input private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0. -* -* On failure, ss will contain a pseudo-random value. -**************************************************/ -int PQCLEAN_KYBER51290S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[KYBER_CIPHERTEXTBYTES]; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - const uint8_t *pk = sk + KYBER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_KYBER51290S_CLEAN_indcpa_dec(buf, ct, sk); - - for (i = 0; i < KYBER_SYMBYTES; i++) { /* Multitarget countermeasure for coins + contributory KEM */ - buf[KYBER_SYMBYTES + i] = sk[KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES + i]; /* Save hash by storing H(pk) in sk */ - } - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER51290S_CLEAN_indcpa_enc(cmp, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - fail = PQCLEAN_KYBER51290S_CLEAN_verify(ct, cmp, KYBER_CIPHERTEXTBYTES); - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - - PQCLEAN_KYBER51290S_CLEAN_cmov(kr, sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES, fail); /* Overwrite pre-k with z on re-encryption failure */ - - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.c b/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.c deleted file mode 100644 index 28ee4c9562..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "ntt.h" -#include "params.h" -#include "reduce.h" - -#include -#include - -/* Code to generate zetas and zetas_inv used in the number-theoretic transform: - -#define KYBER_ROOT_OF_UNITY 17 - -static const uint16_t tree[128] = { - 0, 64, 32, 96, 16, 80, 48, 112, 8, 72, 40, 104, 24, 88, 56, 120, - 4, 68, 36, 100, 20, 84, 52, 116, 12, 76, 44, 108, 28, 92, 60, 124, - 2, 66, 34, 98, 18, 82, 50, 114, 10, 74, 42, 106, 26, 90, 58, 122, - 6, 70, 38, 102, 22, 86, 54, 118, 14, 78, 46, 110, 30, 94, 62, 126, - 1, 65, 33, 97, 17, 81, 49, 113, 9, 73, 41, 105, 25, 89, 57, 121, - 5, 69, 37, 101, 21, 85, 53, 117, 13, 77, 45, 109, 29, 93, 61, 125, - 3, 67, 35, 99, 19, 83, 51, 115, 11, 75, 43, 107, 27, 91, 59, 123, - 7, 71, 39, 103, 23, 87, 55, 119, 15, 79, 47, 111, 31, 95, 63, 127}; - - -static int16_t fqmul(int16_t a, int16_t b) { - return montgomery_reduce((int32_t)a*b); -} - -void init_ntt() { - unsigned int i, j, k; - int16_t tmp[128]; - - tmp[0] = MONT; - for(i = 1; i < 128; ++i) - tmp[i] = fqmul(tmp[i-1], KYBER_ROOT_OF_UNITY*MONT % KYBER_Q); - - for(i = 0; i < 128; ++i) - zetas[i] = tmp[tree[i]]; - - k = 0; - for(i = 64; i >= 1; i >>= 1) - for(j = i; j < 2*i; ++j) - zetas_inv[k++] = -tmp[128 - tree[j]]; - - zetas_inv[127] = MONT * (MONT * (KYBER_Q - 1) * ((KYBER_Q - 1)/128) % KYBER_Q) % KYBER_Q; -} - -*/ -const int16_t PQCLEAN_KYBER51290S_CLEAN_zetas[128] = { - 2285, 2571, 2970, 1812, 1493, 1422, 287, 202, 3158, 622, 1577, 182, 962, 2127, 1855, 1468, - 573, 2004, 264, 383, 2500, 1458, 1727, 3199, 2648, 1017, 732, 608, 1787, 411, 3124, 1758, - 1223, 652, 2777, 1015, 2036, 1491, 3047, 1785, 516, 3321, 3009, 2663, 1711, 2167, 126, 1469, - 2476, 3239, 3058, 830, 107, 1908, 3082, 2378, 2931, 961, 1821, 2604, 448, 2264, 677, 2054, - 2226, 430, 555, 843, 2078, 871, 1550, 105, 422, 587, 177, 3094, 3038, 2869, 1574, 1653, - 3083, 778, 1159, 3182, 2552, 1483, 2727, 1119, 1739, 644, 2457, 349, 418, 329, 3173, 3254, - 817, 1097, 603, 610, 1322, 2044, 1864, 384, 2114, 3193, 1218, 1994, 2455, 220, 2142, 1670, - 2144, 1799, 2051, 794, 1819, 2475, 2459, 478, 3221, 3021, 996, 991, 958, 1869, 1522, 1628 -}; - -const int16_t PQCLEAN_KYBER51290S_CLEAN_zetas_inv[128] = { - 1701, 1807, 1460, 2371, 2338, 2333, 308, 108, 2851, 870, 854, 1510, 2535, 1278, 1530, 1185, - 1659, 1187, 3109, 874, 1335, 2111, 136, 1215, 2945, 1465, 1285, 2007, 2719, 2726, 2232, 2512, - 75, 156, 3000, 2911, 2980, 872, 2685, 1590, 2210, 602, 1846, 777, 147, 2170, 2551, 246, - 1676, 1755, 460, 291, 235, 3152, 2742, 2907, 3224, 1779, 2458, 1251, 2486, 2774, 2899, 1103, - 1275, 2652, 1065, 2881, 725, 1508, 2368, 398, 951, 247, 1421, 3222, 2499, 271, 90, 853, - 1860, 3203, 1162, 1618, 666, 320, 8, 2813, 1544, 282, 1838, 1293, 2314, 552, 2677, 2106, - 1571, 205, 2918, 1542, 2721, 2597, 2312, 681, 130, 1602, 1871, 829, 2946, 3065, 1325, 2756, - 1861, 1474, 1202, 2367, 3147, 1752, 2707, 171, 3127, 3042, 1907, 1836, 1517, 359, 758, 1441 -}; - - -/************************************************* -* Name: fqmul -* -* Description: Multiplication followed by Montgomery reduction -* -* Arguments: - int16_t a: first factor -* - int16_t b: second factor -* -* Returns 16-bit integer congruent to a*b*R^{-1} mod q -**************************************************/ -static int16_t fqmul(int16_t a, int16_t b) { - return PQCLEAN_KYBER51290S_CLEAN_montgomery_reduce((int32_t)a * b); -} - -/************************************************* -* Name: ntt -* -* Description: Inplace number-theoretic transform (NTT) in Rq -* input is in standard order, output is in bitreversed order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_ntt(int16_t poly[256]) { - size_t j, k = 1; - int16_t t, zeta; - - for (size_t len = 128; len >= 2; len >>= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER51290S_CLEAN_zetas[k++]; - for (j = start; j < start + len; ++j) { - t = fqmul(zeta, poly[j + len]); - poly[j + len] = poly[j] - t; - poly[j] = poly[j] + t; - } - } - } -} - -/************************************************* -* Name: invntt -* -* Description: Inplace inverse number-theoretic transform in Rq -* input is in bitreversed order, output is in standard order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_invntt(int16_t poly[256]) { - size_t j, k = 0; - int16_t t, zeta; - - for (size_t len = 2; len <= 128; len <<= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER51290S_CLEAN_zetas_inv[k++]; - for (j = start; j < start + len; ++j) { - t = poly[j]; - poly[j] = PQCLEAN_KYBER51290S_CLEAN_barrett_reduce(t + poly[j + len]); - poly[j + len] = t - poly[j + len]; - poly[j + len] = fqmul(zeta, poly[j + len]); - } - } - } - - for (j = 0; j < 256; ++j) { - poly[j] = fqmul(poly[j], PQCLEAN_KYBER51290S_CLEAN_zetas_inv[127]); - } -} - -/************************************************* -* Name: basemul -* -* Description: Multiplication of polynomials in Zq[X]/((X^2-zeta)) -* used for multiplication of elements in Rq in NTT domain -* -* Arguments: - int16_t r[2]: pointer to the output polynomial -* - const int16_t a[2]: pointer to the first factor -* - const int16_t b[2]: pointer to the second factor -* - int16_t zeta: integer defining the reduction polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta) { - r[0] = fqmul(a[1], b[1]); - r[0] = fqmul(r[0], zeta); - r[0] += fqmul(a[0], b[0]); - - r[1] = fqmul(a[0], b[1]); - r[1] += fqmul(a[1], b[0]); -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.h b/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.h deleted file mode 100644 index 720bee975a..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NTT_H -#define NTT_H - -#include - -extern const int16_t PQCLEAN_KYBER51290S_CLEAN_zetas[128]; -extern const int16_t PQCLEAN_KYBER51290S_CLEAN_zetasinv[128]; - -void PQCLEAN_KYBER51290S_CLEAN_ntt(int16_t *poly); -void PQCLEAN_KYBER51290S_CLEAN_invntt(int16_t *poly); -void PQCLEAN_KYBER51290S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/params.h b/src/kem/kyber/pqclean_kyber512_90s_clean/params.h deleted file mode 100644 index d086d4c694..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/params.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change parameters below this line */ - -#define KYBER_N 256 -#define KYBER_Q 3329 - -#define KYBER_ETA 2 - -#define KYBER_SYMBYTES 32 /* size in bytes of hashes, and seeds */ -#define KYBER_SSBYTES 32 /* size in bytes of shared key */ - -#define KYBER_POLYBYTES 384 -#define KYBER_POLYVECBYTES (KYBER_K * KYBER_POLYBYTES) - - -#define KYBER_K 2 -#define KYBER_POLYCOMPRESSEDBYTES 96 -#define KYBER_POLYVECCOMPRESSEDBYTES (KYBER_K * 320) - -#define KYBER_INDCPA_MSGBYTES KYBER_SYMBYTES -#define KYBER_INDCPA_PUBLICKEYBYTES (KYBER_POLYVECBYTES + KYBER_SYMBYTES) -#define KYBER_INDCPA_SECRETKEYBYTES (KYBER_POLYVECBYTES) -#define KYBER_INDCPA_BYTES (KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES) - -#define KYBER_PUBLICKEYBYTES (KYBER_INDCPA_PUBLICKEYBYTES) -#define KYBER_SECRETKEYBYTES (KYBER_INDCPA_SECRETKEYBYTES + KYBER_INDCPA_PUBLICKEYBYTES + 2*KYBER_SYMBYTES) /* 32 bytes of additional space to save H(pk) */ -#define KYBER_CIPHERTEXTBYTES KYBER_INDCPA_BYTES - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/poly.c b/src/kem/kyber/pqclean_kyber512_90s_clean/poly.c deleted file mode 100644 index 1aee99dda3..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/poly.c +++ /dev/null @@ -1,279 +0,0 @@ -#include "cbd.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "reduce.h" -#include "symmetric.h" - -#include -/************************************************* -* Name: poly_compress -* -* Description: Compression and subsequent serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYCOMPRESSEDBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_compress(uint8_t *r, poly *a) { - uint8_t t[8]; - size_t k = 0; - - PQCLEAN_KYBER51290S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N; i += 8) { - for (size_t j = 0; j < 8; j++) { - t[j] = ((((uint32_t)a->coeffs[i + j] << 3) + KYBER_Q / 2) / KYBER_Q) & 7; - } - - r[k] = (uint8_t)( t[0] | (t[1] << 3) | (t[2] << 6)); - r[k + 1] = (uint8_t)((t[2] >> 2) | (t[3] << 1) | (t[4] << 4) | (t[5] << 7)); - r[k + 2] = (uint8_t)((t[5] >> 1) | (t[6] << 2) | (t[7] << 5)); - k += 3; - } -} - -/************************************************* -* Name: poly_decompress -* -* Description: De-serialization and subsequent decompression of a polynomial; -* approximate inverse of poly_compress -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of length KYBER_POLYCOMPRESSEDBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_decompress(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N; i += 8) { - r->coeffs[i + 0] = (int16_t)( (((a[0] & 7) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 1] = (int16_t)(((((a[0] >> 3) & 7) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 2] = (int16_t)(((((a[0] >> 6) | ((a[1] << 2) & 4)) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 3] = (int16_t)(((((a[1] >> 1) & 7) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 4] = (int16_t)(((((a[1] >> 4) & 7) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 5] = (int16_t)(((((a[1] >> 7) | ((a[2] << 1) & 6)) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 6] = (int16_t)(((((a[2] >> 2) & 7) * KYBER_Q) + 4) >> 3); - r->coeffs[i + 7] = (int16_t)(((((a[2] >> 5)) * KYBER_Q) + 4) >> 3); - a += 3; - } -} - -/************************************************* -* Name: poly_tobytes -* -* Description: Serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_tobytes(uint8_t *r, poly *a) { - int16_t t0, t1; - - PQCLEAN_KYBER51290S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N / 2; i++) { - t0 = a->coeffs[2 * i]; - t1 = a->coeffs[2 * i + 1]; - r[3 * i] = t0 & 0xff; - r[3 * i + 1] = (uint8_t)((t0 >> 8) | ((t1 & 0xf) << 4)); - r[3 * i + 2] = (uint8_t)(t1 >> 4); - } -} - -/************************************************* -* Name: poly_frombytes -* -* Description: De-serialization of a polynomial; -* inverse of poly_tobytes -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of KYBER_POLYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_frombytes(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N / 2; i++) { - r->coeffs[2 * i] = (int16_t)(a[3 * i] | ((uint16_t)a[3 * i + 1] & 0x0f) << 8); - r->coeffs[2 * i + 1] = (int16_t)(a[3 * i + 1] >> 4 | ((uint16_t)a[3 * i + 2] & 0xff) << 4); - } -} - -/************************************************* -* Name: poly_getnoise -* -* Description: Sample a polynomial deterministically from a seed and a nonce, -* with output polynomial close to centered binomial distribution -* with parameter KYBER_ETA -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *seed: pointer to input seed (pointing to array of length KYBER_SYMBYTES bytes) -* - uint8_t nonce: one-byte input nonce -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce) { - uint8_t buf[KYBER_ETA * KYBER_N / 4]; - - prf(buf, KYBER_ETA * KYBER_N / 4, seed, nonce); - PQCLEAN_KYBER51290S_CLEAN_cbd(r, buf); -} - -/************************************************* -* Name: poly_ntt -* -* Description: Computes negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in normal order, output in bitreversed order -* -* Arguments: - uint16_t *r: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_ntt(poly *r) { - PQCLEAN_KYBER51290S_CLEAN_ntt(r->coeffs); - PQCLEAN_KYBER51290S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: poly_invntt -* -* Description: Computes inverse of negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in bitreversed order, output in normal order -* -* Arguments: - uint16_t *a: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_invntt(poly *r) { - PQCLEAN_KYBER51290S_CLEAN_invntt(r->coeffs); -} - -/************************************************* -* Name: poly_basemul -* -* Description: Multiplication of two polynomials in NTT domain -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N / 4; ++i) { - PQCLEAN_KYBER51290S_CLEAN_basemul( - r->coeffs + 4 * i, - a->coeffs + 4 * i, - b->coeffs + 4 * i, - PQCLEAN_KYBER51290S_CLEAN_zetas[64 + i]); - PQCLEAN_KYBER51290S_CLEAN_basemul( - r->coeffs + 4 * i + 2, - a->coeffs + 4 * i + 2, - b->coeffs + 4 * i + 2, - -PQCLEAN_KYBER51290S_CLEAN_zetas[64 + i]); - } -} - -/************************************************* -* Name: poly_frommont -* -* Description: Inplace conversion of all coefficients of a polynomial -* from Montgomery domain to normal domain -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_frommont(poly *r) { - const int16_t f = (1ULL << 32) % KYBER_Q; - - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER51290S_CLEAN_montgomery_reduce( - (int32_t)r->coeffs[i] * f); - } -} - -/************************************************* -* Name: poly_reduce -* -* Description: Applies Barrett reduction to all coefficients of a polynomial -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_reduce(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER51290S_CLEAN_barrett_reduce(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_csubq -* -* Description: Applies conditional subtraction of q to each coefficient of a polynomial -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_csubq(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER51290S_CLEAN_csubq(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_add -* -* Description: Add two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_add(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] + b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_sub -* -* Description: Subtract two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] - b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_frommsg -* -* Description: Convert 32-byte message to polynomial -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *msg: pointer to input message -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]) { - uint16_t mask; - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - for (size_t j = 0; j < 8; j++) { - mask = -((msg[i] >> j) & 1); - r->coeffs[8 * i + j] = mask & ((KYBER_Q + 1) / 2); - } - } -} - -/************************************************* -* Name: poly_tomsg -* -* Description: Convert polynomial to 32-byte message -* -* Arguments: - uint8_t *msg: pointer to output message -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a) { - uint16_t t; - - PQCLEAN_KYBER51290S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - msg[i] = 0; - for (size_t j = 0; j < 8; j++) { - t = (((a->coeffs[8 * i + j] << 1) + KYBER_Q / 2) / KYBER_Q) & 1; - msg[i] |= t << j; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/poly.h b/src/kem/kyber/pqclean_kyber512_90s_clean/poly.h deleted file mode 100644 index fbab1da702..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/poly.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -/* - * Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial - * coeffs[0] + X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1] - */ -typedef struct { - int16_t coeffs[KYBER_N]; -} poly; - -void PQCLEAN_KYBER51290S_CLEAN_poly_compress(uint8_t *r, poly *a); -void PQCLEAN_KYBER51290S_CLEAN_poly_decompress(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER51290S_CLEAN_poly_tobytes(uint8_t *r, poly *a); -void PQCLEAN_KYBER51290S_CLEAN_poly_frombytes(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER51290S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]); -void PQCLEAN_KYBER51290S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a); - -void PQCLEAN_KYBER51290S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce); - -void PQCLEAN_KYBER51290S_CLEAN_poly_ntt(poly *r); -void PQCLEAN_KYBER51290S_CLEAN_poly_invntt(poly *r); -void PQCLEAN_KYBER51290S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER51290S_CLEAN_poly_frommont(poly *r); - -void PQCLEAN_KYBER51290S_CLEAN_poly_reduce(poly *r); -void PQCLEAN_KYBER51290S_CLEAN_poly_csubq(poly *r); - -void PQCLEAN_KYBER51290S_CLEAN_poly_add(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER51290S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.c b/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.c deleted file mode 100644 index 8d90e7e0c7..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.c +++ /dev/null @@ -1,175 +0,0 @@ -#include "polyvec.h" - -#include "poly.h" - -#include -#include -/************************************************* -* Name: polyvec_compress -* -* Description: Compress and serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECCOMPRESSEDBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a) { - PQCLEAN_KYBER51290S_CLEAN_polyvec_csubq(a); - - uint16_t t[4]; - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 4; j++) { - for (size_t k = 0; k < 4; k++) { - t[k] = ((((uint32_t)a->vec[i].coeffs[4 * j + k] << 10) + KYBER_Q / 2) / KYBER_Q) & 0x3ff; - } - - r[5 * j + 0] = (uint8_t)t[0]; - r[5 * j + 1] = (uint8_t)((t[0] >> 8) | ((t[1] & 0x3f) << 2)); - r[5 * j + 2] = (uint8_t)((t[1] >> 6) | ((t[2] & 0x0f) << 4)); - r[5 * j + 3] = (uint8_t)((t[2] >> 4) | ((t[3] & 0x03) << 6)); - r[5 * j + 4] = (uint8_t)((t[3] >> 2)); - } - r += 320; - } -} - -/************************************************* -* Name: polyvec_decompress -* -* Description: De-serialize and decompress vector of polynomials; -* approximate inverse of polyvec_compress -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - uint8_t *a: pointer to input byte array (of length KYBER_POLYVECCOMPRESSEDBYTES) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 4; j++) { - r->vec[i].coeffs[4 * j + 0] = (int16_t)( (((a[5 * j + 0] | (((uint32_t)a[5 * j + 1] & 0x03) << 8)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 1] = (int16_t)(((((a[5 * j + 1] >> 2) | (((uint32_t)a[5 * j + 2] & 0x0f) << 6)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 2] = (int16_t)(((((a[5 * j + 2] >> 4) | (((uint32_t)a[5 * j + 3] & 0x3f) << 4)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 3] = (int16_t)(((((a[5 * j + 3] >> 6) | (((uint32_t)a[5 * j + 4] & 0xff) << 2)) * KYBER_Q) + 512) >> 10); - } - a += 320; - } -} - -/************************************************* -* Name: polyvec_tobytes -* -* Description: Serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_tobytes(r + i * KYBER_POLYBYTES, &a->vec[i]); - } -} - -/************************************************* -* Name: polyvec_frombytes -* -* Description: De-serialize vector of polynomials; -* inverse of polyvec_tobytes -* -* Arguments: - uint8_t *r: pointer to output byte array -* - const polyvec *a: pointer to input vector of polynomials (of length KYBER_POLYVECBYTES) -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_frombytes(&r->vec[i], a + i * KYBER_POLYBYTES); - } -} - -/************************************************* -* Name: polyvec_ntt -* -* Description: Apply forward NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_ntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_invntt -* -* Description: Apply inverse NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_invntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_invntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_pointwise_acc -* -* Description: Pointwise multiply elements of a and b and accumulate into r -* -* Arguments: - poly *r: pointer to output polynomial -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b) { - poly t; - - PQCLEAN_KYBER51290S_CLEAN_poly_basemul(r, &a->vec[0], &b->vec[0]); - for (size_t i = 1; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_basemul(&t, &a->vec[i], &b->vec[i]); - PQCLEAN_KYBER51290S_CLEAN_poly_add(r, r, &t); - } - - PQCLEAN_KYBER51290S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: polyvec_reduce -* -* Description: Applies Barrett reduction to each coefficient -* of each element of a vector of polynomials -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_reduce(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_reduce(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_csubq -* -* Description: Applies conditional subtraction of q to each coefficient -* of each element of a vector of polynomials -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_csubq(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_csubq(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_add -* -* Description: Add vectors of polynomials -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER51290S_CLEAN_poly_add(&r->vec[i], &a->vec[i], &b->vec[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.h b/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.h deleted file mode 100644 index abf3fb9bfc..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/polyvec.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef POLYVEC_H -#define POLYVEC_H - -#include "params.h" -#include "poly.h" - -#include - -typedef struct { - poly vec[KYBER_K]; -} polyvec; - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER51290S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER51290S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_ntt(polyvec *r); -void PQCLEAN_KYBER51290S_CLEAN_polyvec_invntt(polyvec *r); - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b); - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_reduce(polyvec *r); -void PQCLEAN_KYBER51290S_CLEAN_polyvec_csubq(polyvec *r); - -void PQCLEAN_KYBER51290S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.c b/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.c deleted file mode 100644 index 2447fef117..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "reduce.h" - -#include "params.h" - -#include -/************************************************* -* Name: montgomery_reduce -* -* Description: Montgomery reduction; given a 32-bit integer a, computes -* 16-bit integer congruent to a * R^-1 mod q, -* where R=2^16 -* -* Arguments: - int32_t a: input integer to be reduced; has to be in {-q2^15,...,q2^15-1} -* -* Returns: integer in {-q+1,...,q-1} congruent to a * R^-1 modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER51290S_CLEAN_montgomery_reduce(int32_t a) { - int32_t t; - int16_t u; - - u = (int16_t)(a * (int64_t)QINV); - t = (int32_t)u * KYBER_Q; - t = a - t; - t >>= 16; - return (int16_t)t; -} - -/************************************************* -* Name: barrett_reduce -* -* Description: Barrett reduction; given a 16-bit integer a, computes -* 16-bit integer congruent to a mod q in {0,...,q} -* -* Arguments: - int16_t a: input integer to be reduced -* -* Returns: integer in {0,...,q} congruent to a modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER51290S_CLEAN_barrett_reduce(int16_t a) { - int32_t t; - const int32_t v = (1U << 26) / KYBER_Q + 1; - - t = v * a; - t >>= 26; - t *= KYBER_Q; - return a - (int16_t)t; -} - -/************************************************* -* Name: csubq -* -* Description: Conditionallly subtract q -* -* Arguments: - int16_t a: input integer -* -* Returns: a - q if a >= q, else a -**************************************************/ -int16_t PQCLEAN_KYBER51290S_CLEAN_csubq(int16_t a) { - a -= KYBER_Q; - a += (a >> 15) & KYBER_Q; - return a; -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.h b/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.h deleted file mode 100644 index f9a9b76213..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/reduce.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef REDUCE_H -#define REDUCE_H - -#include - -#define MONT 2285 // 2^16 % Q -#define QINV 62209 // q^(-1) mod 2^16 - -int16_t PQCLEAN_KYBER51290S_CLEAN_montgomery_reduce(int32_t a); - -int16_t PQCLEAN_KYBER51290S_CLEAN_barrett_reduce(int16_t a); - -int16_t PQCLEAN_KYBER51290S_CLEAN_csubq(int16_t a); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/symmetric.h b/src/kem/kyber/pqclean_kyber512_90s_clean/symmetric.h deleted file mode 100644 index e1bc27433a..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/symmetric.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SYMMETRIC_H -#define SYMMETRIC_H - -#include "params.h" - - -#include "aes256ctr.h" -#include "sha2.h" - -#define hash_h(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) -#define hash_g(OUT, IN, INBYTES) sha512(OUT, IN, INBYTES) -#define xof_absorb(STATE, IN, X, Y) PQCLEAN_KYBER51290S_CLEAN_aes256xof_absorb(STATE, IN, X, Y) -#define xof_squeezeblocks(OUT, OUTBLOCKS, STATE) PQCLEAN_KYBER51290S_CLEAN_aes256xof_squeezeblocks(OUT, OUTBLOCKS, STATE) -#define xof_ctx_release(STATE) PQCLEAN_KYBER51290S_CLEAN_aes256xof_ctx_release(STATE) -#define prf(OUT, OUTBYTES, KEY, NONCE) PQCLEAN_KYBER51290S_CLEAN_aes256_prf(OUT, OUTBYTES, KEY, NONCE) -#define kdf(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) - -#define XOF_BLOCKBYTES 64 - -typedef aes256xof_ctx xof_state; - - -#endif /* SYMMETRIC_H */ diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/verify.c b/src/kem/kyber/pqclean_kyber512_90s_clean/verify.c deleted file mode 100644 index 35867a9920..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/verify.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "verify.h" - -#include -#include - -/************************************************* -* Name: verify -* -* Description: Compare two arrays for equality in constant time. -* -* Arguments: const uint8_t *a: pointer to first byte array -* const uint8_t *b: pointer to second byte array -* size_t len: length of the byte arrays -* -* Returns 0 if the byte arrays are equal, 1 otherwise -**************************************************/ -uint8_t PQCLEAN_KYBER51290S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-r) >> 63; - return (uint8_t)r; -} - -/************************************************* -* Name: cmov -* -* Description: Copy len bytes from x to r if b is 1; -* don't modify x if b is 0. Requires b to be in {0,1}; -* assumes two's complement representation of negative integers. -* Runs in constant time. -* -* Arguments: uint8_t *r: pointer to output byte array -* const uint8_t *x: pointer to input byte array -* size_t len: Amount of bytes to be copied -* uint8_t b: Condition bit; has to be in {0,1} -**************************************************/ -void PQCLEAN_KYBER51290S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber512_90s_clean/verify.h b/src/kem/kyber/pqclean_kyber512_90s_clean/verify.h deleted file mode 100644 index 7ece5735a8..0000000000 --- a/src/kem/kyber/pqclean_kyber512_90s_clean/verify.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include -#include - -uint8_t PQCLEAN_KYBER51290S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - -void PQCLEAN_KYBER51290S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber512_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber512_avx2/oqs_unsupported.c deleted file mode 100644 index 2026915acf..0000000000 --- a/src/kem/kyber/pqclean_kyber512_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber512_avx2_unsupported=1; diff --git a/src/kem/kyber/pqclean_kyber512_90s_avx2/LICENSE b/src/kem/kyber/pqclean_kyber768-90s_avx2/LICENSE similarity index 100% rename from src/kem/kyber/pqclean_kyber512_90s_avx2/LICENSE rename to src/kem/kyber/pqclean_kyber768-90s_avx2/LICENSE diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/aes256ctr.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/aes256ctr.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/aes256ctr.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/aes256ctr.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/aes256ctr.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/aes256ctr.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/aes256ctr.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/aes256ctr.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/api.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/api.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/api.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/api.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/basemul.S b/src/kem/kyber/pqclean_kyber768-90s_avx2/basemul.S similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/basemul.S rename to src/kem/kyber/pqclean_kyber768-90s_avx2/basemul.S diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/cbd.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/cbd.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/cbd.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/cbd.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/cbd.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/cbd.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/cbd.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/cbd.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/consts.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/consts.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/consts.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/consts.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/consts.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/consts.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/consts.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/consts.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/fq.inc b/src/kem/kyber/pqclean_kyber768-90s_avx2/fq.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/fq.inc rename to src/kem/kyber/pqclean_kyber768-90s_avx2/fq.inc diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/fq.s b/src/kem/kyber/pqclean_kyber768-90s_avx2/fq.s similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/fq.s rename to src/kem/kyber/pqclean_kyber768-90s_avx2/fq.s diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/indcpa.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/indcpa.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/indcpa.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/indcpa.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/indcpa.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/indcpa.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/indcpa.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/indcpa.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/invntt.s b/src/kem/kyber/pqclean_kyber768-90s_avx2/invntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/invntt.s rename to src/kem/kyber/pqclean_kyber768-90s_avx2/invntt.s diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/kem.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/kem.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/kem.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/kem.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/ntt.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/ntt.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/ntt.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/ntt.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/ntt.s b/src/kem/kyber/pqclean_kyber768-90s_avx2/ntt.s similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/ntt.s rename to src/kem/kyber/pqclean_kyber768-90s_avx2/ntt.s diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/params.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/params.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/params.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/params.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/poly.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/poly.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/poly.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/poly.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/poly.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/poly.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/poly.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/poly.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/polyvec.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/polyvec.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/polyvec.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/polyvec.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/polyvec.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/polyvec.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/polyvec.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/polyvec.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/reduce.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/reduce.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/reduce.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/reduce.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/rejsample.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/rejsample.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/rejsample.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/rejsample.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/rejsample.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/rejsample.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/rejsample.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/rejsample.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/shuffle.inc b/src/kem/kyber/pqclean_kyber768-90s_avx2/shuffle.inc similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/shuffle.inc rename to src/kem/kyber/pqclean_kyber768-90s_avx2/shuffle.inc diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/shuffle.s b/src/kem/kyber/pqclean_kyber768-90s_avx2/shuffle.s similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/shuffle.s rename to src/kem/kyber/pqclean_kyber768-90s_avx2/shuffle.s diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/symmetric.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/symmetric.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/symmetric.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/symmetric.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/verify.c b/src/kem/kyber/pqclean_kyber768-90s_avx2/verify.c similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/verify.c rename to src/kem/kyber/pqclean_kyber768-90s_avx2/verify.c diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/verify.h b/src/kem/kyber/pqclean_kyber768-90s_avx2/verify.h similarity index 100% rename from src/kem/kyber/pqclean_kyber768_90s_avx2/verify.h rename to src/kem/kyber/pqclean_kyber768-90s_avx2/verify.h diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/LICENSE b/src/kem/kyber/pqclean_kyber768_90s_avx2/LICENSE deleted file mode 100644 index 7b02ea1b27..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_avx2/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -kyber-20170627 -Public Domain -Authors: Joppe Bos, - Léo Ducas, - Eike Kiltz , - Tancrède Lepoint, - Vadim Lyubashevsky, - John Schanck, - Peter Schwabe, - Gregor Seiler, - Damien Stehlé - -For Keccak and AES we are using public-domain -code from sources and by authors listed in -comments on top of the respective files. diff --git a/src/kem/kyber/pqclean_kyber768_90s_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber768_90s_avx2/oqs_unsupported.c deleted file mode 100644 index 25601dd68c..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber768_90s_avx2_unsupported=1; diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/LICENSE b/src/kem/kyber/pqclean_kyber768_90s_clean/LICENSE deleted file mode 100644 index 7b02ea1b27..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -kyber-20170627 -Public Domain -Authors: Joppe Bos, - Léo Ducas, - Eike Kiltz , - Tancrède Lepoint, - Vadim Lyubashevsky, - John Schanck, - Peter Schwabe, - Gregor Seiler, - Damien Stehlé - -For Keccak and AES we are using public-domain -code from sources and by authors listed in -comments on top of the respective files. diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.c b/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.c deleted file mode 100644 index 3deae94c76..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.c +++ /dev/null @@ -1,100 +0,0 @@ -#include "aes256ctr.h" -#include "aes.h" -#include -#include -#include - -static inline void br_enc32be(unsigned char *dst, uint32_t x) { - dst[3] = (unsigned char)x; - dst[2] = (unsigned char)(x >> 8); - dst[1] = (unsigned char)(x >> 16); - dst[0] = (unsigned char)(x >> 24); -} - -static void aes256_ctr_xof(unsigned char *out, size_t outlen, const unsigned char *iv, uint32_t ctr, const aes256ctx *ctx) { - uint8_t ivw[16]; - uint8_t buf[AES_BLOCKBYTES]; - size_t i; - - memcpy(ivw, iv, AESCTR_NONCEBYTES); - br_enc32be(ivw + AESCTR_NONCEBYTES, ctr); - - while (outlen > AES_BLOCKBYTES) { - aes256_ecb(out, ivw, 1, ctx); - br_enc32be(ivw + AESCTR_NONCEBYTES, ++ctr); - out += AES_BLOCKBYTES; - outlen -= AES_BLOCKBYTES; - } - if (outlen > 0) { - aes256_ecb(buf, ivw, 1, ctx); - for (i = 0; i < outlen; i++) { - out[i] = buf[i]; - } - } -} - -/************************************************* -* Name: aes256_prf -* -* Description: AES256 stream generation in CTR mode using 32-bit counter, -* nonce is zero-padded to 12 bytes, counter starts at zero -* -* Arguments: - uint8_t *output: pointer to output -* - size_t outlen: length of requested output in bytes -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t nonce: 1-byte nonce (will be zero-padded to 12 bytes) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce) { - uint8_t iv[12]; - for (int i = 1; i < 12; i++) { - iv[i] = 0; - } - iv[0] = nonce; - - aes256ctx ctx; - aes256_ctr_keyexp(&ctx, key); - aes256_ctr(output, outlen, iv, &ctx); - aes256_ctx_release(&ctx); -} - -/************************************************* -* Name: aes256xof_absorb -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* "absorbs" a 32-byte key and two additional bytes that are zero-padded -* to a 12-byte nonce -* -* Arguments: - aes256xof_ctx *s: pointer to state to "absorb" key and IV into -* - const uint8_t *key: pointer to 32-byte key -* - uint8_t x: first additional byte to "absorb" -* - uint8_t y: second additional byte to "absorb" -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y) { - aes256_ecb_keyexp(&s->sk_exp, key); - for (int i = 2; i < 12; i++) { - s->iv[i] = 0; - } - s->iv[0] = x; - s->iv[1] = y; - s->ctr = 0; -} - -/************************************************* -* Name: aes256xof_squeezeblocks -* -* Description: AES256 CTR used as a replacement for a XOF; this function -* generates 4 blocks out AES256-CTR output -* -* Arguments: - uint8_t *out: pointer to output -* - size_t nblocks: number of reqested 64-byte output blocks -* - aes256xof_ctx *s: AES "state", i.e. expanded key and IV -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s) { - aes256_ctr_xof(out, nblocks * 64, s->iv, s->ctr, &s->sk_exp); - s->ctr += (uint32_t) (4 * nblocks); -} - -/** Free the AES ctx **/ -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s) { - aes256_ctx_release(&s->sk_exp); -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.h b/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.h deleted file mode 100644 index 35facbeb6b..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/aes256ctr.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef AES256CTR_H -#define AES256CTR_H - -#include "aes.h" - -#include -#include - -typedef struct { - aes256ctx sk_exp; - uint8_t iv[12]; - uint32_t ctr; -} aes256xof_ctx; - -void PQCLEAN_KYBER76890S_CLEAN_aes256_prf(uint8_t *output, size_t outlen, const uint8_t *key, uint8_t nonce); -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_absorb(aes256xof_ctx *s, const uint8_t *key, uint8_t x, uint8_t y); -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_squeezeblocks(uint8_t *out, size_t nblocks, aes256xof_ctx *s); -void PQCLEAN_KYBER76890S_CLEAN_aes256xof_ctx_release(aes256xof_ctx *s); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/api.h b/src/kem/kyber/pqclean_kyber768_90s_clean/api.h deleted file mode 100644 index 079f1641ae..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_KYBER76890S_CLEAN_API_H -#define PQCLEAN_KYBER76890S_CLEAN_API_H - -#include - -#define PQCLEAN_KYBER76890S_CLEAN_CRYPTO_SECRETKEYBYTES 2400 -#define PQCLEAN_KYBER76890S_CLEAN_CRYPTO_PUBLICKEYBYTES 1184 -#define PQCLEAN_KYBER76890S_CLEAN_CRYPTO_CIPHERTEXTBYTES 1088 -#define PQCLEAN_KYBER76890S_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_KYBER76890S_CLEAN_CRYPTO_ALGNAME "Kyber768-90s" - -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.c b/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.c deleted file mode 100644 index 798d71764d..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "cbd.h" -#include "params.h" - -#include -#include - -/************************************************* -* Name: load32_littleendian -* -* Description: load bytes into a 32-bit integer -* in little-endian order -* -* Arguments: - const uint8_t *x: pointer to input byte array -* -* Returns 32-bit unsigned integer loaded from x -**************************************************/ -static uint32_t load32_littleendian(const uint8_t *x) { - uint32_t r; - r = (uint32_t)x[0]; - r |= (uint32_t)x[1] << 8; - r |= (uint32_t)x[2] << 16; - r |= (uint32_t)x[3] << 24; - return r; -} - -/************************************************* -* Name: cbd -* -* Description: Given an array of uniformly random bytes, compute -* polynomial with coefficients distributed according to -* a centered binomial distribution with parameter KYBER_ETA -* specialized for KYBER_ETA=2 -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *buf: pointer to input byte array -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_cbd(poly *r, const uint8_t *buf) { - uint32_t d, t; - int16_t a, b; - - for (size_t i = 0; i < KYBER_N / 8; i++) { - t = load32_littleendian(buf + 4 * i); - d = t & 0x55555555; - d += (t >> 1) & 0x55555555; - - for (size_t j = 0; j < 8; j++) { - a = (d >> 4 * j) & 0x3; - b = (d >> (4 * j + 2)) & 0x3; - r->coeffs[8 * i + j] = a - b; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.h b/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.h deleted file mode 100644 index bc1457c48f..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/cbd.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CBD_H -#define CBD_H - -#include "poly.h" - -void PQCLEAN_KYBER76890S_CLEAN_cbd(poly *r, const uint8_t *buf); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.c b/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.c deleted file mode 100644 index 438cbc8111..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.c +++ /dev/null @@ -1,300 +0,0 @@ -#include "indcpa.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "polyvec.h" -#include "randombytes.h" -#include "symmetric.h" - -#include - -/************************************************* -* Name: pack_pk -* -* Description: Serialize the public key as concatenation of the -* serialized vector of polynomials pk -* and the public seed used to generate the matrix A. -* -* Arguments: uint8_t *r: pointer to the output serialized public key -* const poly *pk: pointer to the input public-key polynomial -* const uint8_t *seed: pointer to the input public seed -**************************************************/ -static void pack_pk(uint8_t *r, polyvec *pk, const uint8_t *seed) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_tobytes(r, pk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - r[i + KYBER_POLYVECBYTES] = seed[i]; - } -} - -/************************************************* -* Name: unpack_pk -* -* Description: De-serialize public key from a byte array; -* approximate inverse of pack_pk -* -* Arguments: - polyvec *pk: pointer to output public-key vector of polynomials -* - uint8_t *seed: pointer to output seed to generate matrix A -* - const uint8_t *packedpk: pointer to input serialized public key -**************************************************/ -static void unpack_pk(polyvec *pk, uint8_t *seed, const uint8_t *packedpk) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_frombytes(pk, packedpk); - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - seed[i] = packedpk[i + KYBER_POLYVECBYTES]; - } -} - -/************************************************* -* Name: pack_sk -* -* Description: Serialize the secret key -* -* Arguments: - uint8_t *r: pointer to output serialized secret key -* - const polyvec *sk: pointer to input vector of polynomials (secret key) -**************************************************/ -static void pack_sk(uint8_t *r, polyvec *sk) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_tobytes(r, sk); -} - -/************************************************* -* Name: unpack_sk -* -* Description: De-serialize the secret key; -* inverse of pack_sk -* -* Arguments: - polyvec *sk: pointer to output vector of polynomials (secret key) -* - const uint8_t *packedsk: pointer to input serialized secret key -**************************************************/ -static void unpack_sk(polyvec *sk, const uint8_t *packedsk) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_frombytes(sk, packedsk); -} - -/************************************************* -* Name: pack_ciphertext -* -* Description: Serialize the ciphertext as concatenation of the -* compressed and serialized vector of polynomials b -* and the compressed and serialized polynomial v -* -* Arguments: uint8_t *r: pointer to the output serialized ciphertext -* const poly *pk: pointer to the input vector of polynomials b -* const uint8_t *seed: pointer to the input polynomial v -**************************************************/ -static void pack_ciphertext(uint8_t *r, polyvec *b, poly *v) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_compress(r, b); - PQCLEAN_KYBER76890S_CLEAN_poly_compress(r + KYBER_POLYVECCOMPRESSEDBYTES, v); -} - -/************************************************* -* Name: unpack_ciphertext -* -* Description: De-serialize and decompress ciphertext from a byte array; -* approximate inverse of pack_ciphertext -* -* Arguments: - polyvec *b: pointer to the output vector of polynomials b -* - poly *v: pointer to the output polynomial v -* - const uint8_t *c: pointer to the input serialized ciphertext -**************************************************/ -static void unpack_ciphertext(polyvec *b, poly *v, const uint8_t *c) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_decompress(b, c); - PQCLEAN_KYBER76890S_CLEAN_poly_decompress(v, c + KYBER_POLYVECCOMPRESSEDBYTES); -} - -/************************************************* -* Name: rej_uniform -* -* Description: Run rejection sampling on uniform random bytes to generate -* uniform random integers mod q -* -* Arguments: - int16_t *r: pointer to output buffer -* - size_t len: requested number of 16-bit integers (uniform mod q) -* - const uint8_t *buf: pointer to input buffer (assumed to be uniform random bytes) -* - size_t buflen: length of input buffer in bytes -* -* Returns number of sampled 16-bit integers (at most len) -**************************************************/ -static size_t rej_uniform(int16_t *r, size_t len, const uint8_t *buf, size_t buflen) { - size_t ctr, pos; - uint16_t val; - - ctr = pos = 0; - while (ctr < len && pos + 2 <= buflen) { - val = (uint16_t)(buf[pos] | ((uint16_t)buf[pos + 1] << 8)); - pos += 2; - - if (val < 19 * KYBER_Q) { - val -= (uint16_t)((val >> 12) * KYBER_Q); // Barrett reduction - r[ctr++] = (int16_t)val; - } - } - - return ctr; -} - -#define gen_a(A,B) gen_matrix(A,B,0) -#define gen_at(A,B) gen_matrix(A,B,1) - -/************************************************* -* Name: gen_matrix -* -* Description: Deterministically generate matrix A (or the transpose of A) -* from a seed. Entries of the matrix are polynomials that look -* uniformly random. Performs rejection sampling on output of -* a XOF -* -* Arguments: - polyvec *a: pointer to ouptput matrix A -* - const uint8_t *seed: pointer to input seed -* - int transposed: boolean deciding whether A or A^T is generated -**************************************************/ -#define MAXNBLOCKS ((530+XOF_BLOCKBYTES)/XOF_BLOCKBYTES) /* 530 is expected number of required bytes */ -static void gen_matrix(polyvec *a, const uint8_t *seed, int transposed) { - size_t ctr; - uint8_t i, j; - uint8_t buf[XOF_BLOCKBYTES * MAXNBLOCKS + 1]; - xof_state state; - - for (i = 0; i < KYBER_K; i++) { - for (j = 0; j < KYBER_K; j++) { - if (transposed) { - xof_absorb(&state, seed, i, j); - } else { - xof_absorb(&state, seed, j, i); - } - - xof_squeezeblocks(buf, MAXNBLOCKS, &state); - ctr = rej_uniform(a[i].vec[j].coeffs, KYBER_N, buf, MAXNBLOCKS * XOF_BLOCKBYTES); - - while (ctr < KYBER_N) { - xof_squeezeblocks(buf, 1, &state); - ctr += rej_uniform(a[i].vec[j].coeffs + ctr, KYBER_N - ctr, buf, XOF_BLOCKBYTES); - } - xof_ctx_release(&state); - } - } -} - -/************************************************* -* Name: indcpa_keypair -* -* Description: Generates public and private key for the CPA-secure -* public-key encryption scheme underlying Kyber -* -* Arguments: - uint8_t *pk: pointer to output public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (of length KYBER_INDCPA_SECRETKEYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_indcpa_keypair(uint8_t *pk, uint8_t *sk) { - polyvec a[KYBER_K], e, pkpv, skpv; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t *publicseed = buf; - uint8_t *noiseseed = buf + KYBER_SYMBYTES; - uint8_t nonce = 0; - - randombytes(buf, KYBER_SYMBYTES); - hash_g(buf, buf, KYBER_SYMBYTES); - - gen_a(a, publicseed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(skpv.vec + i, noiseseed, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(e.vec + i, noiseseed, nonce++); - } - - PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(&skpv); - PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(&e); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(&pkpv.vec[i], &a[i], &skpv); - PQCLEAN_KYBER76890S_CLEAN_poly_frommont(&pkpv.vec[i]); - } - - PQCLEAN_KYBER76890S_CLEAN_polyvec_add(&pkpv, &pkpv, &e); - PQCLEAN_KYBER76890S_CLEAN_polyvec_reduce(&pkpv); - - pack_sk(sk, &skpv); - pack_pk(pk, &pkpv, publicseed); -} - -/************************************************* -* Name: indcpa_enc -* -* Description: Encryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *c: pointer to output ciphertext (of length KYBER_INDCPA_BYTES bytes) -* - const uint8_t *m: pointer to input message (of length KYBER_INDCPA_MSGBYTES bytes) -* - const uint8_t *pk: pointer to input public key (of length KYBER_INDCPA_PUBLICKEYBYTES bytes) -* - const uint8_t *coin: pointer to input random coins used as seed (of length KYBER_SYMBYTES bytes) -* to deterministically generate all randomness -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_indcpa_enc(uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins) { - polyvec sp, pkpv, ep, at[KYBER_K], bp; - poly v, k, epp; - uint8_t seed[KYBER_SYMBYTES]; - uint8_t nonce = 0; - - unpack_pk(&pkpv, seed, pk); - PQCLEAN_KYBER76890S_CLEAN_poly_frommsg(&k, m); - gen_at(at, seed); - - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(sp.vec + i, coins, nonce++); - } - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(ep.vec + i, coins, nonce++); - } - PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(&epp, coins, nonce++); - - PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(&sp); - - // matrix-vector multiplication - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(&bp.vec[i], &at[i], &sp); - } - - PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(&v, &pkpv, &sp); - - PQCLEAN_KYBER76890S_CLEAN_polyvec_invntt(&bp); - PQCLEAN_KYBER76890S_CLEAN_poly_invntt(&v); - - PQCLEAN_KYBER76890S_CLEAN_polyvec_add(&bp, &bp, &ep); - PQCLEAN_KYBER76890S_CLEAN_poly_add(&v, &v, &epp); - PQCLEAN_KYBER76890S_CLEAN_poly_add(&v, &v, &k); - PQCLEAN_KYBER76890S_CLEAN_polyvec_reduce(&bp); - PQCLEAN_KYBER76890S_CLEAN_poly_reduce(&v); - - pack_ciphertext(c, &bp, &v); -} - -/************************************************* -* Name: indcpa_dec -* -* Description: Decryption function of the CPA-secure -* public-key encryption scheme underlying Kyber. -* -* Arguments: - uint8_t *m: pointer to output decrypted message (of length KYBER_INDCPA_MSGBYTES) -* - const uint8_t *c: pointer to input ciphertext (of length KYBER_INDCPA_BYTES) -* - const uint8_t *sk: pointer to input secret key (of length KYBER_INDCPA_SECRETKEYBYTES) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_indcpa_dec(uint8_t *m, - const uint8_t *c, - const uint8_t *sk) { - polyvec bp, skpv; - poly v, mp; - - unpack_ciphertext(&bp, &v, c); - unpack_sk(&skpv, sk); - - PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(&bp); - PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(&mp, &skpv, &bp); - PQCLEAN_KYBER76890S_CLEAN_poly_invntt(&mp); - - PQCLEAN_KYBER76890S_CLEAN_poly_sub(&mp, &v, &mp); - PQCLEAN_KYBER76890S_CLEAN_poly_reduce(&mp); - - PQCLEAN_KYBER76890S_CLEAN_poly_tomsg(m, &mp); -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.h b/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.h deleted file mode 100644 index 54120670cc..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/indcpa.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H - -#include - -void PQCLEAN_KYBER76890S_CLEAN_indcpa_keypair( - uint8_t *pk, - uint8_t *sk); - -void PQCLEAN_KYBER76890S_CLEAN_indcpa_enc( - uint8_t *c, - const uint8_t *m, - const uint8_t *pk, - const uint8_t *coins); - -void PQCLEAN_KYBER76890S_CLEAN_indcpa_dec( - uint8_t *m, - const uint8_t *c, - const uint8_t *sk); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/kem.c b/src/kem/kyber/pqclean_kyber768_90s_clean/kem.c deleted file mode 100644 index f2f645ca79..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/kem.c +++ /dev/null @@ -1,99 +0,0 @@ -#include "api.h" -#include "indcpa.h" -#include "params.h" -#include "randombytes.h" -#include "symmetric.h" -#include "verify.h" - -#include -/************************************************* -* Name: crypto_kem_keypair -* -* Description: Generates public and private key -* for CCA-secure Kyber key encapsulation mechanism -* -* Arguments: - uint8_t *pk: pointer to output public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* - uint8_t *sk: pointer to output private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - PQCLEAN_KYBER76890S_CLEAN_indcpa_keypair(pk, sk); - for (i = 0; i < KYBER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + KYBER_INDCPA_SECRETKEYBYTES] = pk[i]; - } - hash_h(sk + KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); - randombytes(sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES); /* Value z for pseudo-random output on reject */ - return 0; -} - -/************************************************* -* Name: crypto_kem_enc -* -* Description: Generates cipher text and shared -* secret for given public key -* -* Arguments: - uint8_t *ct: pointer to output cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *pk: pointer to input public key (an already allocated array of CRYPTO_PUBLICKEYBYTES bytes) -* -* Returns 0 (success) -**************************************************/ -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - uint8_t buf[2 * KYBER_SYMBYTES]; - - randombytes(buf, KYBER_SYMBYTES); - hash_h(buf, buf, KYBER_SYMBYTES); /* Don't release system RNG output */ - - hash_h(buf + KYBER_SYMBYTES, pk, KYBER_PUBLICKEYBYTES); /* Multitarget countermeasure for coins + contributory KEM */ - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER76890S_CLEAN_indcpa_enc(ct, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} - -/************************************************* -* Name: crypto_kem_dec -* -* Description: Generates shared secret for given -* cipher text and private key -* -* Arguments: - uint8_t *ss: pointer to output shared secret (an already allocated array of CRYPTO_BYTES bytes) -* - const uint8_t *ct: pointer to input cipher text (an already allocated array of CRYPTO_CIPHERTEXTBYTES bytes) -* - const uint8_t *sk: pointer to input private key (an already allocated array of CRYPTO_SECRETKEYBYTES bytes) -* -* Returns 0. -* -* On failure, ss will contain a pseudo-random value. -**************************************************/ -int PQCLEAN_KYBER76890S_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[KYBER_CIPHERTEXTBYTES]; - uint8_t buf[2 * KYBER_SYMBYTES]; - uint8_t kr[2 * KYBER_SYMBYTES]; /* Will contain key, coins */ - const uint8_t *pk = sk + KYBER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_KYBER76890S_CLEAN_indcpa_dec(buf, ct, sk); - - for (i = 0; i < KYBER_SYMBYTES; i++) { /* Multitarget countermeasure for coins + contributory KEM */ - buf[KYBER_SYMBYTES + i] = sk[KYBER_SECRETKEYBYTES - 2 * KYBER_SYMBYTES + i]; /* Save hash by storing H(pk) in sk */ - } - hash_g(kr, buf, 2 * KYBER_SYMBYTES); - - PQCLEAN_KYBER76890S_CLEAN_indcpa_enc(cmp, buf, pk, kr + KYBER_SYMBYTES); /* coins are in kr+KYBER_SYMBYTES */ - - fail = PQCLEAN_KYBER76890S_CLEAN_verify(ct, cmp, KYBER_CIPHERTEXTBYTES); - - hash_h(kr + KYBER_SYMBYTES, ct, KYBER_CIPHERTEXTBYTES); /* overwrite coins in kr with H(c) */ - - PQCLEAN_KYBER76890S_CLEAN_cmov(kr, sk + KYBER_SECRETKEYBYTES - KYBER_SYMBYTES, KYBER_SYMBYTES, fail); /* Overwrite pre-k with z on re-encryption failure */ - - kdf(ss, kr, 2 * KYBER_SYMBYTES); /* hash concatenation of pre-k and H(c) to k */ - return 0; -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.c b/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.c deleted file mode 100644 index 2ca5245904..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "ntt.h" -#include "params.h" -#include "reduce.h" - -#include -#include - -/* Code to generate zetas and zetas_inv used in the number-theoretic transform: - -#define KYBER_ROOT_OF_UNITY 17 - -static const uint16_t tree[128] = { - 0, 64, 32, 96, 16, 80, 48, 112, 8, 72, 40, 104, 24, 88, 56, 120, - 4, 68, 36, 100, 20, 84, 52, 116, 12, 76, 44, 108, 28, 92, 60, 124, - 2, 66, 34, 98, 18, 82, 50, 114, 10, 74, 42, 106, 26, 90, 58, 122, - 6, 70, 38, 102, 22, 86, 54, 118, 14, 78, 46, 110, 30, 94, 62, 126, - 1, 65, 33, 97, 17, 81, 49, 113, 9, 73, 41, 105, 25, 89, 57, 121, - 5, 69, 37, 101, 21, 85, 53, 117, 13, 77, 45, 109, 29, 93, 61, 125, - 3, 67, 35, 99, 19, 83, 51, 115, 11, 75, 43, 107, 27, 91, 59, 123, - 7, 71, 39, 103, 23, 87, 55, 119, 15, 79, 47, 111, 31, 95, 63, 127}; - - -static int16_t fqmul(int16_t a, int16_t b) { - return montgomery_reduce((int32_t)a*b); -} - -void init_ntt() { - unsigned int i, j, k; - int16_t tmp[128]; - - tmp[0] = MONT; - for(i = 1; i < 128; ++i) - tmp[i] = fqmul(tmp[i-1], KYBER_ROOT_OF_UNITY*MONT % KYBER_Q); - - for(i = 0; i < 128; ++i) - zetas[i] = tmp[tree[i]]; - - k = 0; - for(i = 64; i >= 1; i >>= 1) - for(j = i; j < 2*i; ++j) - zetas_inv[k++] = -tmp[128 - tree[j]]; - - zetas_inv[127] = MONT * (MONT * (KYBER_Q - 1) * ((KYBER_Q - 1)/128) % KYBER_Q) % KYBER_Q; -} - -*/ -const int16_t PQCLEAN_KYBER76890S_CLEAN_zetas[128] = { - 2285, 2571, 2970, 1812, 1493, 1422, 287, 202, 3158, 622, 1577, 182, 962, 2127, 1855, 1468, - 573, 2004, 264, 383, 2500, 1458, 1727, 3199, 2648, 1017, 732, 608, 1787, 411, 3124, 1758, - 1223, 652, 2777, 1015, 2036, 1491, 3047, 1785, 516, 3321, 3009, 2663, 1711, 2167, 126, 1469, - 2476, 3239, 3058, 830, 107, 1908, 3082, 2378, 2931, 961, 1821, 2604, 448, 2264, 677, 2054, - 2226, 430, 555, 843, 2078, 871, 1550, 105, 422, 587, 177, 3094, 3038, 2869, 1574, 1653, - 3083, 778, 1159, 3182, 2552, 1483, 2727, 1119, 1739, 644, 2457, 349, 418, 329, 3173, 3254, - 817, 1097, 603, 610, 1322, 2044, 1864, 384, 2114, 3193, 1218, 1994, 2455, 220, 2142, 1670, - 2144, 1799, 2051, 794, 1819, 2475, 2459, 478, 3221, 3021, 996, 991, 958, 1869, 1522, 1628 -}; - -const int16_t PQCLEAN_KYBER76890S_CLEAN_zetas_inv[128] = { - 1701, 1807, 1460, 2371, 2338, 2333, 308, 108, 2851, 870, 854, 1510, 2535, 1278, 1530, 1185, - 1659, 1187, 3109, 874, 1335, 2111, 136, 1215, 2945, 1465, 1285, 2007, 2719, 2726, 2232, 2512, - 75, 156, 3000, 2911, 2980, 872, 2685, 1590, 2210, 602, 1846, 777, 147, 2170, 2551, 246, - 1676, 1755, 460, 291, 235, 3152, 2742, 2907, 3224, 1779, 2458, 1251, 2486, 2774, 2899, 1103, - 1275, 2652, 1065, 2881, 725, 1508, 2368, 398, 951, 247, 1421, 3222, 2499, 271, 90, 853, - 1860, 3203, 1162, 1618, 666, 320, 8, 2813, 1544, 282, 1838, 1293, 2314, 552, 2677, 2106, - 1571, 205, 2918, 1542, 2721, 2597, 2312, 681, 130, 1602, 1871, 829, 2946, 3065, 1325, 2756, - 1861, 1474, 1202, 2367, 3147, 1752, 2707, 171, 3127, 3042, 1907, 1836, 1517, 359, 758, 1441 -}; - - -/************************************************* -* Name: fqmul -* -* Description: Multiplication followed by Montgomery reduction -* -* Arguments: - int16_t a: first factor -* - int16_t b: second factor -* -* Returns 16-bit integer congruent to a*b*R^{-1} mod q -**************************************************/ -static int16_t fqmul(int16_t a, int16_t b) { - return PQCLEAN_KYBER76890S_CLEAN_montgomery_reduce((int32_t)a * b); -} - -/************************************************* -* Name: ntt -* -* Description: Inplace number-theoretic transform (NTT) in Rq -* input is in standard order, output is in bitreversed order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_ntt(int16_t poly[256]) { - size_t j, k = 1; - int16_t t, zeta; - - for (size_t len = 128; len >= 2; len >>= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER76890S_CLEAN_zetas[k++]; - for (j = start; j < start + len; ++j) { - t = fqmul(zeta, poly[j + len]); - poly[j + len] = poly[j] - t; - poly[j] = poly[j] + t; - } - } - } -} - -/************************************************* -* Name: invntt -* -* Description: Inplace inverse number-theoretic transform in Rq -* input is in bitreversed order, output is in standard order -* -* Arguments: - int16_t poly[256]: pointer to input/output vector of elements of Zq -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_invntt(int16_t poly[256]) { - size_t j, k = 0; - int16_t t, zeta; - - for (size_t len = 2; len <= 128; len <<= 1) { - for (size_t start = 0; start < 256; start = j + len) { - zeta = PQCLEAN_KYBER76890S_CLEAN_zetas_inv[k++]; - for (j = start; j < start + len; ++j) { - t = poly[j]; - poly[j] = PQCLEAN_KYBER76890S_CLEAN_barrett_reduce(t + poly[j + len]); - poly[j + len] = t - poly[j + len]; - poly[j + len] = fqmul(zeta, poly[j + len]); - } - } - } - - for (j = 0; j < 256; ++j) { - poly[j] = fqmul(poly[j], PQCLEAN_KYBER76890S_CLEAN_zetas_inv[127]); - } -} - -/************************************************* -* Name: basemul -* -* Description: Multiplication of polynomials in Zq[X]/((X^2-zeta)) -* used for multiplication of elements in Rq in NTT domain -* -* Arguments: - int16_t r[2]: pointer to the output polynomial -* - const int16_t a[2]: pointer to the first factor -* - const int16_t b[2]: pointer to the second factor -* - int16_t zeta: integer defining the reduction polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta) { - r[0] = fqmul(a[1], b[1]); - r[0] = fqmul(r[0], zeta); - r[0] += fqmul(a[0], b[0]); - - r[1] = fqmul(a[0], b[1]); - r[1] += fqmul(a[1], b[0]); -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.h b/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.h deleted file mode 100644 index 90b83eb7c1..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NTT_H -#define NTT_H - -#include - -extern const int16_t PQCLEAN_KYBER76890S_CLEAN_zetas[128]; -extern const int16_t PQCLEAN_KYBER76890S_CLEAN_zetasinv[128]; - -void PQCLEAN_KYBER76890S_CLEAN_ntt(int16_t *poly); -void PQCLEAN_KYBER76890S_CLEAN_invntt(int16_t *poly); -void PQCLEAN_KYBER76890S_CLEAN_basemul(int16_t r[2], const int16_t a[2], const int16_t b[2], int16_t zeta); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/params.h b/src/kem/kyber/pqclean_kyber768_90s_clean/params.h deleted file mode 100644 index 3a1e0d10bb..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/params.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change parameters below this line */ - -#define KYBER_N 256 -#define KYBER_Q 3329 - -#define KYBER_ETA 2 - -#define KYBER_SYMBYTES 32 /* size in bytes of hashes, and seeds */ -#define KYBER_SSBYTES 32 /* size in bytes of shared key */ - -#define KYBER_POLYBYTES 384 -#define KYBER_POLYVECBYTES (KYBER_K * KYBER_POLYBYTES) - - -#define KYBER_K 3 -#define KYBER_POLYCOMPRESSEDBYTES 128 -#define KYBER_POLYVECCOMPRESSEDBYTES (KYBER_K * 320) - -#define KYBER_INDCPA_MSGBYTES KYBER_SYMBYTES -#define KYBER_INDCPA_PUBLICKEYBYTES (KYBER_POLYVECBYTES + KYBER_SYMBYTES) -#define KYBER_INDCPA_SECRETKEYBYTES (KYBER_POLYVECBYTES) -#define KYBER_INDCPA_BYTES (KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES) - -#define KYBER_PUBLICKEYBYTES (KYBER_INDCPA_PUBLICKEYBYTES) -#define KYBER_SECRETKEYBYTES (KYBER_INDCPA_SECRETKEYBYTES + KYBER_INDCPA_PUBLICKEYBYTES + 2*KYBER_SYMBYTES) /* 32 bytes of additional space to save H(pk) */ -#define KYBER_CIPHERTEXTBYTES KYBER_INDCPA_BYTES - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/poly.c b/src/kem/kyber/pqclean_kyber768_90s_clean/poly.c deleted file mode 100644 index b5ad12b27f..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/poly.c +++ /dev/null @@ -1,280 +0,0 @@ -#include "cbd.h" -#include "ntt.h" -#include "params.h" -#include "poly.h" -#include "reduce.h" -#include "symmetric.h" - -#include -/************************************************* -* Name: poly_compress -* -* Description: Compression and subsequent serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYCOMPRESSEDBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_compress(uint8_t *r, poly *a) { - uint8_t t[8]; - size_t k = 0; - - PQCLEAN_KYBER76890S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N; i += 8) { - for (size_t j = 0; j < 8; j++) { - t[j] = ((((uint32_t)a->coeffs[i + j] << 4) + KYBER_Q / 2) / KYBER_Q) & 15; - } - - r[k] = (uint8_t)(t[0] | (t[1] << 4)); - r[k + 1] = (uint8_t)(t[2] | (t[3] << 4)); - r[k + 2] = (uint8_t)(t[4] | (t[5] << 4)); - r[k + 3] = (uint8_t)(t[6] | (t[7] << 4)); - k += 4; - } -} - -/************************************************* -* Name: poly_decompress -* -* Description: De-serialization and subsequent decompression of a polynomial; -* approximate inverse of poly_compress -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of length KYBER_POLYCOMPRESSEDBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_decompress(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N; i += 8) { - r->coeffs[i + 0] = (int16_t)((((a[0] & 15) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 1] = (int16_t)((((a[0] >> 4) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 2] = (int16_t)((((a[1] & 15) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 3] = (int16_t)((((a[1] >> 4) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 4] = (int16_t)((((a[2] & 15) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 5] = (int16_t)((((a[2] >> 4) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 6] = (int16_t)((((a[3] & 15) * KYBER_Q) + 8) >> 4); - r->coeffs[i + 7] = (int16_t)((((a[3] >> 4) * KYBER_Q) + 8) >> 4); - a += 4; - } -} - -/************************************************* -* Name: poly_tobytes -* -* Description: Serialization of a polynomial -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYBYTES bytes) -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_tobytes(uint8_t *r, poly *a) { - int16_t t0, t1; - - PQCLEAN_KYBER76890S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_N / 2; i++) { - t0 = a->coeffs[2 * i]; - t1 = a->coeffs[2 * i + 1]; - r[3 * i] = t0 & 0xff; - r[3 * i + 1] = (uint8_t)((t0 >> 8) | ((t1 & 0xf) << 4)); - r[3 * i + 2] = (uint8_t)(t1 >> 4); - } -} - -/************************************************* -* Name: poly_frombytes -* -* Description: De-serialization of a polynomial; -* inverse of poly_tobytes -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *a: pointer to input byte array (of KYBER_POLYBYTES bytes) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_frombytes(poly *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_N / 2; i++) { - r->coeffs[2 * i] = (int16_t)(a[3 * i] | ((uint16_t)a[3 * i + 1] & 0x0f) << 8); - r->coeffs[2 * i + 1] = (int16_t)(a[3 * i + 1] >> 4 | ((uint16_t)a[3 * i + 2] & 0xff) << 4); - } -} - -/************************************************* -* Name: poly_getnoise -* -* Description: Sample a polynomial deterministically from a seed and a nonce, -* with output polynomial close to centered binomial distribution -* with parameter KYBER_ETA -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *seed: pointer to input seed (pointing to array of length KYBER_SYMBYTES bytes) -* - uint8_t nonce: one-byte input nonce -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce) { - uint8_t buf[KYBER_ETA * KYBER_N / 4]; - - prf(buf, KYBER_ETA * KYBER_N / 4, seed, nonce); - PQCLEAN_KYBER76890S_CLEAN_cbd(r, buf); -} - -/************************************************* -* Name: poly_ntt -* -* Description: Computes negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in normal order, output in bitreversed order -* -* Arguments: - uint16_t *r: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_ntt(poly *r) { - PQCLEAN_KYBER76890S_CLEAN_ntt(r->coeffs); - PQCLEAN_KYBER76890S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: poly_invntt -* -* Description: Computes inverse of negacyclic number-theoretic transform (NTT) of -* a polynomial in place; -* inputs assumed to be in bitreversed order, output in normal order -* -* Arguments: - uint16_t *a: pointer to in/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_invntt(poly *r) { - PQCLEAN_KYBER76890S_CLEAN_invntt(r->coeffs); -} - -/************************************************* -* Name: poly_basemul -* -* Description: Multiplication of two polynomials in NTT domain -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N / 4; ++i) { - PQCLEAN_KYBER76890S_CLEAN_basemul( - r->coeffs + 4 * i, - a->coeffs + 4 * i, - b->coeffs + 4 * i, - PQCLEAN_KYBER76890S_CLEAN_zetas[64 + i]); - PQCLEAN_KYBER76890S_CLEAN_basemul( - r->coeffs + 4 * i + 2, - a->coeffs + 4 * i + 2, - b->coeffs + 4 * i + 2, - -PQCLEAN_KYBER76890S_CLEAN_zetas[64 + i]); - } -} - -/************************************************* -* Name: poly_frommont -* -* Description: Inplace conversion of all coefficients of a polynomial -* from Montgomery domain to normal domain -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_frommont(poly *r) { - const int16_t f = (1ULL << 32) % KYBER_Q; - - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER76890S_CLEAN_montgomery_reduce( - (int32_t)r->coeffs[i] * f); - } -} - -/************************************************* -* Name: poly_reduce -* -* Description: Applies Barrett reduction to all coefficients of a polynomial -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_reduce(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER76890S_CLEAN_barrett_reduce(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_csubq -* -* Description: Applies conditional subtraction of q to each coefficient of a polynomial -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_csubq(poly *r) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = PQCLEAN_KYBER76890S_CLEAN_csubq(r->coeffs[i]); - } -} - -/************************************************* -* Name: poly_add -* -* Description: Add two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_add(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] + b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_sub -* -* Description: Subtract two polynomials -* -* Arguments: - poly *r: pointer to output polynomial -* - const poly *a: pointer to first input polynomial -* - const poly *b: pointer to second input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b) { - for (size_t i = 0; i < KYBER_N; i++) { - r->coeffs[i] = a->coeffs[i] - b->coeffs[i]; - } -} - -/************************************************* -* Name: poly_frommsg -* -* Description: Convert 32-byte message to polynomial -* -* Arguments: - poly *r: pointer to output polynomial -* - const uint8_t *msg: pointer to input message -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]) { - uint16_t mask; - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - for (size_t j = 0; j < 8; j++) { - mask = -((msg[i] >> j) & 1); - r->coeffs[8 * i + j] = mask & ((KYBER_Q + 1) / 2); - } - } -} - -/************************************************* -* Name: poly_tomsg -* -* Description: Convert polynomial to 32-byte message -* -* Arguments: - uint8_t *msg: pointer to output message -* - const poly *a: pointer to input polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a) { - uint16_t t; - - PQCLEAN_KYBER76890S_CLEAN_poly_csubq(a); - - for (size_t i = 0; i < KYBER_SYMBYTES; i++) { - msg[i] = 0; - for (size_t j = 0; j < 8; j++) { - t = (((a->coeffs[8 * i + j] << 1) + KYBER_Q / 2) / KYBER_Q) & 1; - msg[i] |= t << j; - } - } -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/poly.h b/src/kem/kyber/pqclean_kyber768_90s_clean/poly.h deleted file mode 100644 index 53c39fa20d..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/poly.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -/* - * Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial - * coeffs[0] + X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1] - */ -typedef struct { - int16_t coeffs[KYBER_N]; -} poly; - -void PQCLEAN_KYBER76890S_CLEAN_poly_compress(uint8_t *r, poly *a); -void PQCLEAN_KYBER76890S_CLEAN_poly_decompress(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER76890S_CLEAN_poly_tobytes(uint8_t *r, poly *a); -void PQCLEAN_KYBER76890S_CLEAN_poly_frombytes(poly *r, const uint8_t *a); - -void PQCLEAN_KYBER76890S_CLEAN_poly_frommsg(poly *r, const uint8_t msg[KYBER_SYMBYTES]); -void PQCLEAN_KYBER76890S_CLEAN_poly_tomsg(uint8_t msg[KYBER_SYMBYTES], poly *a); - -void PQCLEAN_KYBER76890S_CLEAN_poly_getnoise(poly *r, const uint8_t *seed, uint8_t nonce); - -void PQCLEAN_KYBER76890S_CLEAN_poly_ntt(poly *r); -void PQCLEAN_KYBER76890S_CLEAN_poly_invntt(poly *r); -void PQCLEAN_KYBER76890S_CLEAN_poly_basemul(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER76890S_CLEAN_poly_frommont(poly *r); - -void PQCLEAN_KYBER76890S_CLEAN_poly_reduce(poly *r); -void PQCLEAN_KYBER76890S_CLEAN_poly_csubq(poly *r); - -void PQCLEAN_KYBER76890S_CLEAN_poly_add(poly *r, const poly *a, const poly *b); -void PQCLEAN_KYBER76890S_CLEAN_poly_sub(poly *r, const poly *a, const poly *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.c b/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.c deleted file mode 100644 index 459feb6dde..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.c +++ /dev/null @@ -1,175 +0,0 @@ -#include "polyvec.h" - -#include "poly.h" - -#include -#include -/************************************************* -* Name: polyvec_compress -* -* Description: Compress and serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECCOMPRESSEDBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a) { - PQCLEAN_KYBER76890S_CLEAN_polyvec_csubq(a); - - uint16_t t[4]; - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 4; j++) { - for (size_t k = 0; k < 4; k++) { - t[k] = ((((uint32_t)a->vec[i].coeffs[4 * j + k] << 10) + KYBER_Q / 2) / KYBER_Q) & 0x3ff; - } - - r[5 * j + 0] = (uint8_t)t[0]; - r[5 * j + 1] = (uint8_t)((t[0] >> 8) | ((t[1] & 0x3f) << 2)); - r[5 * j + 2] = (uint8_t)((t[1] >> 6) | ((t[2] & 0x0f) << 4)); - r[5 * j + 3] = (uint8_t)((t[2] >> 4) | ((t[3] & 0x03) << 6)); - r[5 * j + 4] = (uint8_t)((t[3] >> 2)); - } - r += 320; - } -} - -/************************************************* -* Name: polyvec_decompress -* -* Description: De-serialize and decompress vector of polynomials; -* approximate inverse of polyvec_compress -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - uint8_t *a: pointer to input byte array (of length KYBER_POLYVECCOMPRESSEDBYTES) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - for (size_t j = 0; j < KYBER_N / 4; j++) { - r->vec[i].coeffs[4 * j + 0] = (int16_t)( (((a[5 * j + 0] | (((uint32_t)a[5 * j + 1] & 0x03) << 8)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 1] = (int16_t)(((((a[5 * j + 1] >> 2) | (((uint32_t)a[5 * j + 2] & 0x0f) << 6)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 2] = (int16_t)(((((a[5 * j + 2] >> 4) | (((uint32_t)a[5 * j + 3] & 0x3f) << 4)) * KYBER_Q) + 512) >> 10); - r->vec[i].coeffs[4 * j + 3] = (int16_t)(((((a[5 * j + 3] >> 6) | (((uint32_t)a[5 * j + 4] & 0xff) << 2)) * KYBER_Q) + 512) >> 10); - } - a += 320; - } -} - -/************************************************* -* Name: polyvec_tobytes -* -* Description: Serialize vector of polynomials -* -* Arguments: - uint8_t *r: pointer to output byte array (needs space for KYBER_POLYVECBYTES) -* - const polyvec *a: pointer to input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_tobytes(r + i * KYBER_POLYBYTES, &a->vec[i]); - } -} - -/************************************************* -* Name: polyvec_frombytes -* -* Description: De-serialize vector of polynomials; -* inverse of polyvec_tobytes -* -* Arguments: - uint8_t *r: pointer to output byte array -* - const polyvec *a: pointer to input vector of polynomials (of length KYBER_POLYVECBYTES) -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_frombytes(&r->vec[i], a + i * KYBER_POLYBYTES); - } -} - -/************************************************* -* Name: polyvec_ntt -* -* Description: Apply forward NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_ntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_invntt -* -* Description: Apply inverse NTT to all elements of a vector of polynomials -* -* Arguments: - polyvec *r: pointer to in/output vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_invntt(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_invntt(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_pointwise_acc -* -* Description: Pointwise multiply elements of a and b and accumulate into r -* -* Arguments: - poly *r: pointer to output polynomial -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b) { - poly t; - - PQCLEAN_KYBER76890S_CLEAN_poly_basemul(r, &a->vec[0], &b->vec[0]); - for (size_t i = 1; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_basemul(&t, &a->vec[i], &b->vec[i]); - PQCLEAN_KYBER76890S_CLEAN_poly_add(r, r, &t); - } - - PQCLEAN_KYBER76890S_CLEAN_poly_reduce(r); -} - -/************************************************* -* Name: polyvec_reduce -* -* Description: Applies Barrett reduction to each coefficient -* of each element of a vector of polynomials -* for details of the Barrett reduction see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_reduce(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_reduce(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_csubq -* -* Description: Applies conditional subtraction of q to each coefficient -* of each element of a vector of polynomials -* for details of conditional subtraction of q see comments in reduce.c -* -* Arguments: - poly *r: pointer to input/output polynomial -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_csubq(polyvec *r) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_csubq(&r->vec[i]); - } -} - -/************************************************* -* Name: polyvec_add -* -* Description: Add vectors of polynomials -* -* Arguments: - polyvec *r: pointer to output vector of polynomials -* - const polyvec *a: pointer to first input vector of polynomials -* - const polyvec *b: pointer to second input vector of polynomials -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b) { - for (size_t i = 0; i < KYBER_K; i++) { - PQCLEAN_KYBER76890S_CLEAN_poly_add(&r->vec[i], &a->vec[i], &b->vec[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.h b/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.h deleted file mode 100644 index c2bb284be9..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/polyvec.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef POLYVEC_H -#define POLYVEC_H - -#include "params.h" -#include "poly.h" - -#include - -typedef struct { - poly vec[KYBER_K]; -} polyvec; - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_compress(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER76890S_CLEAN_polyvec_decompress(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_tobytes(uint8_t *r, polyvec *a); -void PQCLEAN_KYBER76890S_CLEAN_polyvec_frombytes(polyvec *r, const uint8_t *a); - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_ntt(polyvec *r); -void PQCLEAN_KYBER76890S_CLEAN_polyvec_invntt(polyvec *r); - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_pointwise_acc(poly *r, const polyvec *a, const polyvec *b); - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_reduce(polyvec *r); -void PQCLEAN_KYBER76890S_CLEAN_polyvec_csubq(polyvec *r); - -void PQCLEAN_KYBER76890S_CLEAN_polyvec_add(polyvec *r, const polyvec *a, const polyvec *b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.c b/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.c deleted file mode 100644 index 9aa7f5bf89..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "reduce.h" - -#include "params.h" - -#include -/************************************************* -* Name: montgomery_reduce -* -* Description: Montgomery reduction; given a 32-bit integer a, computes -* 16-bit integer congruent to a * R^-1 mod q, -* where R=2^16 -* -* Arguments: - int32_t a: input integer to be reduced; has to be in {-q2^15,...,q2^15-1} -* -* Returns: integer in {-q+1,...,q-1} congruent to a * R^-1 modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER76890S_CLEAN_montgomery_reduce(int32_t a) { - int32_t t; - int16_t u; - - u = (int16_t)(a * (int64_t)QINV); - t = (int32_t)u * KYBER_Q; - t = a - t; - t >>= 16; - return (int16_t)t; -} - -/************************************************* -* Name: barrett_reduce -* -* Description: Barrett reduction; given a 16-bit integer a, computes -* 16-bit integer congruent to a mod q in {0,...,q} -* -* Arguments: - int16_t a: input integer to be reduced -* -* Returns: integer in {0,...,q} congruent to a modulo q. -**************************************************/ -int16_t PQCLEAN_KYBER76890S_CLEAN_barrett_reduce(int16_t a) { - int32_t t; - const int32_t v = (1U << 26) / KYBER_Q + 1; - - t = v * a; - t >>= 26; - t *= KYBER_Q; - return a - (int16_t)t; -} - -/************************************************* -* Name: csubq -* -* Description: Conditionallly subtract q -* -* Arguments: - int16_t a: input integer -* -* Returns: a - q if a >= q, else a -**************************************************/ -int16_t PQCLEAN_KYBER76890S_CLEAN_csubq(int16_t a) { - a -= KYBER_Q; - a += (a >> 15) & KYBER_Q; - return a; -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.h b/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.h deleted file mode 100644 index 20a73c41c5..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/reduce.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef REDUCE_H -#define REDUCE_H - -#include - -#define MONT 2285 // 2^16 % Q -#define QINV 62209 // q^(-1) mod 2^16 - -int16_t PQCLEAN_KYBER76890S_CLEAN_montgomery_reduce(int32_t a); - -int16_t PQCLEAN_KYBER76890S_CLEAN_barrett_reduce(int16_t a); - -int16_t PQCLEAN_KYBER76890S_CLEAN_csubq(int16_t a); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/symmetric.h b/src/kem/kyber/pqclean_kyber768_90s_clean/symmetric.h deleted file mode 100644 index 681ea3d7cc..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/symmetric.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SYMMETRIC_H -#define SYMMETRIC_H - -#include "params.h" - - -#include "aes256ctr.h" -#include "sha2.h" - -#define hash_h(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) -#define hash_g(OUT, IN, INBYTES) sha512(OUT, IN, INBYTES) -#define xof_absorb(STATE, IN, X, Y) PQCLEAN_KYBER76890S_CLEAN_aes256xof_absorb(STATE, IN, X, Y) -#define xof_squeezeblocks(OUT, OUTBLOCKS, STATE) PQCLEAN_KYBER76890S_CLEAN_aes256xof_squeezeblocks(OUT, OUTBLOCKS, STATE) -#define xof_ctx_release(STATE) PQCLEAN_KYBER76890S_CLEAN_aes256xof_ctx_release(STATE) -#define prf(OUT, OUTBYTES, KEY, NONCE) PQCLEAN_KYBER76890S_CLEAN_aes256_prf(OUT, OUTBYTES, KEY, NONCE) -#define kdf(OUT, IN, INBYTES) sha256(OUT, IN, INBYTES) - -#define XOF_BLOCKBYTES 64 - -typedef aes256xof_ctx xof_state; - - -#endif /* SYMMETRIC_H */ diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/verify.c b/src/kem/kyber/pqclean_kyber768_90s_clean/verify.c deleted file mode 100644 index 3a41a40034..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/verify.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "verify.h" - -#include -#include - -/************************************************* -* Name: verify -* -* Description: Compare two arrays for equality in constant time. -* -* Arguments: const uint8_t *a: pointer to first byte array -* const uint8_t *b: pointer to second byte array -* size_t len: length of the byte arrays -* -* Returns 0 if the byte arrays are equal, 1 otherwise -**************************************************/ -uint8_t PQCLEAN_KYBER76890S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-r) >> 63; - return (uint8_t)r; -} - -/************************************************* -* Name: cmov -* -* Description: Copy len bytes from x to r if b is 1; -* don't modify x if b is 0. Requires b to be in {0,1}; -* assumes two's complement representation of negative integers. -* Runs in constant time. -* -* Arguments: uint8_t *r: pointer to output byte array -* const uint8_t *x: pointer to input byte array -* size_t len: Amount of bytes to be copied -* uint8_t b: Condition bit; has to be in {0,1} -**************************************************/ -void PQCLEAN_KYBER76890S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/kyber/pqclean_kyber768_90s_clean/verify.h b/src/kem/kyber/pqclean_kyber768_90s_clean/verify.h deleted file mode 100644 index 7079be394d..0000000000 --- a/src/kem/kyber/pqclean_kyber768_90s_clean/verify.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include -#include - -uint8_t PQCLEAN_KYBER76890S_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - -void PQCLEAN_KYBER76890S_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - -#endif diff --git a/src/kem/kyber/pqclean_kyber768_avx2/oqs_unsupported.c b/src/kem/kyber/pqclean_kyber768_avx2/oqs_unsupported.c deleted file mode 100644 index bd6810b0e1..0000000000 --- a/src/kem/kyber/pqclean_kyber768_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int kyber768_avx2_unsupported=1; diff --git a/src/kem/ledacrypt/CMakeLists.txt b/src/kem/ledacrypt/CMakeLists.txt index 3248802047..50f8f9f09f 100644 --- a/src/kem/ledacrypt/CMakeLists.txt +++ b/src/kem/ledacrypt/CMakeLists.txt @@ -2,65 +2,24 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_ledacrypt_ledakemlt12) - -if(OQS_ENABLE_KEM_ledacrypt_ledakemlt12_leaktime) - set(SRCS_LEDACRYPT_LEDAKEMLT12_LEAKTIME_SRCS pqclean_ledakemlt12_leaktime/bf_decoding.c pqclean_ledakemlt12_leaktime/dfr_test.c pqclean_ledakemlt12_leaktime/gf2x_arith.c pqclean_ledakemlt12_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt12_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt12_leaktime/kem.c pqclean_ledakemlt12_leaktime/niederreiter.c pqclean_ledakemlt12_leaktime/rng.c pqclean_ledakemlt12_leaktime/sort.c pqclean_ledakemlt12_leaktime/utils.c) -else() - set(SRCS_LEDACRYPT_LEDAKEMLT12_LEAKTIME_SRCS pqclean_ledacryptledakemlt12_leaktime/oqs_unsupported.c ) -endif() - - -set(SRCS_LEDACRYPT_LEDAKEMLT12_LEAKTIME_SRCS ${SRCS_LEDACRYPT_LEDAKEMLT12_LEAKTIME_SRCS} kem_ledacrypt_ledakemlt12.c ) - + add_library(ledacrypt_ledakemlt12_leaktime OBJECT kem_ledacrypt_ledakemlt12.c pqclean_ledakemlt12_leaktime/bf_decoding.c pqclean_ledakemlt12_leaktime/dfr_test.c pqclean_ledakemlt12_leaktime/gf2x_arith.c pqclean_ledakemlt12_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt12_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt12_leaktime/kem.c pqclean_ledakemlt12_leaktime/niederreiter.c pqclean_ledakemlt12_leaktime/rng.c pqclean_ledakemlt12_leaktime/sort.c pqclean_ledakemlt12_leaktime/utils.c) + target_include_directories(ledacrypt_ledakemlt12_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ledacrypt_ledakemlt12_leaktime PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ledakemlt12_leaktime) + set(_LEDACRYPT_OBJS ${_LEDACRYPT_OBJS} $) endif() if(OQS_ENABLE_KEM_ledacrypt_ledakemlt32) - -if(OQS_ENABLE_KEM_ledacrypt_ledakemlt32_leaktime) - set(SRCS_LEDACRYPT_LEDAKEMLT32_LEAKTIME_SRCS pqclean_ledakemlt32_leaktime/bf_decoding.c pqclean_ledakemlt32_leaktime/dfr_test.c pqclean_ledakemlt32_leaktime/gf2x_arith.c pqclean_ledakemlt32_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt32_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt32_leaktime/kem.c pqclean_ledakemlt32_leaktime/niederreiter.c pqclean_ledakemlt32_leaktime/rng.c pqclean_ledakemlt32_leaktime/sort.c pqclean_ledakemlt32_leaktime/utils.c) -else() - set(SRCS_LEDACRYPT_LEDAKEMLT32_LEAKTIME_SRCS pqclean_ledacryptledakemlt32_leaktime/oqs_unsupported.c ) -endif() - - -set(SRCS_LEDACRYPT_LEDAKEMLT32_LEAKTIME_SRCS ${SRCS_LEDACRYPT_LEDAKEMLT32_LEAKTIME_SRCS} kem_ledacrypt_ledakemlt32.c ) - + add_library(ledacrypt_ledakemlt32_leaktime OBJECT kem_ledacrypt_ledakemlt32.c pqclean_ledakemlt32_leaktime/bf_decoding.c pqclean_ledakemlt32_leaktime/dfr_test.c pqclean_ledakemlt32_leaktime/gf2x_arith.c pqclean_ledakemlt32_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt32_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt32_leaktime/kem.c pqclean_ledakemlt32_leaktime/niederreiter.c pqclean_ledakemlt32_leaktime/rng.c pqclean_ledakemlt32_leaktime/sort.c pqclean_ledakemlt32_leaktime/utils.c) + target_include_directories(ledacrypt_ledakemlt32_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ledacrypt_ledakemlt32_leaktime PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ledakemlt32_leaktime) + set(_LEDACRYPT_OBJS ${_LEDACRYPT_OBJS} $) endif() if(OQS_ENABLE_KEM_ledacrypt_ledakemlt52) - -if(OQS_ENABLE_KEM_ledacrypt_ledakemlt52_leaktime) - set(SRCS_LEDACRYPT_LEDAKEMLT52_LEAKTIME_SRCS pqclean_ledakemlt52_leaktime/bf_decoding.c pqclean_ledakemlt52_leaktime/dfr_test.c pqclean_ledakemlt52_leaktime/gf2x_arith.c pqclean_ledakemlt52_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt52_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt52_leaktime/kem.c pqclean_ledakemlt52_leaktime/niederreiter.c pqclean_ledakemlt52_leaktime/rng.c pqclean_ledakemlt52_leaktime/sort.c pqclean_ledakemlt52_leaktime/utils.c) -else() - set(SRCS_LEDACRYPT_LEDAKEMLT52_LEAKTIME_SRCS pqclean_ledacryptledakemlt52_leaktime/oqs_unsupported.c ) + add_library(ledacrypt_ledakemlt52_leaktime OBJECT kem_ledacrypt_ledakemlt52.c pqclean_ledakemlt52_leaktime/bf_decoding.c pqclean_ledakemlt52_leaktime/dfr_test.c pqclean_ledakemlt52_leaktime/gf2x_arith.c pqclean_ledakemlt52_leaktime/gf2x_arith_mod_xPplusOne.c pqclean_ledakemlt52_leaktime/H_Q_matrices_generation.c pqclean_ledakemlt52_leaktime/kem.c pqclean_ledakemlt52_leaktime/niederreiter.c pqclean_ledakemlt52_leaktime/rng.c pqclean_ledakemlt52_leaktime/sort.c pqclean_ledakemlt52_leaktime/utils.c) + target_include_directories(ledacrypt_ledakemlt52_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ledacrypt_ledakemlt52_leaktime PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ledakemlt52_leaktime) + set(_LEDACRYPT_OBJS ${_LEDACRYPT_OBJS} $) endif() - - -set(SRCS_LEDACRYPT_LEDAKEMLT52_LEAKTIME_SRCS ${SRCS_LEDACRYPT_LEDAKEMLT52_LEAKTIME_SRCS} kem_ledacrypt_ledakemlt52.c ) - -endif() - - - - -add_library(ledacrypt_ledakemlt12_leaktime OBJECT ${SRCS_LEDACRYPT_LEDAKEMLT12_LEAKTIME_SRCS}) -target_include_directories(ledacrypt_ledakemlt12_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ledacrypt_ledakemlt12_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ledacrypt/pqclean_ledacryptledakemlt12_leaktime) -target_compile_options(ledacrypt_ledakemlt12_leaktime PUBLIC ) - - - -add_library(ledacrypt_ledakemlt32_leaktime OBJECT ${SRCS_LEDACRYPT_LEDAKEMLT32_LEAKTIME_SRCS}) -target_include_directories(ledacrypt_ledakemlt32_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ledacrypt_ledakemlt32_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ledacrypt/pqclean_ledacryptledakemlt32_leaktime) -target_compile_options(ledacrypt_ledakemlt32_leaktime PUBLIC ) - - - -add_library(ledacrypt_ledakemlt52_leaktime OBJECT ${SRCS_LEDACRYPT_LEDAKEMLT52_LEAKTIME_SRCS}) -target_include_directories(ledacrypt_ledakemlt52_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ledacrypt_ledakemlt52_leaktime PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ledacrypt/pqclean_ledacryptledakemlt52_leaktime) -target_compile_options(ledacrypt_ledakemlt52_leaktime PUBLIC ) - - +set(LEDACRYPT_OBJS ${_LEDACRYPT_OBJS} PARENT_SCOPE) diff --git a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt12.c b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt12.c index 990c431028..5c073e7dd0 100644 --- a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt12.c +++ b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt12.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ledacrypt_ledakemlt12 +#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt12) OQS_KEM *OQS_KEM_ledacrypt_ledakemlt12_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_ledacrypt_ledakemlt12_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt12_leaktime) int PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt12_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt12_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt12_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT12_LEAKTIME_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt32.c b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt32.c index 517e6b9750..caa65fc694 100644 --- a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt32.c +++ b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt32.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ledacrypt_ledakemlt32 +#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt32) OQS_KEM *OQS_KEM_ledacrypt_ledakemlt32_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_ledacrypt_ledakemlt32_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt32_leaktime) int PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt32_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt32_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt32_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT32_LEAKTIME_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt52.c b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt52.c index f83d254385..def7479fcc 100644 --- a/src/kem/ledacrypt/kem_ledacrypt_ledakemlt52.c +++ b/src/kem/ledacrypt/kem_ledacrypt_ledakemlt52.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ledacrypt_ledakemlt52 +#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt52) OQS_KEM *OQS_KEM_ledacrypt_ledakemlt52_new() { @@ -28,26 +28,19 @@ OQS_KEM *OQS_KEM_ledacrypt_ledakemlt52_new() { return kem; } - -#if defined(OQS_ENABLE_KEM_ledacrypt_ledakemlt52_leaktime) int PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -#endif - OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt52_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt52_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ledacrypt_ledakemlt52_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LEDAKEMLT52_LEAKTIME_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/newhope/CMakeLists.txt b/src/kem/newhope/CMakeLists.txt index 09573127a5..2d5ada8403 100644 --- a/src/kem/newhope/CMakeLists.txt +++ b/src/kem/newhope/CMakeLists.txt @@ -2,37 +2,17 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_newhope_512cca) - - set(SRCS_NEWHOPE_512CCA_CLEAN_SRCS pqclean_newhope512cca_clean/cpapke.c pqclean_newhope512cca_clean/kem.c pqclean_newhope512cca_clean/ntt.c pqclean_newhope512cca_clean/poly.c pqclean_newhope512cca_clean/precomp.c pqclean_newhope512cca_clean/reduce.c pqclean_newhope512cca_clean/verify.c) - - -set(SRCS_NEWHOPE_512CCA_CLEAN_SRCS ${SRCS_NEWHOPE_512CCA_CLEAN_SRCS} kem_newhope_512cca.c ) - + add_library(newhope_512cca_clean OBJECT kem_newhope_512cca.c pqclean_newhope512cca_clean/cpapke.c pqclean_newhope512cca_clean/kem.c pqclean_newhope512cca_clean/ntt.c pqclean_newhope512cca_clean/poly.c pqclean_newhope512cca_clean/precomp.c pqclean_newhope512cca_clean/reduce.c pqclean_newhope512cca_clean/verify.c) + target_include_directories(newhope_512cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(newhope_512cca_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_newhope512cca_clean) + set(_NEWHOPE_OBJS ${_NEWHOPE_OBJS} $) endif() if(OQS_ENABLE_KEM_newhope_1024cca) - - set(SRCS_NEWHOPE_1024CCA_CLEAN_SRCS pqclean_newhope1024cca_clean/cpapke.c pqclean_newhope1024cca_clean/kem.c pqclean_newhope1024cca_clean/ntt.c pqclean_newhope1024cca_clean/poly.c pqclean_newhope1024cca_clean/precomp.c pqclean_newhope1024cca_clean/reduce.c pqclean_newhope1024cca_clean/verify.c) - - -set(SRCS_NEWHOPE_1024CCA_CLEAN_SRCS ${SRCS_NEWHOPE_1024CCA_CLEAN_SRCS} kem_newhope_1024cca.c ) - + add_library(newhope_1024cca_clean OBJECT kem_newhope_1024cca.c pqclean_newhope1024cca_clean/cpapke.c pqclean_newhope1024cca_clean/kem.c pqclean_newhope1024cca_clean/ntt.c pqclean_newhope1024cca_clean/poly.c pqclean_newhope1024cca_clean/precomp.c pqclean_newhope1024cca_clean/reduce.c pqclean_newhope1024cca_clean/verify.c) + target_include_directories(newhope_1024cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(newhope_1024cca_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_newhope1024cca_clean) + set(_NEWHOPE_OBJS ${_NEWHOPE_OBJS} $) endif() - - - -add_library(newhope_512cca_clean OBJECT ${SRCS_NEWHOPE_512CCA_CLEAN_SRCS}) -target_include_directories(newhope_512cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(newhope_512cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/newhope/pqclean_newhope512cca_clean) -target_compile_options(newhope_512cca_clean PUBLIC ) - - - -add_library(newhope_1024cca_clean OBJECT ${SRCS_NEWHOPE_1024CCA_CLEAN_SRCS}) -target_include_directories(newhope_1024cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(newhope_1024cca_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/newhope/pqclean_newhope1024cca_clean) -target_compile_options(newhope_1024cca_clean PUBLIC ) - - - +set(NEWHOPE_OBJS ${_NEWHOPE_OBJS} PARENT_SCOPE) diff --git a/src/kem/newhope/kem_newhope_1024cca.c b/src/kem/newhope/kem_newhope_1024cca.c index b99983f4b5..99db435ae9 100644 --- a/src/kem/newhope/kem_newhope_1024cca.c +++ b/src/kem/newhope/kem_newhope_1024cca.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_newhope_1024cca +#if defined(OQS_ENABLE_KEM_newhope_1024cca) OQS_KEM *OQS_KEM_newhope_1024cca_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_newhope_1024cca_new() { return kem; } - int PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_newhope_1024cca_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_newhope_1024cca_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_newhope_1024cca_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE1024CCA_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/newhope/kem_newhope_512cca.c b/src/kem/newhope/kem_newhope_512cca.c index 09807b4ed6..f75b1ebb28 100644 --- a/src/kem/newhope/kem_newhope_512cca.c +++ b/src/kem/newhope/kem_newhope_512cca.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_newhope_512cca +#if defined(OQS_ENABLE_KEM_newhope_512cca) OQS_KEM *OQS_KEM_newhope_512cca_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_newhope_512cca_new() { return kem; } - int PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_newhope_512cca_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_newhope_512cca_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_newhope_512cca_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NEWHOPE512CCA_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ntru/CMakeLists.txt b/src/kem/ntru/CMakeLists.txt index 798be377e9..edd95f5b3b 100644 --- a/src/kem/ntru/CMakeLists.txt +++ b/src/kem/ntru/CMakeLists.txt @@ -2,69 +2,31 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_ntru_hps2048509) - - set(SRCS_NTRU_HPS2048509_CLEAN_SRCS pqclean_ntruhps2048509_clean/crypto_sort.c pqclean_ntruhps2048509_clean/kem.c pqclean_ntruhps2048509_clean/owcpa.c pqclean_ntruhps2048509_clean/pack3.c pqclean_ntruhps2048509_clean/packq.c pqclean_ntruhps2048509_clean/poly.c pqclean_ntruhps2048509_clean/sample.c pqclean_ntruhps2048509_clean/verify.c) - - -set(SRCS_NTRU_HPS2048509_CLEAN_SRCS ${SRCS_NTRU_HPS2048509_CLEAN_SRCS} kem_ntru_hps2048509.c ) - + add_library(ntru_hps2048509_clean OBJECT kem_ntru_hps2048509.c pqclean_ntruhps2048509_clean/crypto_sort.c pqclean_ntruhps2048509_clean/kem.c pqclean_ntruhps2048509_clean/owcpa.c pqclean_ntruhps2048509_clean/pack3.c pqclean_ntruhps2048509_clean/packq.c pqclean_ntruhps2048509_clean/poly.c pqclean_ntruhps2048509_clean/sample.c pqclean_ntruhps2048509_clean/verify.c) + target_include_directories(ntru_hps2048509_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ntru_hps2048509_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ntruhps2048509_clean) + set(_NTRU_OBJS ${_NTRU_OBJS} $) endif() if(OQS_ENABLE_KEM_ntru_hps2048677) - - set(SRCS_NTRU_HPS2048677_CLEAN_SRCS pqclean_ntruhps2048677_clean/crypto_sort.c pqclean_ntruhps2048677_clean/kem.c pqclean_ntruhps2048677_clean/owcpa.c pqclean_ntruhps2048677_clean/pack3.c pqclean_ntruhps2048677_clean/packq.c pqclean_ntruhps2048677_clean/poly.c pqclean_ntruhps2048677_clean/sample.c pqclean_ntruhps2048677_clean/verify.c) - - -set(SRCS_NTRU_HPS2048677_CLEAN_SRCS ${SRCS_NTRU_HPS2048677_CLEAN_SRCS} kem_ntru_hps2048677.c ) - + add_library(ntru_hps2048677_clean OBJECT kem_ntru_hps2048677.c pqclean_ntruhps2048677_clean/crypto_sort.c pqclean_ntruhps2048677_clean/kem.c pqclean_ntruhps2048677_clean/owcpa.c pqclean_ntruhps2048677_clean/pack3.c pqclean_ntruhps2048677_clean/packq.c pqclean_ntruhps2048677_clean/poly.c pqclean_ntruhps2048677_clean/sample.c pqclean_ntruhps2048677_clean/verify.c) + target_include_directories(ntru_hps2048677_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ntru_hps2048677_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ntruhps2048677_clean) + set(_NTRU_OBJS ${_NTRU_OBJS} $) endif() if(OQS_ENABLE_KEM_ntru_hps4096821) - - set(SRCS_NTRU_HPS4096821_CLEAN_SRCS pqclean_ntruhps4096821_clean/crypto_sort.c pqclean_ntruhps4096821_clean/kem.c pqclean_ntruhps4096821_clean/owcpa.c pqclean_ntruhps4096821_clean/pack3.c pqclean_ntruhps4096821_clean/packq.c pqclean_ntruhps4096821_clean/poly.c pqclean_ntruhps4096821_clean/sample.c pqclean_ntruhps4096821_clean/verify.c) - - -set(SRCS_NTRU_HPS4096821_CLEAN_SRCS ${SRCS_NTRU_HPS4096821_CLEAN_SRCS} kem_ntru_hps4096821.c ) - + add_library(ntru_hps4096821_clean OBJECT kem_ntru_hps4096821.c pqclean_ntruhps4096821_clean/crypto_sort.c pqclean_ntruhps4096821_clean/kem.c pqclean_ntruhps4096821_clean/owcpa.c pqclean_ntruhps4096821_clean/pack3.c pqclean_ntruhps4096821_clean/packq.c pqclean_ntruhps4096821_clean/poly.c pqclean_ntruhps4096821_clean/sample.c pqclean_ntruhps4096821_clean/verify.c) + target_include_directories(ntru_hps4096821_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ntru_hps4096821_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ntruhps4096821_clean) + set(_NTRU_OBJS ${_NTRU_OBJS} $) endif() if(OQS_ENABLE_KEM_ntru_hrss701) - - set(SRCS_NTRU_HRSS701_CLEAN_SRCS pqclean_ntruhrss701_clean/kem.c pqclean_ntruhrss701_clean/owcpa.c pqclean_ntruhrss701_clean/pack3.c pqclean_ntruhrss701_clean/packq.c pqclean_ntruhrss701_clean/poly.c pqclean_ntruhrss701_clean/sample.c pqclean_ntruhrss701_clean/verify.c) - - -set(SRCS_NTRU_HRSS701_CLEAN_SRCS ${SRCS_NTRU_HRSS701_CLEAN_SRCS} kem_ntru_hrss701.c ) - + add_library(ntru_hrss701_clean OBJECT kem_ntru_hrss701.c pqclean_ntruhrss701_clean/kem.c pqclean_ntruhrss701_clean/owcpa.c pqclean_ntruhrss701_clean/pack3.c pqclean_ntruhrss701_clean/packq.c pqclean_ntruhrss701_clean/poly.c pqclean_ntruhrss701_clean/sample.c pqclean_ntruhrss701_clean/verify.c) + target_include_directories(ntru_hrss701_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(ntru_hrss701_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_ntruhrss701_clean) + set(_NTRU_OBJS ${_NTRU_OBJS} $) endif() - - - -add_library(ntru_hps2048509_clean OBJECT ${SRCS_NTRU_HPS2048509_CLEAN_SRCS}) -target_include_directories(ntru_hps2048509_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ntru_hps2048509_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ntru/pqclean_ntruhps2048509_clean) -target_compile_options(ntru_hps2048509_clean PUBLIC ) - - - -add_library(ntru_hps2048677_clean OBJECT ${SRCS_NTRU_HPS2048677_CLEAN_SRCS}) -target_include_directories(ntru_hps2048677_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ntru_hps2048677_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ntru/pqclean_ntruhps2048677_clean) -target_compile_options(ntru_hps2048677_clean PUBLIC ) - - - -add_library(ntru_hps4096821_clean OBJECT ${SRCS_NTRU_HPS4096821_CLEAN_SRCS}) -target_include_directories(ntru_hps4096821_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ntru_hps4096821_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ntru/pqclean_ntruhps4096821_clean) -target_compile_options(ntru_hps4096821_clean PUBLIC ) - - - -add_library(ntru_hrss701_clean OBJECT ${SRCS_NTRU_HRSS701_CLEAN_SRCS}) -target_include_directories(ntru_hrss701_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(ntru_hrss701_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/ntru/pqclean_ntruhrss701_clean) -target_compile_options(ntru_hrss701_clean PUBLIC ) - - - +set(NTRU_OBJS ${_NTRU_OBJS} PARENT_SCOPE) diff --git a/src/kem/ntru/kem_ntru_hps2048509.c b/src/kem/ntru/kem_ntru_hps2048509.c index 483578f1e9..a84da24465 100644 --- a/src/kem/ntru/kem_ntru_hps2048509.c +++ b/src/kem/ntru/kem_ntru_hps2048509.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ntru_hps2048509 +#if defined(OQS_ENABLE_KEM_ntru_hps2048509) OQS_KEM *OQS_KEM_ntru_hps2048509_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_ntru_hps2048509_new() { return kem; } - int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_ntru_hps2048509_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps2048509_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps2048509_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ntru/kem_ntru_hps2048677.c b/src/kem/ntru/kem_ntru_hps2048677.c index ad13d31cc5..3b73f5280b 100644 --- a/src/kem/ntru/kem_ntru_hps2048677.c +++ b/src/kem/ntru/kem_ntru_hps2048677.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ntru_hps2048677 +#if defined(OQS_ENABLE_KEM_ntru_hps2048677) OQS_KEM *OQS_KEM_ntru_hps2048677_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_ntru_hps2048677_new() { return kem; } - int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_ntru_hps2048677_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps2048677_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps2048677_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ntru/kem_ntru_hps4096821.c b/src/kem/ntru/kem_ntru_hps4096821.c index 7e4fc366cd..4a0b34035b 100644 --- a/src/kem/ntru/kem_ntru_hps4096821.c +++ b/src/kem/ntru/kem_ntru_hps4096821.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ntru_hps4096821 +#if defined(OQS_ENABLE_KEM_ntru_hps4096821) OQS_KEM *OQS_KEM_ntru_hps4096821_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_ntru_hps4096821_new() { return kem; } - int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_ntru_hps4096821_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps4096821_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hps4096821_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/ntru/kem_ntru_hrss701.c b/src/kem/ntru/kem_ntru_hrss701.c index dc15171fdd..c07bcdae6d 100644 --- a/src/kem/ntru/kem_ntru_hrss701.c +++ b/src/kem/ntru/kem_ntru_hrss701.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_ntru_hrss701 +#if defined(OQS_ENABLE_KEM_ntru_hrss701) OQS_KEM *OQS_KEM_ntru_hrss701_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_ntru_hrss701_new() { return kem; } - int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_ntru_hrss701_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hrss701_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_ntru_hrss701_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/saber/CMakeLists.txt b/src/kem/saber/CMakeLists.txt index 54f4f69120..7f08631593 100644 --- a/src/kem/saber/CMakeLists.txt +++ b/src/kem/saber/CMakeLists.txt @@ -2,53 +2,24 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_saber_lightsaber) - - set(SRCS_SABER_LIGHTSABER_CLEAN_SRCS pqclean_lightsaber_clean/cbd.c pqclean_lightsaber_clean/kem.c pqclean_lightsaber_clean/pack_unpack.c pqclean_lightsaber_clean/poly.c pqclean_lightsaber_clean/poly_mul.c pqclean_lightsaber_clean/SABER_indcpa.c pqclean_lightsaber_clean/verify.c) - - -set(SRCS_SABER_LIGHTSABER_CLEAN_SRCS ${SRCS_SABER_LIGHTSABER_CLEAN_SRCS} kem_saber_lightsaber.c ) - + add_library(saber_lightsaber_clean OBJECT kem_saber_lightsaber.c pqclean_lightsaber_clean/cbd.c pqclean_lightsaber_clean/kem.c pqclean_lightsaber_clean/pack_unpack.c pqclean_lightsaber_clean/poly.c pqclean_lightsaber_clean/poly_mul.c pqclean_lightsaber_clean/SABER_indcpa.c pqclean_lightsaber_clean/verify.c) + target_include_directories(saber_lightsaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(saber_lightsaber_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_lightsaber_clean) + set(_SABER_OBJS ${_SABER_OBJS} $) endif() if(OQS_ENABLE_KEM_saber_saber) - - set(SRCS_SABER_SABER_CLEAN_SRCS pqclean_saber_clean/cbd.c pqclean_saber_clean/kem.c pqclean_saber_clean/pack_unpack.c pqclean_saber_clean/poly.c pqclean_saber_clean/poly_mul.c pqclean_saber_clean/SABER_indcpa.c pqclean_saber_clean/verify.c) - - -set(SRCS_SABER_SABER_CLEAN_SRCS ${SRCS_SABER_SABER_CLEAN_SRCS} kem_saber_saber.c ) - + add_library(saber_saber_clean OBJECT kem_saber_saber.c pqclean_saber_clean/cbd.c pqclean_saber_clean/kem.c pqclean_saber_clean/pack_unpack.c pqclean_saber_clean/poly.c pqclean_saber_clean/poly_mul.c pqclean_saber_clean/SABER_indcpa.c pqclean_saber_clean/verify.c) + target_include_directories(saber_saber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(saber_saber_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_saber_clean) + set(_SABER_OBJS ${_SABER_OBJS} $) endif() if(OQS_ENABLE_KEM_saber_firesaber) - - set(SRCS_SABER_FIRESABER_CLEAN_SRCS pqclean_firesaber_clean/cbd.c pqclean_firesaber_clean/kem.c pqclean_firesaber_clean/pack_unpack.c pqclean_firesaber_clean/poly.c pqclean_firesaber_clean/poly_mul.c pqclean_firesaber_clean/SABER_indcpa.c pqclean_firesaber_clean/verify.c) - - -set(SRCS_SABER_FIRESABER_CLEAN_SRCS ${SRCS_SABER_FIRESABER_CLEAN_SRCS} kem_saber_firesaber.c ) - + add_library(saber_firesaber_clean OBJECT kem_saber_firesaber.c pqclean_firesaber_clean/cbd.c pqclean_firesaber_clean/kem.c pqclean_firesaber_clean/pack_unpack.c pqclean_firesaber_clean/poly.c pqclean_firesaber_clean/poly_mul.c pqclean_firesaber_clean/SABER_indcpa.c pqclean_firesaber_clean/verify.c) + target_include_directories(saber_firesaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(saber_firesaber_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_firesaber_clean) + set(_SABER_OBJS ${_SABER_OBJS} $) endif() - - - -add_library(saber_lightsaber_clean OBJECT ${SRCS_SABER_LIGHTSABER_CLEAN_SRCS}) -target_include_directories(saber_lightsaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(saber_lightsaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/saber/pqclean_saberlightsaber_clean) -target_compile_options(saber_lightsaber_clean PUBLIC ) - - - -add_library(saber_saber_clean OBJECT ${SRCS_SABER_SABER_CLEAN_SRCS}) -target_include_directories(saber_saber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(saber_saber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/saber/pqclean_sabersaber_clean) -target_compile_options(saber_saber_clean PUBLIC ) - - - -add_library(saber_firesaber_clean OBJECT ${SRCS_SABER_FIRESABER_CLEAN_SRCS}) -target_include_directories(saber_firesaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(saber_firesaber_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/saber/pqclean_saberfiresaber_clean) -target_compile_options(saber_firesaber_clean PUBLIC ) - - - +set(SABER_OBJS ${_SABER_OBJS} PARENT_SCOPE) diff --git a/src/kem/saber/kem_saber_firesaber.c b/src/kem/saber/kem_saber_firesaber.c index ccfccd90c7..c1896ebe90 100644 --- a/src/kem/saber/kem_saber_firesaber.c +++ b/src/kem/saber/kem_saber_firesaber.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_saber_firesaber +#if defined(OQS_ENABLE_KEM_saber_firesaber) OQS_KEM *OQS_KEM_saber_firesaber_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_saber_firesaber_new() { return kem; } - int PQCLEAN_FIRESABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_FIRESABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FIRESABER_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_saber_firesaber_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FIRESABER_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_saber_firesaber_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_FIRESABER_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_saber_firesaber_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FIRESABER_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/saber/kem_saber_lightsaber.c b/src/kem/saber/kem_saber_lightsaber.c index b051dba42c..451ec8129b 100644 --- a/src/kem/saber/kem_saber_lightsaber.c +++ b/src/kem/saber/kem_saber_lightsaber.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_saber_lightsaber +#if defined(OQS_ENABLE_KEM_saber_lightsaber) OQS_KEM *OQS_KEM_saber_lightsaber_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_saber_lightsaber_new() { return kem; } - int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_saber_lightsaber_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_saber_lightsaber_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_saber_lightsaber_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/saber/kem_saber_saber.c b/src/kem/saber/kem_saber_saber.c index 1476d768eb..06f5637488 100644 --- a/src/kem/saber/kem_saber_saber.c +++ b/src/kem/saber/kem_saber_saber.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_saber_saber +#if defined(OQS_ENABLE_KEM_saber_saber) OQS_KEM *OQS_KEM_saber_saber_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_saber_saber_new() { return kem; } - int PQCLEAN_SABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_SABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_SABER_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_saber_saber_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SABER_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_saber_saber_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SABER_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_saber_saber_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SABER_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/sike/CMakeLists.txt b/src/kem/sike/CMakeLists.txt index 7e1a860406..afcece5afc 100644 --- a/src/kem/sike/CMakeLists.txt +++ b/src/kem/sike/CMakeLists.txt @@ -32,26 +32,30 @@ set(SRCS kem_sike.c P751/P751.c P751/P751_compressed.c) -add_library(sike OBJECT ${SRCS}) -if(ARCH STREQUAL "x86") - target_compile_definitions(sike PRIVATE _GENERIC_ _X86_) -elseif(ARCH STREQUAL "x86_64") - target_compile_definitions(sike PRIVATE _AMD64_) +if(ARCH STREQUAL "x86_64") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(SRCS ${SRCS} P503/AMD64/fp_x64_asm.S P751/AMD64/fp_x64_asm.S) if(USE_BMI2_INSTRUCTIONS) - target_compile_definitions(sike PRIVATE _MULX_ _ADX_) set(SRCS ${SRCS} P434/AMD64/fp_x64_asm.S P610/AMD64/fp_x64_asm.S) + add_compile_options(-mbmi2) endif() endif() -elseif(ARCH STREQUAL "arm") - target_compile_definitions(sike PRIVATE _GENERIC_ _ARM_) elseif(ARCH STREQUAL "arm64") - target_compile_definitions(sike PRIVATE _ARM64_) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(SRCS ${SRCS} P503/AMD64/fp_x64_asm.S P751/AMD64/fp_x64_asm.S) endif() endif() + +add_library(sike OBJECT ${SRCS}) +if(ARCH STREQUAL "x86") + target_compile_definitions(sike PRIVATE _GENERIC_ _X86_) +elseif(ARCH STREQUAL "x86_64") + target_compile_definitions(sike PRIVATE _AMD64_) +elseif(ARCH STREQUAL "arm") + target_compile_definitions(sike PRIVATE _GENERIC_ _ARM_) +elseif(ARCH STREQUAL "arm64") + target_compile_definitions(sike PRIVATE _ARM64_) +endif() diff --git a/src/kem/threebears/CMakeLists.txt b/src/kem/threebears/CMakeLists.txt index c2e318a35a..1698eda69c 100644 --- a/src/kem/threebears/CMakeLists.txt +++ b/src/kem/threebears/CMakeLists.txt @@ -2,101 +2,45 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_KEM_threebears_babybear) - - set(SRCS_THREEBEARS_BABYBEAR_CLEAN_SRCS pqclean_babybear_clean/kem.c pqclean_babybear_clean/melas_fec.c pqclean_babybear_clean/ring.c pqclean_babybear_clean/threebears.c) - - -set(SRCS_THREEBEARS_BABYBEAR_CLEAN_SRCS ${SRCS_THREEBEARS_BABYBEAR_CLEAN_SRCS} kem_threebears_babybear.c ) - + add_library(threebears_babybear_clean OBJECT kem_threebears_babybear.c pqclean_babybear_clean/kem.c pqclean_babybear_clean/melas_fec.c pqclean_babybear_clean/ring.c pqclean_babybear_clean/threebears.c) + target_include_directories(threebears_babybear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_babybear_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_babybear_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() if(OQS_ENABLE_KEM_threebears_babybear_ephem) - - set(SRCS_THREEBEARS_BABYBEAR_EPHEM_CLEAN_SRCS pqclean_babybear_ephem_clean/kem.c pqclean_babybear_ephem_clean/melas_fec.c pqclean_babybear_ephem_clean/ring.c pqclean_babybear_ephem_clean/threebears.c) - - -set(SRCS_THREEBEARS_BABYBEAR_EPHEM_CLEAN_SRCS ${SRCS_THREEBEARS_BABYBEAR_EPHEM_CLEAN_SRCS} kem_threebears_babybear_ephem.c ) - + add_library(threebears_babybear_ephem_clean OBJECT kem_threebears_babybear_ephem.c pqclean_babybear-ephem_clean/kem.c pqclean_babybear-ephem_clean/melas_fec.c pqclean_babybear-ephem_clean/ring.c pqclean_babybear-ephem_clean/threebears.c) + target_include_directories(threebears_babybear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_babybear_ephem_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_babybear-ephem_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() if(OQS_ENABLE_KEM_threebears_mamabear) - - set(SRCS_THREEBEARS_MAMABEAR_CLEAN_SRCS pqclean_mamabear_clean/kem.c pqclean_mamabear_clean/melas_fec.c pqclean_mamabear_clean/ring.c pqclean_mamabear_clean/threebears.c) - - -set(SRCS_THREEBEARS_MAMABEAR_CLEAN_SRCS ${SRCS_THREEBEARS_MAMABEAR_CLEAN_SRCS} kem_threebears_mamabear.c ) - + add_library(threebears_mamabear_clean OBJECT kem_threebears_mamabear.c pqclean_mamabear_clean/kem.c pqclean_mamabear_clean/melas_fec.c pqclean_mamabear_clean/ring.c pqclean_mamabear_clean/threebears.c) + target_include_directories(threebears_mamabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_mamabear_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mamabear_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() if(OQS_ENABLE_KEM_threebears_mamabear_ephem) - - set(SRCS_THREEBEARS_MAMABEAR_EPHEM_CLEAN_SRCS pqclean_mamabear_ephem_clean/kem.c pqclean_mamabear_ephem_clean/melas_fec.c pqclean_mamabear_ephem_clean/ring.c pqclean_mamabear_ephem_clean/threebears.c) - - -set(SRCS_THREEBEARS_MAMABEAR_EPHEM_CLEAN_SRCS ${SRCS_THREEBEARS_MAMABEAR_EPHEM_CLEAN_SRCS} kem_threebears_mamabear_ephem.c ) - + add_library(threebears_mamabear_ephem_clean OBJECT kem_threebears_mamabear_ephem.c pqclean_mamabear-ephem_clean/kem.c pqclean_mamabear-ephem_clean/melas_fec.c pqclean_mamabear-ephem_clean/ring.c pqclean_mamabear-ephem_clean/threebears.c) + target_include_directories(threebears_mamabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_mamabear_ephem_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mamabear-ephem_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() if(OQS_ENABLE_KEM_threebears_papabear) - - set(SRCS_THREEBEARS_PAPABEAR_CLEAN_SRCS pqclean_papabear_clean/kem.c pqclean_papabear_clean/melas_fec.c pqclean_papabear_clean/ring.c pqclean_papabear_clean/threebears.c) - - -set(SRCS_THREEBEARS_PAPABEAR_CLEAN_SRCS ${SRCS_THREEBEARS_PAPABEAR_CLEAN_SRCS} kem_threebears_papabear.c ) - + add_library(threebears_papabear_clean OBJECT kem_threebears_papabear.c pqclean_papabear_clean/kem.c pqclean_papabear_clean/melas_fec.c pqclean_papabear_clean/ring.c pqclean_papabear_clean/threebears.c) + target_include_directories(threebears_papabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_papabear_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_papabear_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() if(OQS_ENABLE_KEM_threebears_papabear_ephem) - - set(SRCS_THREEBEARS_PAPABEAR_EPHEM_CLEAN_SRCS pqclean_papabear_ephem_clean/kem.c pqclean_papabear_ephem_clean/melas_fec.c pqclean_papabear_ephem_clean/ring.c pqclean_papabear_ephem_clean/threebears.c) - - -set(SRCS_THREEBEARS_PAPABEAR_EPHEM_CLEAN_SRCS ${SRCS_THREEBEARS_PAPABEAR_EPHEM_CLEAN_SRCS} kem_threebears_papabear_ephem.c ) - + add_library(threebears_papabear_ephem_clean OBJECT kem_threebears_papabear_ephem.c pqclean_papabear-ephem_clean/kem.c pqclean_papabear-ephem_clean/melas_fec.c pqclean_papabear-ephem_clean/ring.c pqclean_papabear-ephem_clean/threebears.c) + target_include_directories(threebears_papabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(threebears_papabear_ephem_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_papabear-ephem_clean) + set(_THREEBEARS_OBJS ${_THREEBEARS_OBJS} $) endif() - - - -add_library(threebears_babybear_clean OBJECT ${SRCS_THREEBEARS_BABYBEAR_CLEAN_SRCS}) -target_include_directories(threebears_babybear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_babybear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearsbabybear_clean) -target_compile_options(threebears_babybear_clean PUBLIC ) - - - -add_library(threebears_babybear_ephem_clean OBJECT ${SRCS_THREEBEARS_BABYBEAR_EPHEM_CLEAN_SRCS}) -target_include_directories(threebears_babybear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_babybear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearsbabybear_ephem_clean) -target_compile_options(threebears_babybear_ephem_clean PUBLIC ) - - - -add_library(threebears_mamabear_clean OBJECT ${SRCS_THREEBEARS_MAMABEAR_CLEAN_SRCS}) -target_include_directories(threebears_mamabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_mamabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearsmamabear_clean) -target_compile_options(threebears_mamabear_clean PUBLIC ) - - - -add_library(threebears_mamabear_ephem_clean OBJECT ${SRCS_THREEBEARS_MAMABEAR_EPHEM_CLEAN_SRCS}) -target_include_directories(threebears_mamabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_mamabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearsmamabear_ephem_clean) -target_compile_options(threebears_mamabear_ephem_clean PUBLIC ) - - - -add_library(threebears_papabear_clean OBJECT ${SRCS_THREEBEARS_PAPABEAR_CLEAN_SRCS}) -target_include_directories(threebears_papabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_papabear_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearspapabear_clean) -target_compile_options(threebears_papabear_clean PUBLIC ) - - - -add_library(threebears_papabear_ephem_clean OBJECT ${SRCS_THREEBEARS_PAPABEAR_EPHEM_CLEAN_SRCS}) -target_include_directories(threebears_papabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(threebears_papabear_ephem_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/threebears/pqclean_threebearspapabear_ephem_clean) -target_compile_options(threebears_papabear_ephem_clean PUBLIC ) - - - +set(THREEBEARS_OBJS ${_THREEBEARS_OBJS} PARENT_SCOPE) diff --git a/src/kem/threebears/kem_threebears_babybear.c b/src/kem/threebears/kem_threebears_babybear.c index d46e899e18..309d6ad907 100644 --- a/src/kem/threebears/kem_threebears_babybear.c +++ b/src/kem/threebears/kem_threebears_babybear.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_babybear +#if defined(OQS_ENABLE_KEM_threebears_babybear) OQS_KEM *OQS_KEM_threebears_babybear_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_babybear_new() { return kem; } - int PQCLEAN_BABYBEAR_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_BABYBEAR_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_BABYBEAR_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_babybear_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAR_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_babybear_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAR_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_babybear_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAR_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/threebears/kem_threebears_babybear_ephem.c b/src/kem/threebears/kem_threebears_babybear_ephem.c index 57e6e27028..76dc574f20 100644 --- a/src/kem/threebears/kem_threebears_babybear_ephem.c +++ b/src/kem/threebears/kem_threebears_babybear_ephem.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_babybear_ephem +#if defined(OQS_ENABLE_KEM_threebears_babybear_ephem) OQS_KEM *OQS_KEM_threebears_babybear_ephem_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_babybear_ephem_new() { return kem; } - int PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_babybear_ephem_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_babybear_ephem_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_babybear_ephem_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_BABYBEAREPHEM_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/threebears/kem_threebears_mamabear.c b/src/kem/threebears/kem_threebears_mamabear.c index 56ab3d9635..325fdaee1a 100644 --- a/src/kem/threebears/kem_threebears_mamabear.c +++ b/src/kem/threebears/kem_threebears_mamabear.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_mamabear +#if defined(OQS_ENABLE_KEM_threebears_mamabear) OQS_KEM *OQS_KEM_threebears_mamabear_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_mamabear_new() { return kem; } - int PQCLEAN_MAMABEAR_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MAMABEAR_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MAMABEAR_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAR_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAR_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAR_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/threebears/kem_threebears_mamabear_ephem.c b/src/kem/threebears/kem_threebears_mamabear_ephem.c index f89d386bf6..0e86b8eb83 100644 --- a/src/kem/threebears/kem_threebears_mamabear_ephem.c +++ b/src/kem/threebears/kem_threebears_mamabear_ephem.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_mamabear_ephem +#if defined(OQS_ENABLE_KEM_threebears_mamabear_ephem) OQS_KEM *OQS_KEM_threebears_mamabear_ephem_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_mamabear_ephem_new() { return kem; } - int PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_ephem_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_ephem_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_mamabear_ephem_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MAMABEAREPHEM_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/threebears/kem_threebears_papabear.c b/src/kem/threebears/kem_threebears_papabear.c index 1466153d2b..2462e562e5 100644 --- a/src/kem/threebears/kem_threebears_papabear.c +++ b/src/kem/threebears/kem_threebears_papabear.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_papabear +#if defined(OQS_ENABLE_KEM_threebears_papabear) OQS_KEM *OQS_KEM_threebears_papabear_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_papabear_new() { return kem; } - int PQCLEAN_PAPABEAR_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_PAPABEAR_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_PAPABEAR_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_papabear_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAR_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_papabear_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAR_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_papabear_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAR_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/threebears/kem_threebears_papabear_ephem.c b/src/kem/threebears/kem_threebears_papabear_ephem.c index 8c48fa36ae..4a56f7c244 100644 --- a/src/kem/threebears/kem_threebears_papabear_ephem.c +++ b/src/kem/threebears/kem_threebears_papabear_ephem.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_KEM_threebears_papabear_ephem +#if defined(OQS_ENABLE_KEM_threebears_papabear_ephem) OQS_KEM *OQS_KEM_threebears_papabear_ephem_new() { @@ -28,24 +28,19 @@ OQS_KEM *OQS_KEM_threebears_papabear_ephem_new() { return kem; } - int PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - OQS_API OQS_STATUS OQS_KEM_threebears_papabear_ephem_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_KEM_threebears_papabear_ephem_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } OQS_API OQS_STATUS OQS_KEM_threebears_papabear_ephem_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_PAPABEAREPHEM_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 945b74b765..39ade41257 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -10,7 +10,7 @@ #cmakedefine OQS_USE_SHA3_OPENSSL 1 #cmakedefine OQS_USE_PTHREADS_IN_TESTS 1 -#cmakedefine OQS_ENABLE_CPUFEATURES 1 +#cmakedefine OQS_OPTIMIZED_BUILD 1 #cmakedefine OQS_USE_AES_INSTRUCTIONS 1 #cmakedefine OQS_USE_AVX_INSTRUCTIONS 1 @@ -18,15 +18,10 @@ #cmakedefine OQS_USE_AVX512_INSTRUCTIONS 1 #cmakedefine OQS_USE_BMI_INSTRUCTIONS 1 #cmakedefine OQS_USE_BMI2_INSTRUCTIONS 1 -#cmakedefine OQS_USE_FMA_INSTRUCTIONS 1 -#cmakedefine OQS_USE_FMA4_INSTRUCTIONS 1 -#cmakedefine OQS_USE_MMX_INSTRUCTIONS 1 #cmakedefine OQS_USE_POPCNT_INSTRUCTIONS 1 #cmakedefine OQS_USE_SSE_INSTRUCTIONS 1 #cmakedefine OQS_USE_SSE2_INSTRUCTIONS 1 #cmakedefine OQS_USE_SSE3_INSTRUCTIONS 1 -#cmakedefine OQS_USE_SSE4A_INSTRUCTIONS 1 -#cmakedefine OQS_USE_NEON_INSTRUCTIONS 1 #cmakedefine OQS_ENABLE_KEM_BIKE 1 #cmakedefine OQS_ENABLE_KEM_bike1_l1_cpa 1 @@ -78,27 +73,18 @@ #cmakedefine OQS_ENABLE_SIG_qTesla_p_III 1 ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_ENABLE_DEFINES_START + #cmakedefine OQS_ENABLE_KEM_CLASSIC_MCELIECE 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864f 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864f_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896f 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896f_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128f 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128f_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119f 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119f_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128_vec 1 #cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128f 1 -#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128f_vec 1 #cmakedefine OQS_ENABLE_KEM_KYBER 1 #cmakedefine OQS_ENABLE_KEM_kyber_512 1 @@ -116,51 +102,33 @@ #cmakedefine OQS_ENABLE_KEM_LEDACRYPT 1 #cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt12 1 -#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt12_leaktime 1 #cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt32 1 -#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt32_leaktime 1 #cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt52 1 -#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt52_leaktime 1 #cmakedefine OQS_ENABLE_KEM_NEWHOPE 1 #cmakedefine OQS_ENABLE_KEM_newhope_512cca 1 - #cmakedefine OQS_ENABLE_KEM_newhope_1024cca 1 - #cmakedefine OQS_ENABLE_KEM_NTRU 1 #cmakedefine OQS_ENABLE_KEM_ntru_hps2048509 1 - #cmakedefine OQS_ENABLE_KEM_ntru_hps2048677 1 - #cmakedefine OQS_ENABLE_KEM_ntru_hps4096821 1 - #cmakedefine OQS_ENABLE_KEM_ntru_hrss701 1 - #cmakedefine OQS_ENABLE_KEM_SABER 1 #cmakedefine OQS_ENABLE_KEM_saber_lightsaber 1 - #cmakedefine OQS_ENABLE_KEM_saber_saber 1 - #cmakedefine OQS_ENABLE_KEM_saber_firesaber 1 - #cmakedefine OQS_ENABLE_KEM_THREEBEARS 1 #cmakedefine OQS_ENABLE_KEM_threebears_babybear 1 - #cmakedefine OQS_ENABLE_KEM_threebears_babybear_ephem 1 - #cmakedefine OQS_ENABLE_KEM_threebears_mamabear 1 - #cmakedefine OQS_ENABLE_KEM_threebears_mamabear_ephem 1 - #cmakedefine OQS_ENABLE_KEM_threebears_papabear 1 - #cmakedefine OQS_ENABLE_KEM_threebears_papabear_ephem 1 - -#cmakedefine OQS_ENABLE_SIG_DILITHIUM +#cmakedefine OQS_ENABLE_SIG_DILITHIUM 1 #cmakedefine OQS_ENABLE_SIG_dilithium_2 1 #cmakedefine OQS_ENABLE_SIG_dilithium_2_avx2 1 #cmakedefine OQS_ENABLE_SIG_dilithium_3 1 @@ -168,109 +136,60 @@ #cmakedefine OQS_ENABLE_SIG_dilithium_4 1 #cmakedefine OQS_ENABLE_SIG_dilithium_4_avx2 1 -#cmakedefine OQS_ENABLE_SIG_FALCON +#cmakedefine OQS_ENABLE_SIG_FALCON 1 #cmakedefine OQS_ENABLE_SIG_falcon_512 1 - #cmakedefine OQS_ENABLE_SIG_falcon_1024 1 - -#cmakedefine OQS_ENABLE_SIG_MQDSS +#cmakedefine OQS_ENABLE_SIG_MQDSS 1 #cmakedefine OQS_ENABLE_SIG_mqdss_31_48 1 - #cmakedefine OQS_ENABLE_SIG_mqdss_31_64 1 - -#cmakedefine OQS_ENABLE_SIG_RAINBOW +#cmakedefine OQS_ENABLE_SIG_RAINBOW 1 #cmakedefine OQS_ENABLE_SIG_rainbow_Ia_classic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_Ia_cyclic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_classic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_cyclic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_Vc_classic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_Vc_cyclic 1 - #cmakedefine OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed 1 - -#cmakedefine OQS_ENABLE_SIG_SPHINCS +#cmakedefine OQS_ENABLE_SIG_SPHINCS 1 #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192s_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256f_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256f_simple 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256s_robust 1 - #cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256s_simple 1 - ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END diff --git a/src/sig/dilithium/CMakeLists.txt b/src/sig/dilithium/CMakeLists.txt index 5db68a0d77..f9c33c6cde 100644 --- a/src/sig/dilithium/CMakeLists.txt +++ b/src/sig/dilithium/CMakeLists.txt @@ -2,83 +2,48 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_SIG_dilithium_2) - - set(SRCS_DILITHIUM_2_CLEAN_SRCS pqclean_dilithium2_clean/ntt.c pqclean_dilithium2_clean/packing.c pqclean_dilithium2_clean/poly.c pqclean_dilithium2_clean/polyvec.c pqclean_dilithium2_clean/reduce.c pqclean_dilithium2_clean/rounding.c pqclean_dilithium2_clean/sign.c pqclean_dilithium2_clean/stream.c) - -if(OQS_ENABLE_SIG_dilithium_2_avx2) - set(SRCS_DILITHIUM_2_AVX2_SRCS pqclean_dilithium2_avx2/fips202x4.c pqclean_dilithium2_avx2/invntt.S pqclean_dilithium2_avx2/ntt.S pqclean_dilithium2_avx2/nttconsts.c pqclean_dilithium2_avx2/packing.c pqclean_dilithium2_avx2/pointwise.S pqclean_dilithium2_avx2/poly.c pqclean_dilithium2_avx2/polyvec.c pqclean_dilithium2_avx2/reduce.S pqclean_dilithium2_avx2/rejsample.c pqclean_dilithium2_avx2/rounding.c pqclean_dilithium2_avx2/sign.c pqclean_dilithium2_avx2/stream.c) -else() - set(SRCS_DILITHIUM_2_AVX2_SRCS pqclean_dilithium2_avx2/oqs_unsupported.c ) + add_library(dilithium_2_clean OBJECT sig_dilithium_2.c pqclean_dilithium2_clean/ntt.c pqclean_dilithium2_clean/packing.c pqclean_dilithium2_clean/poly.c pqclean_dilithium2_clean/polyvec.c pqclean_dilithium2_clean/reduce.c pqclean_dilithium2_clean/rounding.c pqclean_dilithium2_clean/sign.c pqclean_dilithium2_clean/stream.c) + target_include_directories(dilithium_2_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_2_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium2_clean) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() - -set(SRCS_DILITHIUM_2_CLEAN_SRCS ${SRCS_DILITHIUM_2_CLEAN_SRCS} sig_dilithium_2.c ) +if(OQS_ENABLE_SIG_dilithium_2_avx2) + add_library(dilithium_2_avx2 OBJECT pqclean_dilithium2_avx2/fips202x4.c pqclean_dilithium2_avx2/invntt.S pqclean_dilithium2_avx2/ntt.S pqclean_dilithium2_avx2/nttconsts.c pqclean_dilithium2_avx2/packing.c pqclean_dilithium2_avx2/pointwise.S pqclean_dilithium2_avx2/poly.c pqclean_dilithium2_avx2/polyvec.c pqclean_dilithium2_avx2/reduce.S pqclean_dilithium2_avx2/rejsample.c pqclean_dilithium2_avx2/rounding.c pqclean_dilithium2_avx2/sign.c pqclean_dilithium2_avx2/stream.c) + target_include_directories(dilithium_2_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_2_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium2_avx2) + target_compile_options(dilithium_2_avx2 PRIVATE -mavx2 -mbmi2) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() if(OQS_ENABLE_SIG_dilithium_3) - - set(SRCS_DILITHIUM_3_CLEAN_SRCS pqclean_dilithium3_clean/ntt.c pqclean_dilithium3_clean/packing.c pqclean_dilithium3_clean/poly.c pqclean_dilithium3_clean/polyvec.c pqclean_dilithium3_clean/reduce.c pqclean_dilithium3_clean/rounding.c pqclean_dilithium3_clean/sign.c pqclean_dilithium3_clean/stream.c) - -if(OQS_ENABLE_SIG_dilithium_3_avx2) - set(SRCS_DILITHIUM_3_AVX2_SRCS pqclean_dilithium3_avx2/fips202x4.c pqclean_dilithium3_avx2/invntt.S pqclean_dilithium3_avx2/ntt.S pqclean_dilithium3_avx2/nttconsts.c pqclean_dilithium3_avx2/packing.c pqclean_dilithium3_avx2/pointwise.S pqclean_dilithium3_avx2/poly.c pqclean_dilithium3_avx2/polyvec.c pqclean_dilithium3_avx2/reduce.S pqclean_dilithium3_avx2/rejsample.c pqclean_dilithium3_avx2/rounding.c pqclean_dilithium3_avx2/sign.c pqclean_dilithium3_avx2/stream.c) -else() - set(SRCS_DILITHIUM_3_AVX2_SRCS pqclean_dilithium3_avx2/oqs_unsupported.c ) + add_library(dilithium_3_clean OBJECT sig_dilithium_3.c pqclean_dilithium3_clean/ntt.c pqclean_dilithium3_clean/packing.c pqclean_dilithium3_clean/poly.c pqclean_dilithium3_clean/polyvec.c pqclean_dilithium3_clean/reduce.c pqclean_dilithium3_clean/rounding.c pqclean_dilithium3_clean/sign.c pqclean_dilithium3_clean/stream.c) + target_include_directories(dilithium_3_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_3_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium3_clean) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() - -set(SRCS_DILITHIUM_3_CLEAN_SRCS ${SRCS_DILITHIUM_3_CLEAN_SRCS} sig_dilithium_3.c ) +if(OQS_ENABLE_SIG_dilithium_3_avx2) + add_library(dilithium_3_avx2 OBJECT pqclean_dilithium3_avx2/fips202x4.c pqclean_dilithium3_avx2/invntt.S pqclean_dilithium3_avx2/ntt.S pqclean_dilithium3_avx2/nttconsts.c pqclean_dilithium3_avx2/packing.c pqclean_dilithium3_avx2/pointwise.S pqclean_dilithium3_avx2/poly.c pqclean_dilithium3_avx2/polyvec.c pqclean_dilithium3_avx2/reduce.S pqclean_dilithium3_avx2/rejsample.c pqclean_dilithium3_avx2/rounding.c pqclean_dilithium3_avx2/sign.c pqclean_dilithium3_avx2/stream.c) + target_include_directories(dilithium_3_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_3_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium3_avx2) + target_compile_options(dilithium_3_avx2 PRIVATE -mavx2 -mbmi2) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() if(OQS_ENABLE_SIG_dilithium_4) - - set(SRCS_DILITHIUM_4_CLEAN_SRCS pqclean_dilithium4_clean/ntt.c pqclean_dilithium4_clean/packing.c pqclean_dilithium4_clean/poly.c pqclean_dilithium4_clean/polyvec.c pqclean_dilithium4_clean/reduce.c pqclean_dilithium4_clean/rounding.c pqclean_dilithium4_clean/sign.c pqclean_dilithium4_clean/stream.c) - -if(OQS_ENABLE_SIG_dilithium_4_avx2) - set(SRCS_DILITHIUM_4_AVX2_SRCS pqclean_dilithium4_avx2/fips202x4.c pqclean_dilithium4_avx2/invntt.S pqclean_dilithium4_avx2/ntt.S pqclean_dilithium4_avx2/nttconsts.c pqclean_dilithium4_avx2/packing.c pqclean_dilithium4_avx2/pointwise.S pqclean_dilithium4_avx2/poly.c pqclean_dilithium4_avx2/polyvec.c pqclean_dilithium4_avx2/reduce.S pqclean_dilithium4_avx2/rejsample.c pqclean_dilithium4_avx2/rounding.c pqclean_dilithium4_avx2/sign.c pqclean_dilithium4_avx2/stream.c) -else() - set(SRCS_DILITHIUM_4_AVX2_SRCS pqclean_dilithium4_avx2/oqs_unsupported.c ) + add_library(dilithium_4_clean OBJECT sig_dilithium_4.c pqclean_dilithium4_clean/ntt.c pqclean_dilithium4_clean/packing.c pqclean_dilithium4_clean/poly.c pqclean_dilithium4_clean/polyvec.c pqclean_dilithium4_clean/reduce.c pqclean_dilithium4_clean/rounding.c pqclean_dilithium4_clean/sign.c pqclean_dilithium4_clean/stream.c) + target_include_directories(dilithium_4_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_4_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium4_clean) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() - -set(SRCS_DILITHIUM_4_CLEAN_SRCS ${SRCS_DILITHIUM_4_CLEAN_SRCS} sig_dilithium_4.c ) +if(OQS_ENABLE_SIG_dilithium_4_avx2) + add_library(dilithium_4_avx2 OBJECT pqclean_dilithium4_avx2/fips202x4.c pqclean_dilithium4_avx2/invntt.S pqclean_dilithium4_avx2/ntt.S pqclean_dilithium4_avx2/nttconsts.c pqclean_dilithium4_avx2/packing.c pqclean_dilithium4_avx2/pointwise.S pqclean_dilithium4_avx2/poly.c pqclean_dilithium4_avx2/polyvec.c pqclean_dilithium4_avx2/reduce.S pqclean_dilithium4_avx2/rejsample.c pqclean_dilithium4_avx2/rounding.c pqclean_dilithium4_avx2/sign.c pqclean_dilithium4_avx2/stream.c) + target_include_directories(dilithium_4_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(dilithium_4_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_dilithium4_avx2) + target_compile_options(dilithium_4_avx2 PRIVATE -mavx2 -mbmi2) + set(_DILITHIUM_OBJS ${_DILITHIUM_OBJS} $) endif() - - - -add_library(dilithium_2_clean OBJECT ${SRCS_DILITHIUM_2_CLEAN_SRCS}) -target_include_directories(dilithium_2_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_2_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium2_clean) -target_compile_options(dilithium_2_clean PUBLIC ) - -add_library(dilithium_2_avx2 OBJECT ${SRCS_DILITHIUM_2_AVX2_SRCS}) -target_include_directories(dilithium_2_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_2_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium2_avx2) -target_compile_options(dilithium_2_avx2 PUBLIC -mavx2 -mbmi2) - - - -add_library(dilithium_3_clean OBJECT ${SRCS_DILITHIUM_3_CLEAN_SRCS}) -target_include_directories(dilithium_3_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_3_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium3_clean) -target_compile_options(dilithium_3_clean PUBLIC ) - -add_library(dilithium_3_avx2 OBJECT ${SRCS_DILITHIUM_3_AVX2_SRCS}) -target_include_directories(dilithium_3_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_3_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium3_avx2) -target_compile_options(dilithium_3_avx2 PUBLIC -mavx2 -mbmi2) - - - -add_library(dilithium_4_clean OBJECT ${SRCS_DILITHIUM_4_CLEAN_SRCS}) -target_include_directories(dilithium_4_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_4_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium4_clean) -target_compile_options(dilithium_4_clean PUBLIC ) - -add_library(dilithium_4_avx2 OBJECT ${SRCS_DILITHIUM_4_AVX2_SRCS}) -target_include_directories(dilithium_4_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(dilithium_4_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/dilithium/pqclean_dilithium4_avx2) -target_compile_options(dilithium_4_avx2 PUBLIC -mavx2 -mbmi2) - - - +set(DILITHIUM_OBJS ${_DILITHIUM_OBJS} PARENT_SCOPE) diff --git a/src/sig/dilithium/pqclean_dilithium2_avx2/oqs_unsupported.c b/src/sig/dilithium/pqclean_dilithium2_avx2/oqs_unsupported.c deleted file mode 100644 index 3320fc2ae0..0000000000 --- a/src/sig/dilithium/pqclean_dilithium2_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int dilithium2_avx2_unsupported=1; diff --git a/src/sig/dilithium/pqclean_dilithium3_avx2/oqs_unsupported.c b/src/sig/dilithium/pqclean_dilithium3_avx2/oqs_unsupported.c deleted file mode 100644 index 6d41142e6d..0000000000 --- a/src/sig/dilithium/pqclean_dilithium3_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int dilithium3_avx2_unsupported=1; diff --git a/src/sig/dilithium/pqclean_dilithium4_avx2/oqs_unsupported.c b/src/sig/dilithium/pqclean_dilithium4_avx2/oqs_unsupported.c deleted file mode 100644 index ab894b37c5..0000000000 --- a/src/sig/dilithium/pqclean_dilithium4_avx2/oqs_unsupported.c +++ /dev/null @@ -1 +0,0 @@ -int dilithium4_avx2_unsupported=1; diff --git a/src/sig/dilithium/sig_dilithium_2.c b/src/sig/dilithium/sig_dilithium_2.c index 2ea55958ae..6153ac66a3 100644 --- a/src/sig/dilithium/sig_dilithium_2.c +++ b/src/sig/dilithium/sig_dilithium_2.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_dilithium_2 +#if defined(OQS_ENABLE_SIG_dilithium_2) OQS_SIG *OQS_SIG_dilithium_2_new() { @@ -27,7 +27,6 @@ OQS_SIG *OQS_SIG_dilithium_2_new() { return sig; } - int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); @@ -38,54 +37,41 @@ int PQCLEAN_DILITHIUM2_AVX2_crypto_sign_signature(uint8_t *sig, size_t *siglen, int PQCLEAN_DILITHIUM2_AVX2_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); #endif - OQS_API OQS_STATUS OQS_SIG_dilithium_2_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_2_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_2_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_keypair(public_key, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_2_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_2_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_2_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_2_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_dilithium_2_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_2_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM2_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); #endif } diff --git a/src/sig/dilithium/sig_dilithium_3.c b/src/sig/dilithium/sig_dilithium_3.c index 10db7fc52d..948e5abfb2 100644 --- a/src/sig/dilithium/sig_dilithium_3.c +++ b/src/sig/dilithium/sig_dilithium_3.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_dilithium_3 +#if defined(OQS_ENABLE_SIG_dilithium_3) OQS_SIG *OQS_SIG_dilithium_3_new() { @@ -27,7 +27,6 @@ OQS_SIG *OQS_SIG_dilithium_3_new() { return sig; } - int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); @@ -38,54 +37,41 @@ int PQCLEAN_DILITHIUM3_AVX2_crypto_sign_signature(uint8_t *sig, size_t *siglen, int PQCLEAN_DILITHIUM3_AVX2_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); #endif - OQS_API OQS_STATUS OQS_SIG_dilithium_3_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_3_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_3_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_keypair(public_key, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_3_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_3_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_3_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_3_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_dilithium_3_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_3_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM3_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); #endif } diff --git a/src/sig/dilithium/sig_dilithium_4.c b/src/sig/dilithium/sig_dilithium_4.c index 9e353189f8..54d168f4da 100644 --- a/src/sig/dilithium/sig_dilithium_4.c +++ b/src/sig/dilithium/sig_dilithium_4.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_dilithium_4 +#if defined(OQS_ENABLE_SIG_dilithium_4) OQS_SIG *OQS_SIG_dilithium_4_new() { @@ -27,7 +27,6 @@ OQS_SIG *OQS_SIG_dilithium_4_new() { return sig; } - int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); @@ -38,54 +37,41 @@ int PQCLEAN_DILITHIUM4_AVX2_crypto_sign_signature(uint8_t *sig, size_t *siglen, int PQCLEAN_DILITHIUM4_AVX2_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); #endif - OQS_API OQS_STATUS OQS_SIG_dilithium_4_keypair(uint8_t *public_key, uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_4_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_4_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_keypair(public_key, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(public_key, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_keypair(public_key, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(public_key, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_4_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { -#ifdef OQS_ENABLE_SIG_dilithium_4_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_4_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); #endif } OQS_API OQS_STATUS OQS_SIG_dilithium_4_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { -#ifdef OQS_ENABLE_KEM_dilithium_4_avx2 -#ifdef OQS_ENABLE_CPUFEATURES - if (OQS_RT_cpu_flags().AVX2_INSTRUCTIONS && OQS_RT_cpu_flags().BMI2_INSTRUCTIONS ) { +#if defined(OQS_ENABLE_SIG_dilithium_4_avx2) + OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); + if (available_cpu_extensions.AVX2_ENABLED && available_cpu_extensions.BMI2_ENABLED) { return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } else { return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } #else - return (OQS_STATUS) PQCLEAN_DILITHIUM4_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); -#endif -#else - // Assume CLEAN always compiles return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); #endif } diff --git a/src/sig/falcon/CMakeLists.txt b/src/sig/falcon/CMakeLists.txt index f032304e68..1a79456205 100644 --- a/src/sig/falcon/CMakeLists.txt +++ b/src/sig/falcon/CMakeLists.txt @@ -2,37 +2,17 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_SIG_falcon_512) - - set(SRCS_FALCON_512_CLEAN_SRCS pqclean_falcon_512_clean/codec.c pqclean_falcon_512_clean/common.c pqclean_falcon_512_clean/fft.c pqclean_falcon_512_clean/fpr.c pqclean_falcon_512_clean/keygen.c pqclean_falcon_512_clean/pqclean.c pqclean_falcon_512_clean/rng.c pqclean_falcon_512_clean/sign.c pqclean_falcon_512_clean/vrfy.c) - - -set(SRCS_FALCON_512_CLEAN_SRCS ${SRCS_FALCON_512_CLEAN_SRCS} sig_falcon_512.c ) - + add_library(falcon_512_clean OBJECT sig_falcon_512.c pqclean_falcon-512_clean/codec.c pqclean_falcon-512_clean/common.c pqclean_falcon-512_clean/fft.c pqclean_falcon-512_clean/fpr.c pqclean_falcon-512_clean/keygen.c pqclean_falcon-512_clean/pqclean.c pqclean_falcon-512_clean/rng.c pqclean_falcon-512_clean/sign.c pqclean_falcon-512_clean/vrfy.c) + target_include_directories(falcon_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(falcon_512_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_falcon-512_clean) + set(_FALCON_OBJS ${_FALCON_OBJS} $) endif() if(OQS_ENABLE_SIG_falcon_1024) - - set(SRCS_FALCON_1024_CLEAN_SRCS pqclean_falcon_1024_clean/codec.c pqclean_falcon_1024_clean/common.c pqclean_falcon_1024_clean/fft.c pqclean_falcon_1024_clean/fpr.c pqclean_falcon_1024_clean/keygen.c pqclean_falcon_1024_clean/pqclean.c pqclean_falcon_1024_clean/rng.c pqclean_falcon_1024_clean/sign.c pqclean_falcon_1024_clean/vrfy.c) - - -set(SRCS_FALCON_1024_CLEAN_SRCS ${SRCS_FALCON_1024_CLEAN_SRCS} sig_falcon_1024.c ) - + add_library(falcon_1024_clean OBJECT sig_falcon_1024.c pqclean_falcon-1024_clean/codec.c pqclean_falcon-1024_clean/common.c pqclean_falcon-1024_clean/fft.c pqclean_falcon-1024_clean/fpr.c pqclean_falcon-1024_clean/keygen.c pqclean_falcon-1024_clean/pqclean.c pqclean_falcon-1024_clean/rng.c pqclean_falcon-1024_clean/sign.c pqclean_falcon-1024_clean/vrfy.c) + target_include_directories(falcon_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(falcon_1024_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_falcon-1024_clean) + set(_FALCON_OBJS ${_FALCON_OBJS} $) endif() - - - -add_library(falcon_512_clean OBJECT ${SRCS_FALCON_512_CLEAN_SRCS}) -target_include_directories(falcon_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(falcon_512_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/falcon/pqclean_falcon512_clean) -target_compile_options(falcon_512_clean PUBLIC ) - - - -add_library(falcon_1024_clean OBJECT ${SRCS_FALCON_1024_CLEAN_SRCS}) -target_include_directories(falcon_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(falcon_1024_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/falcon/pqclean_falcon1024_clean) -target_compile_options(falcon_1024_clean PUBLIC ) - - - +set(FALCON_OBJS ${_FALCON_OBJS} PARENT_SCOPE) diff --git a/src/sig/falcon/sig_falcon_1024.c b/src/sig/falcon/sig_falcon_1024.c index a20ec52faa..3cdc6a59eb 100644 --- a/src/sig/falcon/sig_falcon_1024.c +++ b/src/sig/falcon/sig_falcon_1024.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_falcon_1024 +#if defined(OQS_ENABLE_SIG_falcon_1024) OQS_SIG *OQS_SIG_falcon_1024_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_falcon_1024_new() { return sig; } - int PQCLEAN_FALCON1024_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_FALCON1024_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_FALCON1024_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_falcon_1024_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FALCON1024_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_falcon_1024_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FALCON1024_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_falcon_1024_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_FALCON1024_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/falcon/sig_falcon_512.c b/src/sig/falcon/sig_falcon_512.c index 0cd0e7091e..6d24d0e719 100644 --- a/src/sig/falcon/sig_falcon_512.c +++ b/src/sig/falcon/sig_falcon_512.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_falcon_512 +#if defined(OQS_ENABLE_SIG_falcon_512) OQS_SIG *OQS_SIG_falcon_512_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_falcon_512_new() { return sig; } - int PQCLEAN_FALCON512_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_FALCON512_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_FALCON512_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_falcon_512_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FALCON512_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_falcon_512_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_FALCON512_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_falcon_512_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_FALCON512_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/mqdss/CMakeLists.txt b/src/sig/mqdss/CMakeLists.txt index c48de386a0..0ab626ae9a 100644 --- a/src/sig/mqdss/CMakeLists.txt +++ b/src/sig/mqdss/CMakeLists.txt @@ -2,37 +2,17 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_SIG_mqdss_31_48) - - set(SRCS_MQDSS_31_48_CLEAN_SRCS pqclean_mqdss_48_clean/gf31.c pqclean_mqdss_48_clean/mq.c pqclean_mqdss_48_clean/sign.c) - - -set(SRCS_MQDSS_31_48_CLEAN_SRCS ${SRCS_MQDSS_31_48_CLEAN_SRCS} sig_mqdss_31_48.c ) - + add_library(mqdss_31_48_clean OBJECT sig_mqdss_31_48.c pqclean_mqdss-48_clean/gf31.c pqclean_mqdss-48_clean/mq.c pqclean_mqdss-48_clean/sign.c) + target_include_directories(mqdss_31_48_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(mqdss_31_48_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mqdss-48_clean) + set(_MQDSS_OBJS ${_MQDSS_OBJS} $) endif() if(OQS_ENABLE_SIG_mqdss_31_64) - - set(SRCS_MQDSS_31_64_CLEAN_SRCS pqclean_mqdss_64_clean/gf31.c pqclean_mqdss_64_clean/mq.c pqclean_mqdss_64_clean/sign.c) - - -set(SRCS_MQDSS_31_64_CLEAN_SRCS ${SRCS_MQDSS_31_64_CLEAN_SRCS} sig_mqdss_31_64.c ) - + add_library(mqdss_31_64_clean OBJECT sig_mqdss_31_64.c pqclean_mqdss-64_clean/gf31.c pqclean_mqdss-64_clean/mq.c pqclean_mqdss-64_clean/sign.c) + target_include_directories(mqdss_31_64_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(mqdss_31_64_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_mqdss-64_clean) + set(_MQDSS_OBJS ${_MQDSS_OBJS} $) endif() - - - -add_library(mqdss_31_48_clean OBJECT ${SRCS_MQDSS_31_48_CLEAN_SRCS}) -target_include_directories(mqdss_31_48_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(mqdss_31_48_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/mqdss/pqclean_mqdss31_48_clean) -target_compile_options(mqdss_31_48_clean PUBLIC ) - - - -add_library(mqdss_31_64_clean OBJECT ${SRCS_MQDSS_31_64_CLEAN_SRCS}) -target_include_directories(mqdss_31_64_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(mqdss_31_64_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/mqdss/pqclean_mqdss31_64_clean) -target_compile_options(mqdss_31_64_clean PUBLIC ) - - - +set(MQDSS_OBJS ${_MQDSS_OBJS} PARENT_SCOPE) diff --git a/src/sig/mqdss/sig_mqdss_31_48.c b/src/sig/mqdss/sig_mqdss_31_48.c index cddd46c3d7..793ff90052 100644 --- a/src/sig/mqdss/sig_mqdss_31_48.c +++ b/src/sig/mqdss/sig_mqdss_31_48.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_mqdss_31_48 +#if defined(OQS_ENABLE_SIG_mqdss_31_48) OQS_SIG *OQS_SIG_mqdss_31_48_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_mqdss_31_48_new() { return sig; } - int PQCLEAN_MQDSS48_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_MQDSS48_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_MQDSS48_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_mqdss_31_48_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MQDSS48_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_mqdss_31_48_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MQDSS48_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_mqdss_31_48_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MQDSS48_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/mqdss/sig_mqdss_31_64.c b/src/sig/mqdss/sig_mqdss_31_64.c index 7db8712a60..4875aae2d4 100644 --- a/src/sig/mqdss/sig_mqdss_31_64.c +++ b/src/sig/mqdss/sig_mqdss_31_64.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_mqdss_31_64 +#if defined(OQS_ENABLE_SIG_mqdss_31_64) OQS_SIG *OQS_SIG_mqdss_31_64_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_mqdss_31_64_new() { return sig; } - int PQCLEAN_MQDSS64_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_MQDSS64_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_MQDSS64_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_mqdss_31_64_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MQDSS64_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_mqdss_31_64_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_MQDSS64_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_mqdss_31_64_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_MQDSS64_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/picnic/CMakeLists.txt b/src/sig/picnic/CMakeLists.txt index b588c42e2e..e29a6e0a3f 100644 --- a/src/sig/picnic/CMakeLists.txt +++ b/src/sig/picnic/CMakeLists.txt @@ -77,10 +77,12 @@ endif() if(OQS_USE_SSE2_INSTRUCTIONS) target_compile_definitions(picnic PRIVATE WITH_SSE2) + add_compile_options(-msse2) endif() if(PICNIC_WITH_AVX2) target_compile_definitions(picnic PRIVATE WITH_AVX2 WITH_KECCAK_X4) + add_compile_options(picnic PRIVATE -mavx2) endif() if(OQS_USE_NEON_INSTRUCTIONS) target_compile_definitions(picnic PRIVATE WITH_NEON) diff --git a/src/sig/qtesla/CMakeLists.txt b/src/sig/qtesla/CMakeLists.txt index 7c81c3bed4..b4fb6e07d3 100644 --- a/src/sig/qtesla/CMakeLists.txt +++ b/src/sig/qtesla/CMakeLists.txt @@ -1,5 +1,3 @@ - - if(ARCH STREQUAL "x86") set(CPP_DEFS _X86_) elseif(ARCH STREQUAL "x86_64") @@ -19,13 +17,15 @@ if(OQS_ENABLE_SIG_qTesla_p_III) set(SRCS ${SRCS} qtesla_p_III.c) endif() -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" - AND OQS_USE_AVX2_INSTRUCTIONS - AND OQS_USE_AES_INSTRUCTIONS) +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND + OQS_USE_AVX2_INSTRUCTIONS AND + OQS_USE_AES_INSTRUCTIONS) set(CPP_DEFS ${CPP_DEFS} WITH_AVX2) include_directories(avx2) set(SRCS ${SRCS} avx2/poly_mul1024.S avx2/poly_mul2048.S) + add_compile_options(-mavx2) + add_compile_options(-maes) else() set(CPP_DEFS ${CPP_DEFS} portable) endif() diff --git a/src/sig/rainbow/CMakeLists.txt b/src/sig/rainbow/CMakeLists.txt index 9cae207439..74dc1fe343 100644 --- a/src/sig/rainbow/CMakeLists.txt +++ b/src/sig/rainbow/CMakeLists.txt @@ -2,149 +2,66 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_SIG_rainbow_Ia_classic) - - set(SRCS_RAINBOW_IA_CLASSIC_CLEAN_SRCS pqclean_rainbowIa_classic_clean/blas.c pqclean_rainbowIa_classic_clean/blas_comm.c pqclean_rainbowIa_classic_clean/gf.c pqclean_rainbowIa_classic_clean/parallel_matrix_op.c pqclean_rainbowIa_classic_clean/rainbow.c pqclean_rainbowIa_classic_clean/rainbow_keypair.c pqclean_rainbowIa_classic_clean/rainbow_keypair_computation.c pqclean_rainbowIa_classic_clean/sign.c pqclean_rainbowIa_classic_clean/utils_hash.c pqclean_rainbowIa_classic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IA_CLASSIC_CLEAN_SRCS ${SRCS_RAINBOW_IA_CLASSIC_CLEAN_SRCS} sig_rainbow_Ia_classic.c ) - + add_library(rainbow_Ia_classic_clean OBJECT sig_rainbow_Ia_classic.c pqclean_rainbowIa-classic_clean/blas.c pqclean_rainbowIa-classic_clean/blas_comm.c pqclean_rainbowIa-classic_clean/gf.c pqclean_rainbowIa-classic_clean/parallel_matrix_op.c pqclean_rainbowIa-classic_clean/rainbow.c pqclean_rainbowIa-classic_clean/rainbow_keypair.c pqclean_rainbowIa-classic_clean/rainbow_keypair_computation.c pqclean_rainbowIa-classic_clean/sign.c pqclean_rainbowIa-classic_clean/utils_hash.c pqclean_rainbowIa-classic_clean/utils_prng.c) + target_include_directories(rainbow_Ia_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Ia_classic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIa-classic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_Ia_cyclic) - - set(SRCS_RAINBOW_IA_CYCLIC_CLEAN_SRCS pqclean_rainbowIa_cyclic_clean/blas.c pqclean_rainbowIa_cyclic_clean/blas_comm.c pqclean_rainbowIa_cyclic_clean/gf.c pqclean_rainbowIa_cyclic_clean/parallel_matrix_op.c pqclean_rainbowIa_cyclic_clean/rainbow.c pqclean_rainbowIa_cyclic_clean/rainbow_keypair.c pqclean_rainbowIa_cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowIa_cyclic_clean/sign.c pqclean_rainbowIa_cyclic_clean/utils_hash.c pqclean_rainbowIa_cyclic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IA_CYCLIC_CLEAN_SRCS ${SRCS_RAINBOW_IA_CYCLIC_CLEAN_SRCS} sig_rainbow_Ia_cyclic.c ) - + add_library(rainbow_Ia_cyclic_clean OBJECT sig_rainbow_Ia_cyclic.c pqclean_rainbowIa-cyclic_clean/blas.c pqclean_rainbowIa-cyclic_clean/blas_comm.c pqclean_rainbowIa-cyclic_clean/gf.c pqclean_rainbowIa-cyclic_clean/parallel_matrix_op.c pqclean_rainbowIa-cyclic_clean/rainbow.c pqclean_rainbowIa-cyclic_clean/rainbow_keypair.c pqclean_rainbowIa-cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowIa-cyclic_clean/sign.c pqclean_rainbowIa-cyclic_clean/utils_hash.c pqclean_rainbowIa-cyclic_clean/utils_prng.c) + target_include_directories(rainbow_Ia_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Ia_cyclic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIa-cyclic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed) - - set(SRCS_RAINBOW_IA_CYCLIC_COMPRESSED_CLEAN_SRCS pqclean_rainbowIa_cyclic_compressed_clean/blas.c pqclean_rainbowIa_cyclic_compressed_clean/blas_comm.c pqclean_rainbowIa_cyclic_compressed_clean/gf.c pqclean_rainbowIa_cyclic_compressed_clean/parallel_matrix_op.c pqclean_rainbowIa_cyclic_compressed_clean/rainbow.c pqclean_rainbowIa_cyclic_compressed_clean/rainbow_keypair.c pqclean_rainbowIa_cyclic_compressed_clean/rainbow_keypair_computation.c pqclean_rainbowIa_cyclic_compressed_clean/sign.c pqclean_rainbowIa_cyclic_compressed_clean/utils_hash.c pqclean_rainbowIa_cyclic_compressed_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IA_CYCLIC_COMPRESSED_CLEAN_SRCS ${SRCS_RAINBOW_IA_CYCLIC_COMPRESSED_CLEAN_SRCS} sig_rainbow_Ia_cyclic_compressed.c ) - + add_library(rainbow_Ia_cyclic_compressed_clean OBJECT sig_rainbow_Ia_cyclic_compressed.c pqclean_rainbowIa-cyclic-compressed_clean/blas.c pqclean_rainbowIa-cyclic-compressed_clean/blas_comm.c pqclean_rainbowIa-cyclic-compressed_clean/gf.c pqclean_rainbowIa-cyclic-compressed_clean/parallel_matrix_op.c pqclean_rainbowIa-cyclic-compressed_clean/rainbow.c pqclean_rainbowIa-cyclic-compressed_clean/rainbow_keypair.c pqclean_rainbowIa-cyclic-compressed_clean/rainbow_keypair_computation.c pqclean_rainbowIa-cyclic-compressed_clean/sign.c pqclean_rainbowIa-cyclic-compressed_clean/utils_hash.c pqclean_rainbowIa-cyclic-compressed_clean/utils_prng.c) + target_include_directories(rainbow_Ia_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Ia_cyclic_compressed_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIa-cyclic-compressed_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_IIIc_classic) - - set(SRCS_RAINBOW_IIIC_CLASSIC_CLEAN_SRCS pqclean_rainbowIIIc_classic_clean/blas.c pqclean_rainbowIIIc_classic_clean/blas_comm.c pqclean_rainbowIIIc_classic_clean/gf.c pqclean_rainbowIIIc_classic_clean/parallel_matrix_op.c pqclean_rainbowIIIc_classic_clean/rainbow.c pqclean_rainbowIIIc_classic_clean/rainbow_keypair.c pqclean_rainbowIIIc_classic_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc_classic_clean/sign.c pqclean_rainbowIIIc_classic_clean/utils_hash.c pqclean_rainbowIIIc_classic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IIIC_CLASSIC_CLEAN_SRCS ${SRCS_RAINBOW_IIIC_CLASSIC_CLEAN_SRCS} sig_rainbow_IIIc_classic.c ) - + add_library(rainbow_IIIc_classic_clean OBJECT sig_rainbow_IIIc_classic.c pqclean_rainbowIIIc-classic_clean/blas.c pqclean_rainbowIIIc-classic_clean/blas_comm.c pqclean_rainbowIIIc-classic_clean/gf.c pqclean_rainbowIIIc-classic_clean/parallel_matrix_op.c pqclean_rainbowIIIc-classic_clean/rainbow.c pqclean_rainbowIIIc-classic_clean/rainbow_keypair.c pqclean_rainbowIIIc-classic_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc-classic_clean/sign.c pqclean_rainbowIIIc-classic_clean/utils_hash.c pqclean_rainbowIIIc-classic_clean/utils_prng.c) + target_include_directories(rainbow_IIIc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_IIIc_classic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIIIc-classic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_IIIc_cyclic) - - set(SRCS_RAINBOW_IIIC_CYCLIC_CLEAN_SRCS pqclean_rainbowIIIc_cyclic_clean/blas.c pqclean_rainbowIIIc_cyclic_clean/blas_comm.c pqclean_rainbowIIIc_cyclic_clean/gf.c pqclean_rainbowIIIc_cyclic_clean/parallel_matrix_op.c pqclean_rainbowIIIc_cyclic_clean/rainbow.c pqclean_rainbowIIIc_cyclic_clean/rainbow_keypair.c pqclean_rainbowIIIc_cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc_cyclic_clean/sign.c pqclean_rainbowIIIc_cyclic_clean/utils_hash.c pqclean_rainbowIIIc_cyclic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IIIC_CYCLIC_CLEAN_SRCS ${SRCS_RAINBOW_IIIC_CYCLIC_CLEAN_SRCS} sig_rainbow_IIIc_cyclic.c ) - + add_library(rainbow_IIIc_cyclic_clean OBJECT sig_rainbow_IIIc_cyclic.c pqclean_rainbowIIIc-cyclic_clean/blas.c pqclean_rainbowIIIc-cyclic_clean/blas_comm.c pqclean_rainbowIIIc-cyclic_clean/gf.c pqclean_rainbowIIIc-cyclic_clean/parallel_matrix_op.c pqclean_rainbowIIIc-cyclic_clean/rainbow.c pqclean_rainbowIIIc-cyclic_clean/rainbow_keypair.c pqclean_rainbowIIIc-cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc-cyclic_clean/sign.c pqclean_rainbowIIIc-cyclic_clean/utils_hash.c pqclean_rainbowIIIc-cyclic_clean/utils_prng.c) + target_include_directories(rainbow_IIIc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_IIIc_cyclic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIIIc-cyclic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed) - - set(SRCS_RAINBOW_IIIC_CYCLIC_COMPRESSED_CLEAN_SRCS pqclean_rainbowIIIc_cyclic_compressed_clean/blas.c pqclean_rainbowIIIc_cyclic_compressed_clean/blas_comm.c pqclean_rainbowIIIc_cyclic_compressed_clean/gf.c pqclean_rainbowIIIc_cyclic_compressed_clean/parallel_matrix_op.c pqclean_rainbowIIIc_cyclic_compressed_clean/rainbow.c pqclean_rainbowIIIc_cyclic_compressed_clean/rainbow_keypair.c pqclean_rainbowIIIc_cyclic_compressed_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc_cyclic_compressed_clean/sign.c pqclean_rainbowIIIc_cyclic_compressed_clean/utils_hash.c pqclean_rainbowIIIc_cyclic_compressed_clean/utils_prng.c) - - -set(SRCS_RAINBOW_IIIC_CYCLIC_COMPRESSED_CLEAN_SRCS ${SRCS_RAINBOW_IIIC_CYCLIC_COMPRESSED_CLEAN_SRCS} sig_rainbow_IIIc_cyclic_compressed.c ) - + add_library(rainbow_IIIc_cyclic_compressed_clean OBJECT sig_rainbow_IIIc_cyclic_compressed.c pqclean_rainbowIIIc-cyclic-compressed_clean/blas.c pqclean_rainbowIIIc-cyclic-compressed_clean/blas_comm.c pqclean_rainbowIIIc-cyclic-compressed_clean/gf.c pqclean_rainbowIIIc-cyclic-compressed_clean/parallel_matrix_op.c pqclean_rainbowIIIc-cyclic-compressed_clean/rainbow.c pqclean_rainbowIIIc-cyclic-compressed_clean/rainbow_keypair.c pqclean_rainbowIIIc-cyclic-compressed_clean/rainbow_keypair_computation.c pqclean_rainbowIIIc-cyclic-compressed_clean/sign.c pqclean_rainbowIIIc-cyclic-compressed_clean/utils_hash.c pqclean_rainbowIIIc-cyclic-compressed_clean/utils_prng.c) + target_include_directories(rainbow_IIIc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_IIIc_cyclic_compressed_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowIIIc-cyclic-compressed_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_Vc_classic) - - set(SRCS_RAINBOW_VC_CLASSIC_CLEAN_SRCS pqclean_rainbowVc_classic_clean/blas.c pqclean_rainbowVc_classic_clean/blas_comm.c pqclean_rainbowVc_classic_clean/gf.c pqclean_rainbowVc_classic_clean/parallel_matrix_op.c pqclean_rainbowVc_classic_clean/rainbow.c pqclean_rainbowVc_classic_clean/rainbow_keypair.c pqclean_rainbowVc_classic_clean/rainbow_keypair_computation.c pqclean_rainbowVc_classic_clean/sign.c pqclean_rainbowVc_classic_clean/utils_hash.c pqclean_rainbowVc_classic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_VC_CLASSIC_CLEAN_SRCS ${SRCS_RAINBOW_VC_CLASSIC_CLEAN_SRCS} sig_rainbow_Vc_classic.c ) - + add_library(rainbow_Vc_classic_clean OBJECT sig_rainbow_Vc_classic.c pqclean_rainbowVc-classic_clean/blas.c pqclean_rainbowVc-classic_clean/blas_comm.c pqclean_rainbowVc-classic_clean/gf.c pqclean_rainbowVc-classic_clean/parallel_matrix_op.c pqclean_rainbowVc-classic_clean/rainbow.c pqclean_rainbowVc-classic_clean/rainbow_keypair.c pqclean_rainbowVc-classic_clean/rainbow_keypair_computation.c pqclean_rainbowVc-classic_clean/sign.c pqclean_rainbowVc-classic_clean/utils_hash.c pqclean_rainbowVc-classic_clean/utils_prng.c) + target_include_directories(rainbow_Vc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Vc_classic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowVc-classic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_Vc_cyclic) - - set(SRCS_RAINBOW_VC_CYCLIC_CLEAN_SRCS pqclean_rainbowVc_cyclic_clean/blas.c pqclean_rainbowVc_cyclic_clean/blas_comm.c pqclean_rainbowVc_cyclic_clean/gf.c pqclean_rainbowVc_cyclic_clean/parallel_matrix_op.c pqclean_rainbowVc_cyclic_clean/rainbow.c pqclean_rainbowVc_cyclic_clean/rainbow_keypair.c pqclean_rainbowVc_cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowVc_cyclic_clean/sign.c pqclean_rainbowVc_cyclic_clean/utils_hash.c pqclean_rainbowVc_cyclic_clean/utils_prng.c) - - -set(SRCS_RAINBOW_VC_CYCLIC_CLEAN_SRCS ${SRCS_RAINBOW_VC_CYCLIC_CLEAN_SRCS} sig_rainbow_Vc_cyclic.c ) - + add_library(rainbow_Vc_cyclic_clean OBJECT sig_rainbow_Vc_cyclic.c pqclean_rainbowVc-cyclic_clean/blas.c pqclean_rainbowVc-cyclic_clean/blas_comm.c pqclean_rainbowVc-cyclic_clean/gf.c pqclean_rainbowVc-cyclic_clean/parallel_matrix_op.c pqclean_rainbowVc-cyclic_clean/rainbow.c pqclean_rainbowVc-cyclic_clean/rainbow_keypair.c pqclean_rainbowVc-cyclic_clean/rainbow_keypair_computation.c pqclean_rainbowVc-cyclic_clean/sign.c pqclean_rainbowVc-cyclic_clean/utils_hash.c pqclean_rainbowVc-cyclic_clean/utils_prng.c) + target_include_directories(rainbow_Vc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Vc_cyclic_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowVc-cyclic_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() if(OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed) - - set(SRCS_RAINBOW_VC_CYCLIC_COMPRESSED_CLEAN_SRCS pqclean_rainbowVc_cyclic_compressed_clean/blas.c pqclean_rainbowVc_cyclic_compressed_clean/blas_comm.c pqclean_rainbowVc_cyclic_compressed_clean/gf.c pqclean_rainbowVc_cyclic_compressed_clean/parallel_matrix_op.c pqclean_rainbowVc_cyclic_compressed_clean/rainbow.c pqclean_rainbowVc_cyclic_compressed_clean/rainbow_keypair.c pqclean_rainbowVc_cyclic_compressed_clean/rainbow_keypair_computation.c pqclean_rainbowVc_cyclic_compressed_clean/sign.c pqclean_rainbowVc_cyclic_compressed_clean/utils_hash.c pqclean_rainbowVc_cyclic_compressed_clean/utils_prng.c) - - -set(SRCS_RAINBOW_VC_CYCLIC_COMPRESSED_CLEAN_SRCS ${SRCS_RAINBOW_VC_CYCLIC_COMPRESSED_CLEAN_SRCS} sig_rainbow_Vc_cyclic_compressed.c ) - + add_library(rainbow_Vc_cyclic_compressed_clean OBJECT sig_rainbow_Vc_cyclic_compressed.c pqclean_rainbowVc-cyclic-compressed_clean/blas.c pqclean_rainbowVc-cyclic-compressed_clean/blas_comm.c pqclean_rainbowVc-cyclic-compressed_clean/gf.c pqclean_rainbowVc-cyclic-compressed_clean/parallel_matrix_op.c pqclean_rainbowVc-cyclic-compressed_clean/rainbow.c pqclean_rainbowVc-cyclic-compressed_clean/rainbow_keypair.c pqclean_rainbowVc-cyclic-compressed_clean/rainbow_keypair_computation.c pqclean_rainbowVc-cyclic-compressed_clean/sign.c pqclean_rainbowVc-cyclic-compressed_clean/utils_hash.c pqclean_rainbowVc-cyclic-compressed_clean/utils_prng.c) + target_include_directories(rainbow_Vc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(rainbow_Vc_cyclic_compressed_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_rainbowVc-cyclic-compressed_clean) + set(_RAINBOW_OBJS ${_RAINBOW_OBJS} $) endif() - - - -add_library(rainbow_Ia_classic_clean OBJECT ${SRCS_RAINBOW_IA_CLASSIC_CLEAN_SRCS}) -target_include_directories(rainbow_Ia_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Ia_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIa_classic_clean) -target_compile_options(rainbow_Ia_classic_clean PUBLIC ) - - - -add_library(rainbow_Ia_cyclic_clean OBJECT ${SRCS_RAINBOW_IA_CYCLIC_CLEAN_SRCS}) -target_include_directories(rainbow_Ia_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Ia_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIa_cyclic_clean) -target_compile_options(rainbow_Ia_cyclic_clean PUBLIC ) - - - -add_library(rainbow_Ia_cyclic_compressed_clean OBJECT ${SRCS_RAINBOW_IA_CYCLIC_COMPRESSED_CLEAN_SRCS}) -target_include_directories(rainbow_Ia_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Ia_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIa_cyclic_compressed_clean) -target_compile_options(rainbow_Ia_cyclic_compressed_clean PUBLIC ) - - - -add_library(rainbow_IIIc_classic_clean OBJECT ${SRCS_RAINBOW_IIIC_CLASSIC_CLEAN_SRCS}) -target_include_directories(rainbow_IIIc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_IIIc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIIIc_classic_clean) -target_compile_options(rainbow_IIIc_classic_clean PUBLIC ) - - - -add_library(rainbow_IIIc_cyclic_clean OBJECT ${SRCS_RAINBOW_IIIC_CYCLIC_CLEAN_SRCS}) -target_include_directories(rainbow_IIIc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_IIIc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIIIc_cyclic_clean) -target_compile_options(rainbow_IIIc_cyclic_clean PUBLIC ) - - - -add_library(rainbow_IIIc_cyclic_compressed_clean OBJECT ${SRCS_RAINBOW_IIIC_CYCLIC_COMPRESSED_CLEAN_SRCS}) -target_include_directories(rainbow_IIIc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_IIIc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowIIIc_cyclic_compressed_clean) -target_compile_options(rainbow_IIIc_cyclic_compressed_clean PUBLIC ) - - - -add_library(rainbow_Vc_classic_clean OBJECT ${SRCS_RAINBOW_VC_CLASSIC_CLEAN_SRCS}) -target_include_directories(rainbow_Vc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Vc_classic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowVc_classic_clean) -target_compile_options(rainbow_Vc_classic_clean PUBLIC ) - - - -add_library(rainbow_Vc_cyclic_clean OBJECT ${SRCS_RAINBOW_VC_CYCLIC_CLEAN_SRCS}) -target_include_directories(rainbow_Vc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Vc_cyclic_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowVc_cyclic_clean) -target_compile_options(rainbow_Vc_cyclic_clean PUBLIC ) - - - -add_library(rainbow_Vc_cyclic_compressed_clean OBJECT ${SRCS_RAINBOW_VC_CYCLIC_COMPRESSED_CLEAN_SRCS}) -target_include_directories(rainbow_Vc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(rainbow_Vc_cyclic_compressed_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/rainbow/pqclean_rainbowVc_cyclic_compressed_clean) -target_compile_options(rainbow_Vc_cyclic_compressed_clean PUBLIC ) - - - +set(RAINBOW_OBJS ${_RAINBOW_OBJS} PARENT_SCOPE) diff --git a/src/sig/rainbow/sig_rainbow_IIIc_classic.c b/src/sig/rainbow/sig_rainbow_IIIc_classic.c index 2d82423de0..49ef152662 100644 --- a/src/sig/rainbow/sig_rainbow_IIIc_classic.c +++ b/src/sig/rainbow/sig_rainbow_IIIc_classic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_IIIc_classic +#if defined(OQS_ENABLE_SIG_rainbow_IIIc_classic) OQS_SIG *OQS_SIG_rainbow_IIIc_classic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_IIIc_classic_new() { return sig; } - int PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_classic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_classic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_classic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCLASSIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_IIIc_cyclic.c b/src/sig/rainbow/sig_rainbow_IIIc_cyclic.c index d3406c1bcf..94571ecb48 100644 --- a/src/sig/rainbow/sig_rainbow_IIIc_cyclic.c +++ b/src/sig/rainbow/sig_rainbow_IIIc_cyclic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_IIIc_cyclic +#if defined(OQS_ENABLE_SIG_rainbow_IIIc_cyclic) OQS_SIG *OQS_SIG_rainbow_IIIc_cyclic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_IIIc_cyclic_new() { return sig; } - int PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_IIIc_cyclic_compressed.c b/src/sig/rainbow/sig_rainbow_IIIc_cyclic_compressed.c index ce4a14ad14..ec3d4b7d9e 100644 --- a/src/sig/rainbow/sig_rainbow_IIIc_cyclic_compressed.c +++ b/src/sig/rainbow/sig_rainbow_IIIc_cyclic_compressed.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed +#if defined(OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed) OQS_SIG *OQS_SIG_rainbow_IIIc_cyclic_compressed_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_IIIc_cyclic_compressed_new() { return sig; } - int PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_compressed_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_compressed_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_IIIc_cyclic_compressed_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIIICCYCLICCOMPRESSED_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Ia_classic.c b/src/sig/rainbow/sig_rainbow_Ia_classic.c index 690304914f..e4480c481d 100644 --- a/src/sig/rainbow/sig_rainbow_Ia_classic.c +++ b/src/sig/rainbow/sig_rainbow_Ia_classic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Ia_classic +#if defined(OQS_ENABLE_SIG_rainbow_Ia_classic) OQS_SIG *OQS_SIG_rainbow_Ia_classic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Ia_classic_new() { return sig; } - int PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_classic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_classic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_classic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACLASSIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Ia_cyclic.c b/src/sig/rainbow/sig_rainbow_Ia_cyclic.c index 1cfdfeb3e2..e485b6df7b 100644 --- a/src/sig/rainbow/sig_rainbow_Ia_cyclic.c +++ b/src/sig/rainbow/sig_rainbow_Ia_cyclic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Ia_cyclic +#if defined(OQS_ENABLE_SIG_rainbow_Ia_cyclic) OQS_SIG *OQS_SIG_rainbow_Ia_cyclic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Ia_cyclic_new() { return sig; } - int PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Ia_cyclic_compressed.c b/src/sig/rainbow/sig_rainbow_Ia_cyclic_compressed.c index c751c546b2..7c2b9d7c2f 100644 --- a/src/sig/rainbow/sig_rainbow_Ia_cyclic_compressed.c +++ b/src/sig/rainbow/sig_rainbow_Ia_cyclic_compressed.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed +#if defined(OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed) OQS_SIG *OQS_SIG_rainbow_Ia_cyclic_compressed_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Ia_cyclic_compressed_new() { return sig; } - int PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_compressed_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_compressed_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Ia_cyclic_compressed_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWIACYCLICCOMPRESSED_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Vc_classic.c b/src/sig/rainbow/sig_rainbow_Vc_classic.c index 24d4d56686..80e3e77840 100644 --- a/src/sig/rainbow/sig_rainbow_Vc_classic.c +++ b/src/sig/rainbow/sig_rainbow_Vc_classic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Vc_classic +#if defined(OQS_ENABLE_SIG_rainbow_Vc_classic) OQS_SIG *OQS_SIG_rainbow_Vc_classic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Vc_classic_new() { return sig; } - int PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_classic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_classic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_classic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCLASSIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Vc_cyclic.c b/src/sig/rainbow/sig_rainbow_Vc_cyclic.c index 6cb0bd4420..237d0aa222 100644 --- a/src/sig/rainbow/sig_rainbow_Vc_cyclic.c +++ b/src/sig/rainbow/sig_rainbow_Vc_cyclic.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Vc_cyclic +#if defined(OQS_ENABLE_SIG_rainbow_Vc_cyclic) OQS_SIG *OQS_SIG_rainbow_Vc_cyclic_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Vc_cyclic_new() { return sig; } - int PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLIC_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/rainbow/sig_rainbow_Vc_cyclic_compressed.c b/src/sig/rainbow/sig_rainbow_Vc_cyclic_compressed.c index 3e8aa0117e..5dbfcbf12f 100644 --- a/src/sig/rainbow/sig_rainbow_Vc_cyclic_compressed.c +++ b/src/sig/rainbow/sig_rainbow_Vc_cyclic_compressed.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed +#if defined(OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed) OQS_SIG *OQS_SIG_rainbow_Vc_cyclic_compressed_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_rainbow_Vc_cyclic_compressed_new() { return sig; } - int PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_compressed_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_compressed_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_rainbow_Vc_cyclic_compressed_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_RAINBOWVCCYCLICCOMPRESSED_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/CMakeLists.txt b/src/sig/sphincs/CMakeLists.txt index 10df6dc8f9..582089b90f 100644 --- a/src/sig/sphincs/CMakeLists.txt +++ b/src/sig/sphincs/CMakeLists.txt @@ -2,581 +2,255 @@ # scripts/copy_from_pqclean/copy_from_pqclean.py if(OQS_ENABLE_SIG_sphincs_haraka_128f_robust) - - set(SRCS_SPHINCS_HARAKA_128F_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_128f_robust_clean/address.c pqclean_sphincs_haraka_128f_robust_clean/fors.c pqclean_sphincs_haraka_128f_robust_clean/haraka.c pqclean_sphincs_haraka_128f_robust_clean/hash_haraka.c pqclean_sphincs_haraka_128f_robust_clean/sign.c pqclean_sphincs_haraka_128f_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_128f_robust_clean/utils.c pqclean_sphincs_haraka_128f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_128F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_128F_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_128f_robust.c ) - + add_library(sphincs_haraka_128f_robust_clean OBJECT sig_sphincs_haraka_128f_robust.c pqclean_sphincs-haraka-128f-robust_clean/address.c pqclean_sphincs-haraka-128f-robust_clean/fors.c pqclean_sphincs-haraka-128f-robust_clean/haraka.c pqclean_sphincs-haraka-128f-robust_clean/hash_haraka.c pqclean_sphincs-haraka-128f-robust_clean/sign.c pqclean_sphincs-haraka-128f-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-128f-robust_clean/utils.c pqclean_sphincs-haraka-128f-robust_clean/wots.c) + target_include_directories(sphincs_haraka_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_128f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-128f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_128f_simple) - - set(SRCS_SPHINCS_HARAKA_128F_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_128f_simple_clean/address.c pqclean_sphincs_haraka_128f_simple_clean/fors.c pqclean_sphincs_haraka_128f_simple_clean/haraka.c pqclean_sphincs_haraka_128f_simple_clean/hash_haraka.c pqclean_sphincs_haraka_128f_simple_clean/sign.c pqclean_sphincs_haraka_128f_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_128f_simple_clean/utils.c pqclean_sphincs_haraka_128f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_128F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_128F_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_128f_simple.c ) - + add_library(sphincs_haraka_128f_simple_clean OBJECT sig_sphincs_haraka_128f_simple.c pqclean_sphincs-haraka-128f-simple_clean/address.c pqclean_sphincs-haraka-128f-simple_clean/fors.c pqclean_sphincs-haraka-128f-simple_clean/haraka.c pqclean_sphincs-haraka-128f-simple_clean/hash_haraka.c pqclean_sphincs-haraka-128f-simple_clean/sign.c pqclean_sphincs-haraka-128f-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-128f-simple_clean/utils.c pqclean_sphincs-haraka-128f-simple_clean/wots.c) + target_include_directories(sphincs_haraka_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_128f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-128f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_128s_robust) - - set(SRCS_SPHINCS_HARAKA_128S_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_128s_robust_clean/address.c pqclean_sphincs_haraka_128s_robust_clean/fors.c pqclean_sphincs_haraka_128s_robust_clean/haraka.c pqclean_sphincs_haraka_128s_robust_clean/hash_haraka.c pqclean_sphincs_haraka_128s_robust_clean/sign.c pqclean_sphincs_haraka_128s_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_128s_robust_clean/utils.c pqclean_sphincs_haraka_128s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_128S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_128S_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_128s_robust.c ) - + add_library(sphincs_haraka_128s_robust_clean OBJECT sig_sphincs_haraka_128s_robust.c pqclean_sphincs-haraka-128s-robust_clean/address.c pqclean_sphincs-haraka-128s-robust_clean/fors.c pqclean_sphincs-haraka-128s-robust_clean/haraka.c pqclean_sphincs-haraka-128s-robust_clean/hash_haraka.c pqclean_sphincs-haraka-128s-robust_clean/sign.c pqclean_sphincs-haraka-128s-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-128s-robust_clean/utils.c pqclean_sphincs-haraka-128s-robust_clean/wots.c) + target_include_directories(sphincs_haraka_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_128s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-128s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_128s_simple) - - set(SRCS_SPHINCS_HARAKA_128S_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_128s_simple_clean/address.c pqclean_sphincs_haraka_128s_simple_clean/fors.c pqclean_sphincs_haraka_128s_simple_clean/haraka.c pqclean_sphincs_haraka_128s_simple_clean/hash_haraka.c pqclean_sphincs_haraka_128s_simple_clean/sign.c pqclean_sphincs_haraka_128s_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_128s_simple_clean/utils.c pqclean_sphincs_haraka_128s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_128S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_128S_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_128s_simple.c ) - + add_library(sphincs_haraka_128s_simple_clean OBJECT sig_sphincs_haraka_128s_simple.c pqclean_sphincs-haraka-128s-simple_clean/address.c pqclean_sphincs-haraka-128s-simple_clean/fors.c pqclean_sphincs-haraka-128s-simple_clean/haraka.c pqclean_sphincs-haraka-128s-simple_clean/hash_haraka.c pqclean_sphincs-haraka-128s-simple_clean/sign.c pqclean_sphincs-haraka-128s-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-128s-simple_clean/utils.c pqclean_sphincs-haraka-128s-simple_clean/wots.c) + target_include_directories(sphincs_haraka_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_128s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-128s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_192f_robust) - - set(SRCS_SPHINCS_HARAKA_192F_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_192f_robust_clean/address.c pqclean_sphincs_haraka_192f_robust_clean/fors.c pqclean_sphincs_haraka_192f_robust_clean/haraka.c pqclean_sphincs_haraka_192f_robust_clean/hash_haraka.c pqclean_sphincs_haraka_192f_robust_clean/sign.c pqclean_sphincs_haraka_192f_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_192f_robust_clean/utils.c pqclean_sphincs_haraka_192f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_192F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_192F_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_192f_robust.c ) - + add_library(sphincs_haraka_192f_robust_clean OBJECT sig_sphincs_haraka_192f_robust.c pqclean_sphincs-haraka-192f-robust_clean/address.c pqclean_sphincs-haraka-192f-robust_clean/fors.c pqclean_sphincs-haraka-192f-robust_clean/haraka.c pqclean_sphincs-haraka-192f-robust_clean/hash_haraka.c pqclean_sphincs-haraka-192f-robust_clean/sign.c pqclean_sphincs-haraka-192f-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-192f-robust_clean/utils.c pqclean_sphincs-haraka-192f-robust_clean/wots.c) + target_include_directories(sphincs_haraka_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_192f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-192f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_192f_simple) - - set(SRCS_SPHINCS_HARAKA_192F_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_192f_simple_clean/address.c pqclean_sphincs_haraka_192f_simple_clean/fors.c pqclean_sphincs_haraka_192f_simple_clean/haraka.c pqclean_sphincs_haraka_192f_simple_clean/hash_haraka.c pqclean_sphincs_haraka_192f_simple_clean/sign.c pqclean_sphincs_haraka_192f_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_192f_simple_clean/utils.c pqclean_sphincs_haraka_192f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_192F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_192F_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_192f_simple.c ) - + add_library(sphincs_haraka_192f_simple_clean OBJECT sig_sphincs_haraka_192f_simple.c pqclean_sphincs-haraka-192f-simple_clean/address.c pqclean_sphincs-haraka-192f-simple_clean/fors.c pqclean_sphincs-haraka-192f-simple_clean/haraka.c pqclean_sphincs-haraka-192f-simple_clean/hash_haraka.c pqclean_sphincs-haraka-192f-simple_clean/sign.c pqclean_sphincs-haraka-192f-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-192f-simple_clean/utils.c pqclean_sphincs-haraka-192f-simple_clean/wots.c) + target_include_directories(sphincs_haraka_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_192f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-192f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_192s_robust) - - set(SRCS_SPHINCS_HARAKA_192S_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_192s_robust_clean/address.c pqclean_sphincs_haraka_192s_robust_clean/fors.c pqclean_sphincs_haraka_192s_robust_clean/haraka.c pqclean_sphincs_haraka_192s_robust_clean/hash_haraka.c pqclean_sphincs_haraka_192s_robust_clean/sign.c pqclean_sphincs_haraka_192s_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_192s_robust_clean/utils.c pqclean_sphincs_haraka_192s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_192S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_192S_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_192s_robust.c ) - + add_library(sphincs_haraka_192s_robust_clean OBJECT sig_sphincs_haraka_192s_robust.c pqclean_sphincs-haraka-192s-robust_clean/address.c pqclean_sphincs-haraka-192s-robust_clean/fors.c pqclean_sphincs-haraka-192s-robust_clean/haraka.c pqclean_sphincs-haraka-192s-robust_clean/hash_haraka.c pqclean_sphincs-haraka-192s-robust_clean/sign.c pqclean_sphincs-haraka-192s-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-192s-robust_clean/utils.c pqclean_sphincs-haraka-192s-robust_clean/wots.c) + target_include_directories(sphincs_haraka_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_192s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-192s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_192s_simple) - - set(SRCS_SPHINCS_HARAKA_192S_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_192s_simple_clean/address.c pqclean_sphincs_haraka_192s_simple_clean/fors.c pqclean_sphincs_haraka_192s_simple_clean/haraka.c pqclean_sphincs_haraka_192s_simple_clean/hash_haraka.c pqclean_sphincs_haraka_192s_simple_clean/sign.c pqclean_sphincs_haraka_192s_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_192s_simple_clean/utils.c pqclean_sphincs_haraka_192s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_192S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_192S_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_192s_simple.c ) - + add_library(sphincs_haraka_192s_simple_clean OBJECT sig_sphincs_haraka_192s_simple.c pqclean_sphincs-haraka-192s-simple_clean/address.c pqclean_sphincs-haraka-192s-simple_clean/fors.c pqclean_sphincs-haraka-192s-simple_clean/haraka.c pqclean_sphincs-haraka-192s-simple_clean/hash_haraka.c pqclean_sphincs-haraka-192s-simple_clean/sign.c pqclean_sphincs-haraka-192s-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-192s-simple_clean/utils.c pqclean_sphincs-haraka-192s-simple_clean/wots.c) + target_include_directories(sphincs_haraka_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_192s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-192s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_256f_robust) - - set(SRCS_SPHINCS_HARAKA_256F_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_256f_robust_clean/address.c pqclean_sphincs_haraka_256f_robust_clean/fors.c pqclean_sphincs_haraka_256f_robust_clean/haraka.c pqclean_sphincs_haraka_256f_robust_clean/hash_haraka.c pqclean_sphincs_haraka_256f_robust_clean/sign.c pqclean_sphincs_haraka_256f_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_256f_robust_clean/utils.c pqclean_sphincs_haraka_256f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_256F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_256F_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_256f_robust.c ) - + add_library(sphincs_haraka_256f_robust_clean OBJECT sig_sphincs_haraka_256f_robust.c pqclean_sphincs-haraka-256f-robust_clean/address.c pqclean_sphincs-haraka-256f-robust_clean/fors.c pqclean_sphincs-haraka-256f-robust_clean/haraka.c pqclean_sphincs-haraka-256f-robust_clean/hash_haraka.c pqclean_sphincs-haraka-256f-robust_clean/sign.c pqclean_sphincs-haraka-256f-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-256f-robust_clean/utils.c pqclean_sphincs-haraka-256f-robust_clean/wots.c) + target_include_directories(sphincs_haraka_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_256f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-256f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_256f_simple) - - set(SRCS_SPHINCS_HARAKA_256F_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_256f_simple_clean/address.c pqclean_sphincs_haraka_256f_simple_clean/fors.c pqclean_sphincs_haraka_256f_simple_clean/haraka.c pqclean_sphincs_haraka_256f_simple_clean/hash_haraka.c pqclean_sphincs_haraka_256f_simple_clean/sign.c pqclean_sphincs_haraka_256f_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_256f_simple_clean/utils.c pqclean_sphincs_haraka_256f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_256F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_256F_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_256f_simple.c ) - + add_library(sphincs_haraka_256f_simple_clean OBJECT sig_sphincs_haraka_256f_simple.c pqclean_sphincs-haraka-256f-simple_clean/address.c pqclean_sphincs-haraka-256f-simple_clean/fors.c pqclean_sphincs-haraka-256f-simple_clean/haraka.c pqclean_sphincs-haraka-256f-simple_clean/hash_haraka.c pqclean_sphincs-haraka-256f-simple_clean/sign.c pqclean_sphincs-haraka-256f-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-256f-simple_clean/utils.c pqclean_sphincs-haraka-256f-simple_clean/wots.c) + target_include_directories(sphincs_haraka_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_256f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-256f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_256s_robust) - - set(SRCS_SPHINCS_HARAKA_256S_ROBUST_CLEAN_SRCS pqclean_sphincs_haraka_256s_robust_clean/address.c pqclean_sphincs_haraka_256s_robust_clean/fors.c pqclean_sphincs_haraka_256s_robust_clean/haraka.c pqclean_sphincs_haraka_256s_robust_clean/hash_haraka.c pqclean_sphincs_haraka_256s_robust_clean/sign.c pqclean_sphincs_haraka_256s_robust_clean/thash_haraka_robust.c pqclean_sphincs_haraka_256s_robust_clean/utils.c pqclean_sphincs_haraka_256s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_256S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_256S_ROBUST_CLEAN_SRCS} sig_sphincs_haraka_256s_robust.c ) - + add_library(sphincs_haraka_256s_robust_clean OBJECT sig_sphincs_haraka_256s_robust.c pqclean_sphincs-haraka-256s-robust_clean/address.c pqclean_sphincs-haraka-256s-robust_clean/fors.c pqclean_sphincs-haraka-256s-robust_clean/haraka.c pqclean_sphincs-haraka-256s-robust_clean/hash_haraka.c pqclean_sphincs-haraka-256s-robust_clean/sign.c pqclean_sphincs-haraka-256s-robust_clean/thash_haraka_robust.c pqclean_sphincs-haraka-256s-robust_clean/utils.c pqclean_sphincs-haraka-256s-robust_clean/wots.c) + target_include_directories(sphincs_haraka_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_256s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-256s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_haraka_256s_simple) - - set(SRCS_SPHINCS_HARAKA_256S_SIMPLE_CLEAN_SRCS pqclean_sphincs_haraka_256s_simple_clean/address.c pqclean_sphincs_haraka_256s_simple_clean/fors.c pqclean_sphincs_haraka_256s_simple_clean/haraka.c pqclean_sphincs_haraka_256s_simple_clean/hash_haraka.c pqclean_sphincs_haraka_256s_simple_clean/sign.c pqclean_sphincs_haraka_256s_simple_clean/thash_haraka_simple.c pqclean_sphincs_haraka_256s_simple_clean/utils.c pqclean_sphincs_haraka_256s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_HARAKA_256S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_HARAKA_256S_SIMPLE_CLEAN_SRCS} sig_sphincs_haraka_256s_simple.c ) - + add_library(sphincs_haraka_256s_simple_clean OBJECT sig_sphincs_haraka_256s_simple.c pqclean_sphincs-haraka-256s-simple_clean/address.c pqclean_sphincs-haraka-256s-simple_clean/fors.c pqclean_sphincs-haraka-256s-simple_clean/haraka.c pqclean_sphincs-haraka-256s-simple_clean/hash_haraka.c pqclean_sphincs-haraka-256s-simple_clean/sign.c pqclean_sphincs-haraka-256s-simple_clean/thash_haraka_simple.c pqclean_sphincs-haraka-256s-simple_clean/utils.c pqclean_sphincs-haraka-256s-simple_clean/wots.c) + target_include_directories(sphincs_haraka_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_haraka_256s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-haraka-256s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_128f_robust) - - set(SRCS_SPHINCS_SHA256_128F_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_128f_robust_clean/address.c pqclean_sphincs_sha256_128f_robust_clean/fors.c pqclean_sphincs_sha256_128f_robust_clean/hash_sha256.c pqclean_sphincs_sha256_128f_robust_clean/sha256.c pqclean_sphincs_sha256_128f_robust_clean/sign.c pqclean_sphincs_sha256_128f_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_128f_robust_clean/utils.c pqclean_sphincs_sha256_128f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_128F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_128F_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_128f_robust.c ) - + add_library(sphincs_sha256_128f_robust_clean OBJECT sig_sphincs_sha256_128f_robust.c pqclean_sphincs-sha256-128f-robust_clean/address.c pqclean_sphincs-sha256-128f-robust_clean/fors.c pqclean_sphincs-sha256-128f-robust_clean/hash_sha256.c pqclean_sphincs-sha256-128f-robust_clean/sha256.c pqclean_sphincs-sha256-128f-robust_clean/sign.c pqclean_sphincs-sha256-128f-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-128f-robust_clean/utils.c pqclean_sphincs-sha256-128f-robust_clean/wots.c) + target_include_directories(sphincs_sha256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_128f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-128f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_128f_simple) - - set(SRCS_SPHINCS_SHA256_128F_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_128f_simple_clean/address.c pqclean_sphincs_sha256_128f_simple_clean/fors.c pqclean_sphincs_sha256_128f_simple_clean/hash_sha256.c pqclean_sphincs_sha256_128f_simple_clean/sha256.c pqclean_sphincs_sha256_128f_simple_clean/sign.c pqclean_sphincs_sha256_128f_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_128f_simple_clean/utils.c pqclean_sphincs_sha256_128f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_128F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_128F_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_128f_simple.c ) - + add_library(sphincs_sha256_128f_simple_clean OBJECT sig_sphincs_sha256_128f_simple.c pqclean_sphincs-sha256-128f-simple_clean/address.c pqclean_sphincs-sha256-128f-simple_clean/fors.c pqclean_sphincs-sha256-128f-simple_clean/hash_sha256.c pqclean_sphincs-sha256-128f-simple_clean/sha256.c pqclean_sphincs-sha256-128f-simple_clean/sign.c pqclean_sphincs-sha256-128f-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-128f-simple_clean/utils.c pqclean_sphincs-sha256-128f-simple_clean/wots.c) + target_include_directories(sphincs_sha256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_128f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-128f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_128s_robust) - - set(SRCS_SPHINCS_SHA256_128S_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_128s_robust_clean/address.c pqclean_sphincs_sha256_128s_robust_clean/fors.c pqclean_sphincs_sha256_128s_robust_clean/hash_sha256.c pqclean_sphincs_sha256_128s_robust_clean/sha256.c pqclean_sphincs_sha256_128s_robust_clean/sign.c pqclean_sphincs_sha256_128s_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_128s_robust_clean/utils.c pqclean_sphincs_sha256_128s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_128S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_128S_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_128s_robust.c ) - + add_library(sphincs_sha256_128s_robust_clean OBJECT sig_sphincs_sha256_128s_robust.c pqclean_sphincs-sha256-128s-robust_clean/address.c pqclean_sphincs-sha256-128s-robust_clean/fors.c pqclean_sphincs-sha256-128s-robust_clean/hash_sha256.c pqclean_sphincs-sha256-128s-robust_clean/sha256.c pqclean_sphincs-sha256-128s-robust_clean/sign.c pqclean_sphincs-sha256-128s-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-128s-robust_clean/utils.c pqclean_sphincs-sha256-128s-robust_clean/wots.c) + target_include_directories(sphincs_sha256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_128s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-128s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_128s_simple) - - set(SRCS_SPHINCS_SHA256_128S_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_128s_simple_clean/address.c pqclean_sphincs_sha256_128s_simple_clean/fors.c pqclean_sphincs_sha256_128s_simple_clean/hash_sha256.c pqclean_sphincs_sha256_128s_simple_clean/sha256.c pqclean_sphincs_sha256_128s_simple_clean/sign.c pqclean_sphincs_sha256_128s_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_128s_simple_clean/utils.c pqclean_sphincs_sha256_128s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_128S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_128S_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_128s_simple.c ) - + add_library(sphincs_sha256_128s_simple_clean OBJECT sig_sphincs_sha256_128s_simple.c pqclean_sphincs-sha256-128s-simple_clean/address.c pqclean_sphincs-sha256-128s-simple_clean/fors.c pqclean_sphincs-sha256-128s-simple_clean/hash_sha256.c pqclean_sphincs-sha256-128s-simple_clean/sha256.c pqclean_sphincs-sha256-128s-simple_clean/sign.c pqclean_sphincs-sha256-128s-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-128s-simple_clean/utils.c pqclean_sphincs-sha256-128s-simple_clean/wots.c) + target_include_directories(sphincs_sha256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_128s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-128s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_192f_robust) - - set(SRCS_SPHINCS_SHA256_192F_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_192f_robust_clean/address.c pqclean_sphincs_sha256_192f_robust_clean/fors.c pqclean_sphincs_sha256_192f_robust_clean/hash_sha256.c pqclean_sphincs_sha256_192f_robust_clean/sha256.c pqclean_sphincs_sha256_192f_robust_clean/sign.c pqclean_sphincs_sha256_192f_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_192f_robust_clean/utils.c pqclean_sphincs_sha256_192f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_192F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_192F_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_192f_robust.c ) - + add_library(sphincs_sha256_192f_robust_clean OBJECT sig_sphincs_sha256_192f_robust.c pqclean_sphincs-sha256-192f-robust_clean/address.c pqclean_sphincs-sha256-192f-robust_clean/fors.c pqclean_sphincs-sha256-192f-robust_clean/hash_sha256.c pqclean_sphincs-sha256-192f-robust_clean/sha256.c pqclean_sphincs-sha256-192f-robust_clean/sign.c pqclean_sphincs-sha256-192f-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-192f-robust_clean/utils.c pqclean_sphincs-sha256-192f-robust_clean/wots.c) + target_include_directories(sphincs_sha256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_192f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-192f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_192f_simple) - - set(SRCS_SPHINCS_SHA256_192F_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_192f_simple_clean/address.c pqclean_sphincs_sha256_192f_simple_clean/fors.c pqclean_sphincs_sha256_192f_simple_clean/hash_sha256.c pqclean_sphincs_sha256_192f_simple_clean/sha256.c pqclean_sphincs_sha256_192f_simple_clean/sign.c pqclean_sphincs_sha256_192f_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_192f_simple_clean/utils.c pqclean_sphincs_sha256_192f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_192F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_192F_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_192f_simple.c ) - + add_library(sphincs_sha256_192f_simple_clean OBJECT sig_sphincs_sha256_192f_simple.c pqclean_sphincs-sha256-192f-simple_clean/address.c pqclean_sphincs-sha256-192f-simple_clean/fors.c pqclean_sphincs-sha256-192f-simple_clean/hash_sha256.c pqclean_sphincs-sha256-192f-simple_clean/sha256.c pqclean_sphincs-sha256-192f-simple_clean/sign.c pqclean_sphincs-sha256-192f-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-192f-simple_clean/utils.c pqclean_sphincs-sha256-192f-simple_clean/wots.c) + target_include_directories(sphincs_sha256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_192f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-192f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_192s_robust) - - set(SRCS_SPHINCS_SHA256_192S_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_192s_robust_clean/address.c pqclean_sphincs_sha256_192s_robust_clean/fors.c pqclean_sphincs_sha256_192s_robust_clean/hash_sha256.c pqclean_sphincs_sha256_192s_robust_clean/sha256.c pqclean_sphincs_sha256_192s_robust_clean/sign.c pqclean_sphincs_sha256_192s_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_192s_robust_clean/utils.c pqclean_sphincs_sha256_192s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_192S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_192S_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_192s_robust.c ) - + add_library(sphincs_sha256_192s_robust_clean OBJECT sig_sphincs_sha256_192s_robust.c pqclean_sphincs-sha256-192s-robust_clean/address.c pqclean_sphincs-sha256-192s-robust_clean/fors.c pqclean_sphincs-sha256-192s-robust_clean/hash_sha256.c pqclean_sphincs-sha256-192s-robust_clean/sha256.c pqclean_sphincs-sha256-192s-robust_clean/sign.c pqclean_sphincs-sha256-192s-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-192s-robust_clean/utils.c pqclean_sphincs-sha256-192s-robust_clean/wots.c) + target_include_directories(sphincs_sha256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_192s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-192s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_192s_simple) - - set(SRCS_SPHINCS_SHA256_192S_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_192s_simple_clean/address.c pqclean_sphincs_sha256_192s_simple_clean/fors.c pqclean_sphincs_sha256_192s_simple_clean/hash_sha256.c pqclean_sphincs_sha256_192s_simple_clean/sha256.c pqclean_sphincs_sha256_192s_simple_clean/sign.c pqclean_sphincs_sha256_192s_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_192s_simple_clean/utils.c pqclean_sphincs_sha256_192s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_192S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_192S_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_192s_simple.c ) - + add_library(sphincs_sha256_192s_simple_clean OBJECT sig_sphincs_sha256_192s_simple.c pqclean_sphincs-sha256-192s-simple_clean/address.c pqclean_sphincs-sha256-192s-simple_clean/fors.c pqclean_sphincs-sha256-192s-simple_clean/hash_sha256.c pqclean_sphincs-sha256-192s-simple_clean/sha256.c pqclean_sphincs-sha256-192s-simple_clean/sign.c pqclean_sphincs-sha256-192s-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-192s-simple_clean/utils.c pqclean_sphincs-sha256-192s-simple_clean/wots.c) + target_include_directories(sphincs_sha256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_192s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-192s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_256f_robust) - - set(SRCS_SPHINCS_SHA256_256F_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_256f_robust_clean/address.c pqclean_sphincs_sha256_256f_robust_clean/fors.c pqclean_sphincs_sha256_256f_robust_clean/hash_sha256.c pqclean_sphincs_sha256_256f_robust_clean/sha256.c pqclean_sphincs_sha256_256f_robust_clean/sign.c pqclean_sphincs_sha256_256f_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_256f_robust_clean/utils.c pqclean_sphincs_sha256_256f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_256F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_256F_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_256f_robust.c ) - + add_library(sphincs_sha256_256f_robust_clean OBJECT sig_sphincs_sha256_256f_robust.c pqclean_sphincs-sha256-256f-robust_clean/address.c pqclean_sphincs-sha256-256f-robust_clean/fors.c pqclean_sphincs-sha256-256f-robust_clean/hash_sha256.c pqclean_sphincs-sha256-256f-robust_clean/sha256.c pqclean_sphincs-sha256-256f-robust_clean/sign.c pqclean_sphincs-sha256-256f-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-256f-robust_clean/utils.c pqclean_sphincs-sha256-256f-robust_clean/wots.c) + target_include_directories(sphincs_sha256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_256f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-256f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_256f_simple) - - set(SRCS_SPHINCS_SHA256_256F_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_256f_simple_clean/address.c pqclean_sphincs_sha256_256f_simple_clean/fors.c pqclean_sphincs_sha256_256f_simple_clean/hash_sha256.c pqclean_sphincs_sha256_256f_simple_clean/sha256.c pqclean_sphincs_sha256_256f_simple_clean/sign.c pqclean_sphincs_sha256_256f_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_256f_simple_clean/utils.c pqclean_sphincs_sha256_256f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_256F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_256F_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_256f_simple.c ) - + add_library(sphincs_sha256_256f_simple_clean OBJECT sig_sphincs_sha256_256f_simple.c pqclean_sphincs-sha256-256f-simple_clean/address.c pqclean_sphincs-sha256-256f-simple_clean/fors.c pqclean_sphincs-sha256-256f-simple_clean/hash_sha256.c pqclean_sphincs-sha256-256f-simple_clean/sha256.c pqclean_sphincs-sha256-256f-simple_clean/sign.c pqclean_sphincs-sha256-256f-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-256f-simple_clean/utils.c pqclean_sphincs-sha256-256f-simple_clean/wots.c) + target_include_directories(sphincs_sha256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_256f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-256f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_256s_robust) - - set(SRCS_SPHINCS_SHA256_256S_ROBUST_CLEAN_SRCS pqclean_sphincs_sha256_256s_robust_clean/address.c pqclean_sphincs_sha256_256s_robust_clean/fors.c pqclean_sphincs_sha256_256s_robust_clean/hash_sha256.c pqclean_sphincs_sha256_256s_robust_clean/sha256.c pqclean_sphincs_sha256_256s_robust_clean/sign.c pqclean_sphincs_sha256_256s_robust_clean/thash_sha256_robust.c pqclean_sphincs_sha256_256s_robust_clean/utils.c pqclean_sphincs_sha256_256s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_256S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_256S_ROBUST_CLEAN_SRCS} sig_sphincs_sha256_256s_robust.c ) - + add_library(sphincs_sha256_256s_robust_clean OBJECT sig_sphincs_sha256_256s_robust.c pqclean_sphincs-sha256-256s-robust_clean/address.c pqclean_sphincs-sha256-256s-robust_clean/fors.c pqclean_sphincs-sha256-256s-robust_clean/hash_sha256.c pqclean_sphincs-sha256-256s-robust_clean/sha256.c pqclean_sphincs-sha256-256s-robust_clean/sign.c pqclean_sphincs-sha256-256s-robust_clean/thash_sha256_robust.c pqclean_sphincs-sha256-256s-robust_clean/utils.c pqclean_sphincs-sha256-256s-robust_clean/wots.c) + target_include_directories(sphincs_sha256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_256s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-256s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_sha256_256s_simple) - - set(SRCS_SPHINCS_SHA256_256S_SIMPLE_CLEAN_SRCS pqclean_sphincs_sha256_256s_simple_clean/address.c pqclean_sphincs_sha256_256s_simple_clean/fors.c pqclean_sphincs_sha256_256s_simple_clean/hash_sha256.c pqclean_sphincs_sha256_256s_simple_clean/sha256.c pqclean_sphincs_sha256_256s_simple_clean/sign.c pqclean_sphincs_sha256_256s_simple_clean/thash_sha256_simple.c pqclean_sphincs_sha256_256s_simple_clean/utils.c pqclean_sphincs_sha256_256s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHA256_256S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHA256_256S_SIMPLE_CLEAN_SRCS} sig_sphincs_sha256_256s_simple.c ) - + add_library(sphincs_sha256_256s_simple_clean OBJECT sig_sphincs_sha256_256s_simple.c pqclean_sphincs-sha256-256s-simple_clean/address.c pqclean_sphincs-sha256-256s-simple_clean/fors.c pqclean_sphincs-sha256-256s-simple_clean/hash_sha256.c pqclean_sphincs-sha256-256s-simple_clean/sha256.c pqclean_sphincs-sha256-256s-simple_clean/sign.c pqclean_sphincs-sha256-256s-simple_clean/thash_sha256_simple.c pqclean_sphincs-sha256-256s-simple_clean/utils.c pqclean_sphincs-sha256-256s-simple_clean/wots.c) + target_include_directories(sphincs_sha256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_sha256_256s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-sha256-256s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_128f_robust) - - set(SRCS_SPHINCS_SHAKE256_128F_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_128f_robust_clean/address.c pqclean_sphincs_shake256_128f_robust_clean/fors.c pqclean_sphincs_shake256_128f_robust_clean/hash_shake256.c pqclean_sphincs_shake256_128f_robust_clean/sign.c pqclean_sphincs_shake256_128f_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_128f_robust_clean/utils.c pqclean_sphincs_shake256_128f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_128F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_128F_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_128f_robust.c ) - + add_library(sphincs_shake256_128f_robust_clean OBJECT sig_sphincs_shake256_128f_robust.c pqclean_sphincs-shake256-128f-robust_clean/address.c pqclean_sphincs-shake256-128f-robust_clean/fors.c pqclean_sphincs-shake256-128f-robust_clean/hash_shake256.c pqclean_sphincs-shake256-128f-robust_clean/sign.c pqclean_sphincs-shake256-128f-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-128f-robust_clean/utils.c pqclean_sphincs-shake256-128f-robust_clean/wots.c) + target_include_directories(sphincs_shake256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_128f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-128f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_128f_simple) - - set(SRCS_SPHINCS_SHAKE256_128F_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_128f_simple_clean/address.c pqclean_sphincs_shake256_128f_simple_clean/fors.c pqclean_sphincs_shake256_128f_simple_clean/hash_shake256.c pqclean_sphincs_shake256_128f_simple_clean/sign.c pqclean_sphincs_shake256_128f_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_128f_simple_clean/utils.c pqclean_sphincs_shake256_128f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_128F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_128F_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_128f_simple.c ) - + add_library(sphincs_shake256_128f_simple_clean OBJECT sig_sphincs_shake256_128f_simple.c pqclean_sphincs-shake256-128f-simple_clean/address.c pqclean_sphincs-shake256-128f-simple_clean/fors.c pqclean_sphincs-shake256-128f-simple_clean/hash_shake256.c pqclean_sphincs-shake256-128f-simple_clean/sign.c pqclean_sphincs-shake256-128f-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-128f-simple_clean/utils.c pqclean_sphincs-shake256-128f-simple_clean/wots.c) + target_include_directories(sphincs_shake256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_128f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-128f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_128s_robust) - - set(SRCS_SPHINCS_SHAKE256_128S_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_128s_robust_clean/address.c pqclean_sphincs_shake256_128s_robust_clean/fors.c pqclean_sphincs_shake256_128s_robust_clean/hash_shake256.c pqclean_sphincs_shake256_128s_robust_clean/sign.c pqclean_sphincs_shake256_128s_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_128s_robust_clean/utils.c pqclean_sphincs_shake256_128s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_128S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_128S_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_128s_robust.c ) - + add_library(sphincs_shake256_128s_robust_clean OBJECT sig_sphincs_shake256_128s_robust.c pqclean_sphincs-shake256-128s-robust_clean/address.c pqclean_sphincs-shake256-128s-robust_clean/fors.c pqclean_sphincs-shake256-128s-robust_clean/hash_shake256.c pqclean_sphincs-shake256-128s-robust_clean/sign.c pqclean_sphincs-shake256-128s-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-128s-robust_clean/utils.c pqclean_sphincs-shake256-128s-robust_clean/wots.c) + target_include_directories(sphincs_shake256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_128s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-128s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_128s_simple) - - set(SRCS_SPHINCS_SHAKE256_128S_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_128s_simple_clean/address.c pqclean_sphincs_shake256_128s_simple_clean/fors.c pqclean_sphincs_shake256_128s_simple_clean/hash_shake256.c pqclean_sphincs_shake256_128s_simple_clean/sign.c pqclean_sphincs_shake256_128s_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_128s_simple_clean/utils.c pqclean_sphincs_shake256_128s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_128S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_128S_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_128s_simple.c ) - + add_library(sphincs_shake256_128s_simple_clean OBJECT sig_sphincs_shake256_128s_simple.c pqclean_sphincs-shake256-128s-simple_clean/address.c pqclean_sphincs-shake256-128s-simple_clean/fors.c pqclean_sphincs-shake256-128s-simple_clean/hash_shake256.c pqclean_sphincs-shake256-128s-simple_clean/sign.c pqclean_sphincs-shake256-128s-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-128s-simple_clean/utils.c pqclean_sphincs-shake256-128s-simple_clean/wots.c) + target_include_directories(sphincs_shake256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_128s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-128s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_192f_robust) - - set(SRCS_SPHINCS_SHAKE256_192F_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_192f_robust_clean/address.c pqclean_sphincs_shake256_192f_robust_clean/fors.c pqclean_sphincs_shake256_192f_robust_clean/hash_shake256.c pqclean_sphincs_shake256_192f_robust_clean/sign.c pqclean_sphincs_shake256_192f_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_192f_robust_clean/utils.c pqclean_sphincs_shake256_192f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_192F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_192F_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_192f_robust.c ) - + add_library(sphincs_shake256_192f_robust_clean OBJECT sig_sphincs_shake256_192f_robust.c pqclean_sphincs-shake256-192f-robust_clean/address.c pqclean_sphincs-shake256-192f-robust_clean/fors.c pqclean_sphincs-shake256-192f-robust_clean/hash_shake256.c pqclean_sphincs-shake256-192f-robust_clean/sign.c pqclean_sphincs-shake256-192f-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-192f-robust_clean/utils.c pqclean_sphincs-shake256-192f-robust_clean/wots.c) + target_include_directories(sphincs_shake256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_192f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-192f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_192f_simple) - - set(SRCS_SPHINCS_SHAKE256_192F_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_192f_simple_clean/address.c pqclean_sphincs_shake256_192f_simple_clean/fors.c pqclean_sphincs_shake256_192f_simple_clean/hash_shake256.c pqclean_sphincs_shake256_192f_simple_clean/sign.c pqclean_sphincs_shake256_192f_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_192f_simple_clean/utils.c pqclean_sphincs_shake256_192f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_192F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_192F_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_192f_simple.c ) - + add_library(sphincs_shake256_192f_simple_clean OBJECT sig_sphincs_shake256_192f_simple.c pqclean_sphincs-shake256-192f-simple_clean/address.c pqclean_sphincs-shake256-192f-simple_clean/fors.c pqclean_sphincs-shake256-192f-simple_clean/hash_shake256.c pqclean_sphincs-shake256-192f-simple_clean/sign.c pqclean_sphincs-shake256-192f-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-192f-simple_clean/utils.c pqclean_sphincs-shake256-192f-simple_clean/wots.c) + target_include_directories(sphincs_shake256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_192f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-192f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_192s_robust) - - set(SRCS_SPHINCS_SHAKE256_192S_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_192s_robust_clean/address.c pqclean_sphincs_shake256_192s_robust_clean/fors.c pqclean_sphincs_shake256_192s_robust_clean/hash_shake256.c pqclean_sphincs_shake256_192s_robust_clean/sign.c pqclean_sphincs_shake256_192s_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_192s_robust_clean/utils.c pqclean_sphincs_shake256_192s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_192S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_192S_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_192s_robust.c ) - + add_library(sphincs_shake256_192s_robust_clean OBJECT sig_sphincs_shake256_192s_robust.c pqclean_sphincs-shake256-192s-robust_clean/address.c pqclean_sphincs-shake256-192s-robust_clean/fors.c pqclean_sphincs-shake256-192s-robust_clean/hash_shake256.c pqclean_sphincs-shake256-192s-robust_clean/sign.c pqclean_sphincs-shake256-192s-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-192s-robust_clean/utils.c pqclean_sphincs-shake256-192s-robust_clean/wots.c) + target_include_directories(sphincs_shake256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_192s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-192s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_192s_simple) - - set(SRCS_SPHINCS_SHAKE256_192S_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_192s_simple_clean/address.c pqclean_sphincs_shake256_192s_simple_clean/fors.c pqclean_sphincs_shake256_192s_simple_clean/hash_shake256.c pqclean_sphincs_shake256_192s_simple_clean/sign.c pqclean_sphincs_shake256_192s_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_192s_simple_clean/utils.c pqclean_sphincs_shake256_192s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_192S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_192S_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_192s_simple.c ) - + add_library(sphincs_shake256_192s_simple_clean OBJECT sig_sphincs_shake256_192s_simple.c pqclean_sphincs-shake256-192s-simple_clean/address.c pqclean_sphincs-shake256-192s-simple_clean/fors.c pqclean_sphincs-shake256-192s-simple_clean/hash_shake256.c pqclean_sphincs-shake256-192s-simple_clean/sign.c pqclean_sphincs-shake256-192s-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-192s-simple_clean/utils.c pqclean_sphincs-shake256-192s-simple_clean/wots.c) + target_include_directories(sphincs_shake256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_192s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-192s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_256f_robust) - - set(SRCS_SPHINCS_SHAKE256_256F_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_256f_robust_clean/address.c pqclean_sphincs_shake256_256f_robust_clean/fors.c pqclean_sphincs_shake256_256f_robust_clean/hash_shake256.c pqclean_sphincs_shake256_256f_robust_clean/sign.c pqclean_sphincs_shake256_256f_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_256f_robust_clean/utils.c pqclean_sphincs_shake256_256f_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_256F_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_256F_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_256f_robust.c ) - + add_library(sphincs_shake256_256f_robust_clean OBJECT sig_sphincs_shake256_256f_robust.c pqclean_sphincs-shake256-256f-robust_clean/address.c pqclean_sphincs-shake256-256f-robust_clean/fors.c pqclean_sphincs-shake256-256f-robust_clean/hash_shake256.c pqclean_sphincs-shake256-256f-robust_clean/sign.c pqclean_sphincs-shake256-256f-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-256f-robust_clean/utils.c pqclean_sphincs-shake256-256f-robust_clean/wots.c) + target_include_directories(sphincs_shake256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_256f_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-256f-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_256f_simple) - - set(SRCS_SPHINCS_SHAKE256_256F_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_256f_simple_clean/address.c pqclean_sphincs_shake256_256f_simple_clean/fors.c pqclean_sphincs_shake256_256f_simple_clean/hash_shake256.c pqclean_sphincs_shake256_256f_simple_clean/sign.c pqclean_sphincs_shake256_256f_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_256f_simple_clean/utils.c pqclean_sphincs_shake256_256f_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_256F_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_256F_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_256f_simple.c ) - + add_library(sphincs_shake256_256f_simple_clean OBJECT sig_sphincs_shake256_256f_simple.c pqclean_sphincs-shake256-256f-simple_clean/address.c pqclean_sphincs-shake256-256f-simple_clean/fors.c pqclean_sphincs-shake256-256f-simple_clean/hash_shake256.c pqclean_sphincs-shake256-256f-simple_clean/sign.c pqclean_sphincs-shake256-256f-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-256f-simple_clean/utils.c pqclean_sphincs-shake256-256f-simple_clean/wots.c) + target_include_directories(sphincs_shake256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_256f_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-256f-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_256s_robust) - - set(SRCS_SPHINCS_SHAKE256_256S_ROBUST_CLEAN_SRCS pqclean_sphincs_shake256_256s_robust_clean/address.c pqclean_sphincs_shake256_256s_robust_clean/fors.c pqclean_sphincs_shake256_256s_robust_clean/hash_shake256.c pqclean_sphincs_shake256_256s_robust_clean/sign.c pqclean_sphincs_shake256_256s_robust_clean/thash_shake256_robust.c pqclean_sphincs_shake256_256s_robust_clean/utils.c pqclean_sphincs_shake256_256s_robust_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_256S_ROBUST_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_256S_ROBUST_CLEAN_SRCS} sig_sphincs_shake256_256s_robust.c ) - + add_library(sphincs_shake256_256s_robust_clean OBJECT sig_sphincs_shake256_256s_robust.c pqclean_sphincs-shake256-256s-robust_clean/address.c pqclean_sphincs-shake256-256s-robust_clean/fors.c pqclean_sphincs-shake256-256s-robust_clean/hash_shake256.c pqclean_sphincs-shake256-256s-robust_clean/sign.c pqclean_sphincs-shake256-256s-robust_clean/thash_shake256_robust.c pqclean_sphincs-shake256-256s-robust_clean/utils.c pqclean_sphincs-shake256-256s-robust_clean/wots.c) + target_include_directories(sphincs_shake256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_256s_robust_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-256s-robust_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) endif() if(OQS_ENABLE_SIG_sphincs_shake256_256s_simple) - - set(SRCS_SPHINCS_SHAKE256_256S_SIMPLE_CLEAN_SRCS pqclean_sphincs_shake256_256s_simple_clean/address.c pqclean_sphincs_shake256_256s_simple_clean/fors.c pqclean_sphincs_shake256_256s_simple_clean/hash_shake256.c pqclean_sphincs_shake256_256s_simple_clean/sign.c pqclean_sphincs_shake256_256s_simple_clean/thash_shake256_simple.c pqclean_sphincs_shake256_256s_simple_clean/utils.c pqclean_sphincs_shake256_256s_simple_clean/wots.c) - - -set(SRCS_SPHINCS_SHAKE256_256S_SIMPLE_CLEAN_SRCS ${SRCS_SPHINCS_SHAKE256_256S_SIMPLE_CLEAN_SRCS} sig_sphincs_shake256_256s_simple.c ) - -endif() - - - - -add_library(sphincs_haraka_128f_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_128F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_128f_robust_clean) -target_compile_options(sphincs_haraka_128f_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_128f_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_128F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_128f_simple_clean) -target_compile_options(sphincs_haraka_128f_simple_clean PUBLIC ) - - - -add_library(sphincs_haraka_128s_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_128S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_128s_robust_clean) -target_compile_options(sphincs_haraka_128s_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_128s_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_128S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_128s_simple_clean) -target_compile_options(sphincs_haraka_128s_simple_clean PUBLIC ) - - - -add_library(sphincs_haraka_192f_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_192F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_192f_robust_clean) -target_compile_options(sphincs_haraka_192f_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_192f_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_192F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_192f_simple_clean) -target_compile_options(sphincs_haraka_192f_simple_clean PUBLIC ) - - - -add_library(sphincs_haraka_192s_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_192S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_192s_robust_clean) -target_compile_options(sphincs_haraka_192s_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_192s_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_192S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_192s_simple_clean) -target_compile_options(sphincs_haraka_192s_simple_clean PUBLIC ) - - - -add_library(sphincs_haraka_256f_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_256F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_256f_robust_clean) -target_compile_options(sphincs_haraka_256f_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_256f_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_256F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_256f_simple_clean) -target_compile_options(sphincs_haraka_256f_simple_clean PUBLIC ) - - - -add_library(sphincs_haraka_256s_robust_clean OBJECT ${SRCS_SPHINCS_HARAKA_256S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_256s_robust_clean) -target_compile_options(sphincs_haraka_256s_robust_clean PUBLIC ) - - - -add_library(sphincs_haraka_256s_simple_clean OBJECT ${SRCS_SPHINCS_HARAKA_256S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_haraka_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_haraka_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsharaka_256s_simple_clean) -target_compile_options(sphincs_haraka_256s_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_128f_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_128F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_128f_robust_clean) -target_compile_options(sphincs_sha256_128f_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_128f_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_128F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_128f_simple_clean) -target_compile_options(sphincs_sha256_128f_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_128s_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_128S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_128s_robust_clean) -target_compile_options(sphincs_sha256_128s_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_128s_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_128S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_128s_simple_clean) -target_compile_options(sphincs_sha256_128s_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_192f_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_192F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_192f_robust_clean) -target_compile_options(sphincs_sha256_192f_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_192f_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_192F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_192f_simple_clean) -target_compile_options(sphincs_sha256_192f_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_192s_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_192S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_192s_robust_clean) -target_compile_options(sphincs_sha256_192s_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_192s_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_192S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_192s_simple_clean) -target_compile_options(sphincs_sha256_192s_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_256f_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_256F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_256f_robust_clean) -target_compile_options(sphincs_sha256_256f_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_256f_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_256F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_256f_simple_clean) -target_compile_options(sphincs_sha256_256f_simple_clean PUBLIC ) - - - -add_library(sphincs_sha256_256s_robust_clean OBJECT ${SRCS_SPHINCS_SHA256_256S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_256s_robust_clean) -target_compile_options(sphincs_sha256_256s_robust_clean PUBLIC ) - - - -add_library(sphincs_sha256_256s_simple_clean OBJECT ${SRCS_SPHINCS_SHA256_256S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_sha256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_sha256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincssha256_256s_simple_clean) -target_compile_options(sphincs_sha256_256s_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_128f_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_128F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_128f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_128f_robust_clean) -target_compile_options(sphincs_shake256_128f_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_128f_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_128F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_128f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_128f_simple_clean) -target_compile_options(sphincs_shake256_128f_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_128s_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_128S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_128s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_128s_robust_clean) -target_compile_options(sphincs_shake256_128s_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_128s_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_128S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_128s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_128s_simple_clean) -target_compile_options(sphincs_shake256_128s_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_192f_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_192F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_192f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_192f_robust_clean) -target_compile_options(sphincs_shake256_192f_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_192f_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_192F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_192f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_192f_simple_clean) -target_compile_options(sphincs_shake256_192f_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_192s_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_192S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_192s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_192s_robust_clean) -target_compile_options(sphincs_shake256_192s_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_192s_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_192S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_192s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_192s_simple_clean) -target_compile_options(sphincs_shake256_192s_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_256f_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_256F_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_256f_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_256f_robust_clean) -target_compile_options(sphincs_shake256_256f_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_256f_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_256F_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_256f_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_256f_simple_clean) -target_compile_options(sphincs_shake256_256f_simple_clean PUBLIC ) - - - -add_library(sphincs_shake256_256s_robust_clean OBJECT ${SRCS_SPHINCS_SHAKE256_256S_ROBUST_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_256s_robust_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_256s_robust_clean) -target_compile_options(sphincs_shake256_256s_robust_clean PUBLIC ) - - - -add_library(sphincs_shake256_256s_simple_clean OBJECT ${SRCS_SPHINCS_SHAKE256_256S_SIMPLE_CLEAN_SRCS}) -target_include_directories(sphincs_shake256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) -target_include_directories(sphincs_shake256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/sphincs/pqclean_sphincsshake256_256s_simple_clean) -target_compile_options(sphincs_shake256_256s_simple_clean PUBLIC ) - - + add_library(sphincs_shake256_256s_simple_clean OBJECT sig_sphincs_shake256_256s_simple.c pqclean_sphincs-shake256-256s-simple_clean/address.c pqclean_sphincs-shake256-256s-simple_clean/fors.c pqclean_sphincs-shake256-256s-simple_clean/hash_shake256.c pqclean_sphincs-shake256-256s-simple_clean/sign.c pqclean_sphincs-shake256-256s-simple_clean/thash_shake256_simple.c pqclean_sphincs-shake256-256s-simple_clean/utils.c pqclean_sphincs-shake256-256s-simple_clean/wots.c) + target_include_directories(sphincs_shake256_256s_simple_clean PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories(sphincs_shake256_256s_simple_clean PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_sphincs-shake256-256s-simple_clean) + set(_SPHINCS_OBJS ${_SPHINCS_OBJS} $) +endif() +set(SPHINCS_OBJS ${_SPHINCS_OBJS} PARENT_SCOPE) diff --git a/src/sig/sphincs/sig_sphincs_haraka_128f_robust.c b/src/sig/sphincs/sig_sphincs_haraka_128f_robust.c index 99dd84691f..5abe035e29 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_128f_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_128f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_128f_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_128f_robust) OQS_SIG *OQS_SIG_sphincs_haraka_128f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_128f_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_128f_simple.c b/src/sig/sphincs/sig_sphincs_haraka_128f_simple.c index 6df27fcf2d..684042a401 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_128f_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_128f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_128f_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_128f_simple) OQS_SIG *OQS_SIG_sphincs_haraka_128f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_128f_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_128s_robust.c b/src/sig/sphincs/sig_sphincs_haraka_128s_robust.c index 5aefdcc29f..db0748f811 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_128s_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_128s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_128s_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_128s_robust) OQS_SIG *OQS_SIG_sphincs_haraka_128s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_128s_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_128s_simple.c b/src/sig/sphincs/sig_sphincs_haraka_128s_simple.c index 4b34313cd5..8e73d47fb8 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_128s_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_128s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_128s_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_128s_simple) OQS_SIG *OQS_SIG_sphincs_haraka_128s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_128s_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA128SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_192f_robust.c b/src/sig/sphincs/sig_sphincs_haraka_192f_robust.c index 1170330013..40ad921e11 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_192f_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_192f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_192f_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_192f_robust) OQS_SIG *OQS_SIG_sphincs_haraka_192f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_192f_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_192f_simple.c b/src/sig/sphincs/sig_sphincs_haraka_192f_simple.c index 8865135356..b9f15c6358 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_192f_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_192f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_192f_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_192f_simple) OQS_SIG *OQS_SIG_sphincs_haraka_192f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_192f_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_192s_robust.c b/src/sig/sphincs/sig_sphincs_haraka_192s_robust.c index ac46aefbe1..60c52b39f1 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_192s_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_192s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_192s_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_192s_robust) OQS_SIG *OQS_SIG_sphincs_haraka_192s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_192s_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_192s_simple.c b/src/sig/sphincs/sig_sphincs_haraka_192s_simple.c index 7378b03671..ebc923620f 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_192s_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_192s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_192s_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_192s_simple) OQS_SIG *OQS_SIG_sphincs_haraka_192s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_192s_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA192SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_256f_robust.c b/src/sig/sphincs/sig_sphincs_haraka_256f_robust.c index 43fd2c2697..3efe635828 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_256f_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_256f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_256f_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_256f_robust) OQS_SIG *OQS_SIG_sphincs_haraka_256f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_256f_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_256f_simple.c b/src/sig/sphincs/sig_sphincs_haraka_256f_simple.c index 48a130db1c..feb38aa362 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_256f_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_256f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_256f_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_256f_simple) OQS_SIG *OQS_SIG_sphincs_haraka_256f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_256f_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_256s_robust.c b/src/sig/sphincs/sig_sphincs_haraka_256s_robust.c index 13dee804c4..fa6548b037 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_256s_robust.c +++ b/src/sig/sphincs/sig_sphincs_haraka_256s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_256s_robust +#if defined(OQS_ENABLE_SIG_sphincs_haraka_256s_robust) OQS_SIG *OQS_SIG_sphincs_haraka_256s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_256s_robust_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_haraka_256s_simple.c b/src/sig/sphincs/sig_sphincs_haraka_256s_simple.c index 1880f77fe4..c6feb89c72 100644 --- a/src/sig/sphincs/sig_sphincs_haraka_256s_simple.c +++ b/src/sig/sphincs/sig_sphincs_haraka_256s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_haraka_256s_simple +#if defined(OQS_ENABLE_SIG_sphincs_haraka_256s_simple) OQS_SIG *OQS_SIG_sphincs_haraka_256s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_haraka_256s_simple_new() { return sig; } - int PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSHARAKA256SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_128f_robust.c b/src/sig/sphincs/sig_sphincs_sha256_128f_robust.c index 305a182bb9..9e63e6ca7f 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_128f_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_128f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_128f_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_128f_robust) OQS_SIG *OQS_SIG_sphincs_sha256_128f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_128f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_128f_simple.c b/src/sig/sphincs/sig_sphincs_sha256_128f_simple.c index 8b284dc22b..53ea26c551 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_128f_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_128f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_128f_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_128f_simple) OQS_SIG *OQS_SIG_sphincs_sha256_128f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_128f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_128s_robust.c b/src/sig/sphincs/sig_sphincs_sha256_128s_robust.c index f779b4da9c..23a88962e1 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_128s_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_128s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_128s_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_128s_robust) OQS_SIG *OQS_SIG_sphincs_sha256_128s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_128s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_128s_simple.c b/src/sig/sphincs/sig_sphincs_sha256_128s_simple.c index 765f0d5155..a73bcb1b17 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_128s_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_128s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_128s_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_128s_simple) OQS_SIG *OQS_SIG_sphincs_sha256_128s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_128s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256128SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_192f_robust.c b/src/sig/sphincs/sig_sphincs_sha256_192f_robust.c index cbdde96be0..08aeb7adfb 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_192f_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_192f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_192f_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_192f_robust) OQS_SIG *OQS_SIG_sphincs_sha256_192f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_192f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_192f_simple.c b/src/sig/sphincs/sig_sphincs_sha256_192f_simple.c index 8557ee87be..6575d81d0c 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_192f_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_192f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_192f_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_192f_simple) OQS_SIG *OQS_SIG_sphincs_sha256_192f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_192f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_192s_robust.c b/src/sig/sphincs/sig_sphincs_sha256_192s_robust.c index a3e84461ac..3d15775758 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_192s_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_192s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_192s_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_192s_robust) OQS_SIG *OQS_SIG_sphincs_sha256_192s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_192s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_192s_simple.c b/src/sig/sphincs/sig_sphincs_sha256_192s_simple.c index b6ca3ff632..de7cc6ef3e 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_192s_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_192s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_192s_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_192s_simple) OQS_SIG *OQS_SIG_sphincs_sha256_192s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_192s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256192SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_256f_robust.c b/src/sig/sphincs/sig_sphincs_sha256_256f_robust.c index e89306fa92..7dcc226075 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_256f_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_256f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_256f_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_256f_robust) OQS_SIG *OQS_SIG_sphincs_sha256_256f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_256f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_256f_simple.c b/src/sig/sphincs/sig_sphincs_sha256_256f_simple.c index b9f661993a..226a563c9e 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_256f_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_256f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_256f_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_256f_simple) OQS_SIG *OQS_SIG_sphincs_sha256_256f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_256f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_256s_robust.c b/src/sig/sphincs/sig_sphincs_sha256_256s_robust.c index dba33e8848..0a6dc1b4b9 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_256s_robust.c +++ b/src/sig/sphincs/sig_sphincs_sha256_256s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_256s_robust +#if defined(OQS_ENABLE_SIG_sphincs_sha256_256s_robust) OQS_SIG *OQS_SIG_sphincs_sha256_256s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_256s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_sha256_256s_simple.c b/src/sig/sphincs/sig_sphincs_sha256_256s_simple.c index bfe07e4293..a9b57a689a 100644 --- a/src/sig/sphincs/sig_sphincs_sha256_256s_simple.c +++ b/src/sig/sphincs/sig_sphincs_sha256_256s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_sha256_256s_simple +#if defined(OQS_ENABLE_SIG_sphincs_sha256_256s_simple) OQS_SIG *OQS_SIG_sphincs_sha256_256s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_sha256_256s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_128f_robust.c b/src/sig/sphincs/sig_sphincs_shake256_128f_robust.c index 42d107eef8..fc9e40493f 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_128f_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_128f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_128f_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_128f_robust) OQS_SIG *OQS_SIG_sphincs_shake256_128f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_128f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_128f_simple.c b/src/sig/sphincs/sig_sphincs_shake256_128f_simple.c index ac94b9fb9d..5654ff94e4 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_128f_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_128f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_128f_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_128f_simple) OQS_SIG *OQS_SIG_sphincs_shake256_128f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_128f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_128s_robust.c b/src/sig/sphincs/sig_sphincs_shake256_128s_robust.c index 835c945a94..99462d9a4d 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_128s_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_128s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_128s_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_128s_robust) OQS_SIG *OQS_SIG_sphincs_shake256_128s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_128s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_128s_simple.c b/src/sig/sphincs/sig_sphincs_shake256_128s_simple.c index 05cb78b864..c7699dba7e 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_128s_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_128s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_128s_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_128s_simple) OQS_SIG *OQS_SIG_sphincs_shake256_128s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_128s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256128SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_192f_robust.c b/src/sig/sphincs/sig_sphincs_shake256_192f_robust.c index ae5c044216..7f4d9b0ab2 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_192f_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_192f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_192f_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_192f_robust) OQS_SIG *OQS_SIG_sphincs_shake256_192f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_192f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_192f_simple.c b/src/sig/sphincs/sig_sphincs_shake256_192f_simple.c index 0e1f711ef6..16857d9cc2 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_192f_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_192f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_192f_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_192f_simple) OQS_SIG *OQS_SIG_sphincs_shake256_192f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_192f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_192s_robust.c b/src/sig/sphincs/sig_sphincs_shake256_192s_robust.c index b08f211352..836710393b 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_192s_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_192s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_192s_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_192s_robust) OQS_SIG *OQS_SIG_sphincs_shake256_192s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_192s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_192s_simple.c b/src/sig/sphincs/sig_sphincs_shake256_192s_simple.c index 9af31a77a6..306d4b9da4 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_192s_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_192s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_192s_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_192s_simple) OQS_SIG *OQS_SIG_sphincs_shake256_192s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_192s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256192SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_256f_robust.c b/src/sig/sphincs/sig_sphincs_shake256_256f_robust.c index 1e07f20e7d..f95318fd59 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_256f_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_256f_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_256f_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_256f_robust) OQS_SIG *OQS_SIG_sphincs_shake256_256f_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_256f_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_256f_simple.c b/src/sig/sphincs/sig_sphincs_shake256_256f_simple.c index 1698cd35bc..6dd858507b 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_256f_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_256f_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_256f_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_256f_simple) OQS_SIG *OQS_SIG_sphincs_shake256_256f_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_256f_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256FSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_256s_robust.c b/src/sig/sphincs/sig_sphincs_shake256_256s_robust.c index 66daa17e9e..263df7563d 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_256s_robust.c +++ b/src/sig/sphincs/sig_sphincs_shake256_256s_robust.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_256s_robust +#if defined(OQS_ENABLE_SIG_sphincs_shake256_256s_robust) OQS_SIG *OQS_SIG_sphincs_shake256_256s_robust_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_256s_robust_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SROBUST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/src/sig/sphincs/sig_sphincs_shake256_256s_simple.c b/src/sig/sphincs/sig_sphincs_shake256_256s_simple.c index 138dbf5f12..b983bce845 100644 --- a/src/sig/sphincs/sig_sphincs_shake256_256s_simple.c +++ b/src/sig/sphincs/sig_sphincs_shake256_256s_simple.c @@ -2,7 +2,7 @@ #include -#ifdef OQS_ENABLE_SIG_sphincs_shake256_256s_simple +#if defined(OQS_ENABLE_SIG_sphincs_shake256_256s_simple) OQS_SIG *OQS_SIG_sphincs_shake256_256s_simple_new() { @@ -27,24 +27,19 @@ OQS_SIG *OQS_SIG_sphincs_shake256_256s_simple_new() { return sig; } - int PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); int PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); - OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_keypair(public_key, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); } OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { - return (OQS_STATUS) PQCLEAN_SPHINCSSHAKE256256SSIMPLE_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key); } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b5b2132ba5..40aaef05ad 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -32,36 +32,15 @@ if(NOT WIN32) execute_process(COMMAND ${PROJECT_SOURCE_DIR}/scripts/git_commit.sh OUTPUT_VARIABLE GIT_COMMIT) add_definitions(-DOQS_COMPILE_GIT_COMMIT="${GIT_COMMIT}") - # These functions tested here are - # not part of the liboqs API. - include(${PROJECT_SOURCE_DIR}/src/common/crypto_impl.cmake) - - add_executable(test_aes test_aes.c ${AES_IMPL} ${PROJECT_SOURCE_DIR}/src/common/common.c) + add_executable(test_aes test_aes.c $) target_link_libraries(test_aes PRIVATE ${INTERNAL_TEST_DEPS}) -if(DEFINED CPUFEATURES_INCLUDE_DIR) - target_include_directories(test_aes PRIVATE ${CPUFEATURES_INCLUDE_DIR}) -endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(test_aes PRIVATE ${CPUFEATURES_LIBRARY}) -endif() - add_executable(test_hash test_hash.c ${SHA2_IMPL} ${PROJECT_SOURCE_DIR}/src/common/common.c) + add_executable(test_hash test_hash.c $) target_link_libraries(test_hash PRIVATE ${INTERNAL_TEST_DEPS}) -if(DEFINED CPUFEATURES_INCLUDE_DIR) - target_include_directories(test_hash PRIVATE ${CPUFEATURES_INCLUDE_DIR}) -endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(test_hash PRIVATE ${CPUFEATURES_LIBRARY}) -endif() - add_executable(test_sha3 test_sha3.c ${SHA3_IMPL} ${PROJECT_SOURCE_DIR}/src/common/common.c) + add_executable(test_sha3 test_sha3.c $) target_link_libraries(test_sha3 PRIVATE ${INTERNAL_TEST_DEPS}) -if(DEFINED CPUFEATURES_INCLUDE_DIR) - target_include_directories(test_sha3 PRIVATE ${CPUFEATURES_INCLUDE_DIR}) -endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(test_sha3 PRIVATE ${CPUFEATURES_LIBRARY}) -endif() + set(UNIX_TESTS test_aes test_hash test_sha3) set(PYTHON3_EXEC python3) @@ -77,15 +56,9 @@ set(API_TEST_DEPS oqs ${LIBM}) # KEM API tests add_executable(example_kem example_kem.c) target_link_libraries(example_kem PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(example_kem PUBLIC ${CPUFEATURES_LIBRARY}) -endif() add_executable(kat_kem kat_kem.c) target_link_libraries(kat_kem PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(kat_kem PRIVATE ${CPUFEATURES_LIBRARY}) -endif() add_executable(test_kem test_kem.c) if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU")) @@ -93,28 +66,16 @@ if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU") else () target_link_libraries(test_kem PRIVATE ${API_TEST_DEPS}) endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(test_kem PRIVATE ${CPUFEATURES_LIBRARY}) -endif() add_executable(speed_kem speed_kem.c) target_link_libraries(speed_kem PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(speed_kem PRIVATE ${CPUFEATURES_LIBRARY}) -endif() # SIG API tests add_executable(example_sig example_sig.c) target_link_libraries(example_sig PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(example_sig PRIVATE ${CPUFEATURES_LIBRARY}) -endif() add_executable(kat_sig kat_sig.c) target_link_libraries(kat_sig PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(kat_sig PRIVATE ${CPUFEATURES_LIBRARY}) -endif() add_executable(test_sig test_sig.c) if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU")) @@ -122,15 +83,9 @@ if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU") else () target_link_libraries(test_sig PRIVATE ${API_TEST_DEPS}) endif() -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(test_sig PRIVATE ${CPUFEATURES_LIBRARY}) -endif() add_executable(speed_sig speed_sig.c) target_link_libraries(speed_sig PRIVATE ${API_TEST_DEPS}) -if(DEFINED CPUFEATURES_LIBRARY) - target_link_libraries(speed_sig PRIVATE ${CPUFEATURES_LIBRARY}) -endif() # TODO: Get CMake to find python. # and set PATH variable in Windows diff --git a/third_party/cpu_features/CMakeLists.txt.in b/third_party/cpu_features/CMakeLists.txt.in deleted file mode 100644 index 3180ec44c5..0000000000 --- a/third_party/cpu_features/CMakeLists.txt.in +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required (VERSION 3.5) - -project(cpu_features-download NONE) - -include(ExternalProject) -ExternalProject_Add(cpu_features - GIT_REPOSITORY https://github.com/google/cpu_features.git - GIT_TAG 339bfd32be1285877ff517cba8b82ce72e946afd - SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/cpu_features-src" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/cpu_features-build" - CMAKE_ARGS "${CPU_FEATURES-ARGS}" - INSTALL_COMMAND "" - TEST_COMMAND "" -) diff --git a/third_party/cpu_features/add_lib.cmake b/third_party/cpu_features/add_lib.cmake deleted file mode 100644 index 4c7c9e3d7c..0000000000 --- a/third_party/cpu_features/add_lib.cmake +++ /dev/null @@ -1,34 +0,0 @@ -set(CPU_FEATURES-ARGS -DCMAKE_POLICY_DEFAULT_CMP0063=NEW - -DCMAKE_C_VISIBILITY_PRESET=hidden - -DBUILD_PIC=ON) -if(CMAKE_CROSSCOMPILING) - set(CPU_FEATURES-ARGS ${CPU_FEATURES-ARGS} - -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} - -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}) - if(CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(CPU_FEATURES-ARGS ${CPU_FEATURES-ARGS} - -DCMAKE_RC_COMPILER=${CMAKE_RC_COMPILER}) - endif() -endif() -configure_file(${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/cpu_features-download/CMakeLists.txt) - -execute_process(COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} . - RESULT_VARIABLE CPUFEATURES_STEP_RESULT - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpu_features-download) -if(CPUFEATURES_STEP_RESULT) - message(FATAL_ERROR "CMake step for cpu_features failed: ${CPUFEATURES_STEP_RESULT}") -endif() -execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE CPUFEATURES_STEP_RESULT - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpu_features-download) -if(CPUFEATURES_STEP_RESULT) - message(FATAL_ERROR "Build step for cpu_features failed: ${CPUFEATURES_STEP_RESULT}") -endif() - -set(CPUFEATURES_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/cpu_features-src/include") -find_library(CPUFEATURES_LIBRARY - NAMES cpu_features - PATHS "${CMAKE_CURRENT_BINARY_DIR}/cpu_features-build" - NO_DEFAULT_PATH) -add_library(CpuFeature::cpu_features UNKNOWN IMPORTED GLOBAL) -set_target_properties(CpuFeature::cpu_features PROPERTIES IMPORTED_LOCATION "${CPUFEATURES_LIBRARY}")