diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake
index 60e4b098a1..d499d99a3b 100644
--- a/.CMake/alg_support.cmake
+++ b/.CMake/alg_support.cmake
@@ -214,6 +214,38 @@ cmake_dependent_option(OQS_ENABLE_SIG_cross_rsdpg_256_balanced "" ON "OQS_ENABLE
cmake_dependent_option(OQS_ENABLE_SIG_cross_rsdpg_256_fast "" ON "OQS_ENABLE_SIG_CROSS" OFF)
cmake_dependent_option(OQS_ENABLE_SIG_cross_rsdpg_256_small "" ON "OQS_ENABLE_SIG_CROSS" OFF)
+option(OQS_ENABLE_SIG_QRUOV "Enable qruov algorithm family" ON)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q7L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q7L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q7L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q7L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q7L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q7L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L3aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L3shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L10aes "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L10shake "" ON "OQS_ENABLE_SIG_QRUOV" OFF)
+
option(OQS_ENABLE_SIG_UOV "Enable uov algorithm family" ON)
cmake_dependent_option(OQS_ENABLE_SIG_uov_ov_Is "" ON "OQS_ENABLE_SIG_UOV" OFF)
cmake_dependent_option(OQS_ENABLE_SIG_uov_ov_Ip "" ON "OQS_ENABLE_SIG_UOV" OFF)
@@ -887,6 +919,187 @@ if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS))
endif()
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q7L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q7L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q7L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q7L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q31L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q31L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q31L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q31L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q31L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q127L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q127L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q127L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_1q127L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_1q127L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q7L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q7L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q7L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q7L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q31L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q31L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q31L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q31L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q31L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q127L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q127L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q127L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_3q127L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_3q127L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q7L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q7L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q7L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q7L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q31L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q31L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q31L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q31L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q31L10shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L3aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q127L3aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L3shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q127L3shake" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L10aes_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q127L10aes" OFF)
+endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS))
+ cmake_dependent_option(OQS_ENABLE_SIG_qruov_5q127L10shake_avx2 "" ON "OQS_ENABLE_SIG_qruov_5q127L10shake" OFF)
+endif()
+endif()
+
+
if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS AND OQS_USE_ARM_NEON_INSTRUCTIONS))
cmake_dependent_option(OQS_ENABLE_SIG_uov_ov_Is_neon "" ON "OQS_ENABLE_SIG_uov_ov_Is" OFF)
diff --git a/.github/workflows/basic.yml b/.github/workflows/basic.yml
index 009ad4649e..ed8df094cb 100644
--- a/.github/workflows/basic.yml
+++ b/.github/workflows/basic.yml
@@ -30,6 +30,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # pin@v4
+ - name: Ensure the build system can reach everything that ships
+ run: python3 -m pytest --verbose tests/test_cmake_option_coverage.py tests/test_kats_json.py
- name: Ensure code conventions are upheld
run: python3 -m pytest --verbose tests/test_code_conventions.py
- name: Check that doxygen can parse the documentation
diff --git a/.github/workflows/extended.yml b/.github/workflows/extended.yml
index 983bd942ba..ac282077bd 100644
--- a/.github/workflows/extended.yml
+++ b/.github/workflows/extended.yml
@@ -96,6 +96,135 @@ jobs:
timeout-minutes: 360
run: mkdir -p tmp && python3 -m pytest --verbose ${{ matrix.PYTEST_ARGS }}
+ # QR-UOV ships three implementations per parameter set, and all three
+ # produce identical KAT vectors. A build that silently fell back to `ref`
+ # would therefore pass every existing test while covering nothing, which is
+ # how `opt` came to ship for 30 parameter sets without being compiled
+ # anywhere. Each job below asserts which implementation it actually got
+ # before it runs anything.
+ #
+ # All three set OQS_DIST_BUILD=OFF deliberately. Under a dist build the
+ # generated wrapper keeps a run-time CPU check and falls back to `ref` when
+ # the host lacks AVX2, BMI2 or AES, so the compile-time define alone would
+ # not tell us which code executed. With the dist build off there is no
+ # run-time branch and the define does imply the code path, which is what
+ # makes the assertion meaningful.
+ qruov-implementations:
+ name: QR-UOV ${{ matrix.name }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: ref
+ # Portable C, and this family's default implementation.
+ IMPLEMENTATION: ref
+ CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=generic -DOQS_USE_AVX2_INSTRUCTIONS=OFF -DOQS_USE_BMI2_INSTRUCTIONS=OFF -DOQS_USE_AES_INSTRUCTIONS=OFF
+ - name: avx2
+ # The optimised x86-64 path.
+ IMPLEMENTATION: avx2
+ CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=auto -DOQS_USE_AVX2_INSTRUCTIONS=ON -DOQS_USE_BMI2_INSTRUCTIONS=ON -DOQS_USE_AES_INSTRUCTIONS=ON
+ - name: opt
+ # Ships but is not selectable through any option: see
+ # tests/test_cmake_option_coverage.py. Reached here only by
+ # setting the cache variables directly, so that the sources in the
+ # tarball are still built and KAT-checked on x86-64 while the
+ # ARM64 behaviour is investigated. This says nothing about ARM64.
+ IMPLEMENTATION: opt
+ CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=generic -DOQS_USE_AVX2_INSTRUCTIONS=OFF -DOQS_USE_BMI2_INSTRUCTIONS=OFF -DOQS_USE_AES_INSTRUCTIONS=OFF
+ container:
+ image: openquantumsafe/ci-ubuntu-latest:latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # pin@v4
+ - name: Set the opt cache variables
+ if: matrix.IMPLEMENTATION == 'opt'
+ id: force_opt
+ run: |
+ set -eu
+ # Scheme names are matched as [A-Za-z0-9]+, which keeps anything
+ # that reaches the shell below to that character set.
+ schemes=$(grep -oE 'OQS_ENABLE_SIG_qruov_[A-Za-z0-9]+_avx2' .CMake/alg_support.cmake \
+ | sed -e 's/^OQS_ENABLE_SIG_qruov_//' -e 's/_avx2$//' | sort -u)
+ count=$(printf '%s\n' "$schemes" | grep -c . || true)
+ if [ "$count" -eq 0 ]; then
+ echo "Found no QR-UOV schemes in .CMake/alg_support.cmake" >&2
+ exit 1
+ fi
+ flags=""
+ for scheme in $schemes; do
+ flags="$flags -DOQS_ENABLE_SIG_qruov_${scheme}_opt=ON"
+ done
+ echo "flags=$flags" >> "$GITHUB_OUTPUT"
+ - name: Configure
+ env:
+ FORCE_OPT: ${{ steps.force_opt.outputs.flags }}
+ run: |
+ mkdir build && cd build
+ cmake -GNinja -DOQS_MINIMAL_BUILD="SIG_qruov" ${{ matrix.CMAKE_ARGS }} $FORCE_OPT .. \
+ && cmake -LA -N ..
+ - name: Confirm the intended implementation was selected
+ env:
+ IMPLEMENTATION: ${{ matrix.IMPLEMENTATION }}
+ run: |
+ set -eu
+ header=build/include/oqs/oqsconfig.h
+ # helpers.py reads this same path to decide what is enabled, so if
+ # it is missing every KAT would skip and pytest would still exit 0.
+ test -s "$header" || { echo "missing or empty $header" >&2; exit 1; }
+
+ # Without this the avx2 assertion below would be vacuous: a dist
+ # build dispatches at run time and falls back to ref on a host
+ # without the instructions, so the define would not imply the path.
+ if grep -qE '^#define OQS_DIST_BUILD' "$header"; then
+ echo "OQS_DIST_BUILD is set; the implementation would be chosen at run time" >&2
+ exit 1
+ fi
+
+ # `|| true` would also swallow a real grep error (exit 2) and
+ # yield an empty string, and `[ "" -ne 0 ]` inside an `if` is read
+ # as false rather than tripping `set -e`. Tolerate only "no match".
+ count_impl () {
+ grep -cE "^#define OQS_ENABLE_SIG_qruov_[A-Za-z0-9]+_$1 " "$header" || [ $? -eq 1 ]
+ }
+ # `ref` is the family default, so it is carried by the bare scheme
+ # option rather than by a define of its own.
+ schemes=$(grep -cE "^#define OQS_ENABLE_SIG_qruov_[A-Za-z0-9]+ " "$header" || [ $? -eq 1 ])
+ opt=$(count_impl opt)
+ avx2=$(count_impl avx2)
+ echo "schemes=$schemes opt=$opt avx2=$avx2 expected=$IMPLEMENTATION"
+
+ if [ "$schemes" -eq 0 ]; then
+ echo "No QR-UOV schemes were enabled at all" >&2
+ exit 1
+ fi
+
+ case "$IMPLEMENTATION" in
+ ref)
+ [ "$opt" -eq 0 ] && [ "$avx2" -eq 0 ] \
+ || { echo "Wanted ref only, got opt=$opt avx2=$avx2" >&2; exit 1; }
+ ;;
+ avx2)
+ [ "$avx2" -eq "$schemes" ] && [ "$opt" -eq 0 ] \
+ || { echo "Wanted avx2 for all $schemes schemes, got avx2=$avx2 opt=$opt" >&2; exit 1; }
+ ;;
+ opt)
+ # The wrapper selects with `#if _opt / #elif _avx2`, so opt wins
+ # wherever both are defined. Keeping avx2 off states the intent
+ # rather than relying on that ordering.
+ [ "$opt" -eq "$schemes" ] && [ "$avx2" -eq 0 ] \
+ || { echo "Wanted opt for all $schemes schemes, got opt=$opt avx2=$avx2" >&2; exit 1; }
+ ;;
+ esac
+ - name: Build
+ run: ninja
+ working-directory: build
+ - name: Run tests
+ # Matches nistkat-x64, which is the other job that runs test_kat_all:
+ # 30 parameter sets at 100 vectors each is slow on ref in particular.
+ timeout-minutes: 360
+ run: mkdir -p tmp && python3 -m pytest --verbose --numprocesses=auto -k QRUOV tests/test_kat.py tests/test_kat_all.py
+
libjadecheck:
name: Check libjade code is properly integrated
runs-on: ubuntu-latest
@@ -166,7 +295,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 60
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_acvp_vectors.py --numprocesses=logical --dist load --maxschedchunk=1 --ignore=tests/test_distbuild.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --maxprocesses=10
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_acvp_vectors.py --numprocesses=logical --dist load --maxschedchunk=1 --ignore=tests/test_distbuild.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --maxprocesses=10
address-sanitizer-stfl:
name: ASAN with STFL key generation
@@ -183,7 +312,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 60
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_distbuild.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --numprocesses=logical --dist load --maxschedchunk=1 --maxprocesses=10
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_distbuild.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --numprocesses=logical --dist load --maxschedchunk=1 --maxprocesses=10
stfl-tests:
name: STFL key generation tests
@@ -215,7 +344,7 @@ jobs:
timeout-minutes: 90
env:
OQS_TEST_SIG_CTX_STEP: "255"
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_acvp_vectors.py --numprocesses=auto --ignore=tests/test_alg_info.py --ignore=tests/test_kat_all.py
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_acvp_vectors.py --numprocesses=auto --ignore=tests/test_alg_info.py --ignore=tests/test_kat_all.py
slhdsa-openssl330-test:
name: SLH-DSA with OpenSSL 3.3.0
@@ -261,7 +390,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 90
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --numprocesses=logical --dist load --maxschedchunk=1
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --numprocesses=logical --dist load --maxschedchunk=1
slhdsa-linux-tests:
name: SLH-DSA Linux platform tests
@@ -302,7 +431,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 90
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --numprocesses=auto ${{ matrix.PYTEST_ARGS }}
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --numprocesses=auto ${{ matrix.PYTEST_ARGS }}
slhdsa-windows-arm64-tests:
name: SLH-DSA Windows arm64 tests
@@ -340,7 +469,7 @@ jobs:
run: pip.exe install --require-hashes -r .github\workflows\requirements.txt
- name: Run tests
run: |
- python -m pytest --numprocesses=logical --dist load --maxschedchunk=1 -vv --maxfail=10 --ignore=tests/test_code_conventions.py --ignore=tests/test_kat_all.py --durations=0 --junitxml=build\test-results\pytest\test-results.xml
+ python -m pytest --numprocesses=logical --dist load --maxschedchunk=1 -vv --maxfail=10 --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_kat_all.py --durations=0 --junitxml=build\test-results\pytest\test-results.xml
slhdsa-macos-tests:
name: SLH-DSA macOS tests
@@ -366,7 +495,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 60
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_kat_all.py --durations=0 --numprocesses=logical --dist load --maxschedchunk=1
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_kat_all.py --durations=0 --numprocesses=logical --dist load --maxschedchunk=1
acvp-tests:
name: Run ACVP vector tests
@@ -423,7 +552,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 60
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --numprocesses=auto ${{ matrix.PYTEST_ARGS }}
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --numprocesses=auto ${{ matrix.PYTEST_ARGS }}
full-code-coverage:
name: Run full code coverage with ACVP tests
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 750362cc82..0c04caea88 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -112,7 +112,7 @@ jobs:
timeout-minutes: 60
env:
OQS_TEST_SIG_CTX_STEP: "255"
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1 ${{ matrix.PYTEST_ARGS }}
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1 ${{ matrix.PYTEST_ARGS }}
- name: Package .deb
if: matrix.name == 'jammy-std-openssl3'
run: cpack
@@ -192,7 +192,7 @@ jobs:
working-directory: build
- name: Run tests
timeout-minutes: 60
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1
scan_build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index ab57bbf3c1..cfc41e5e38 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -45,5 +45,5 @@ jobs:
- name: Run tests
env:
OQS_TEST_SIG_CTX_STEP: "255"
- run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_kat_all.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1
+ run: mkdir -p tmp && python3 -m pytest --verbose --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_kat_all.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --numprocesses=logical --dist load --maxschedchunk=1
timeout-minutes: 60
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index e620ba66b1..9358128e98 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -45,5 +45,5 @@ jobs:
env:
OQS_TEST_SIG_CTX_STEP: "255"
run: |
- python -m pytest --numprocesses=logical --dist load --maxschedchunk=1 -vv --maxfail=10 --ignore=tests/test_code_conventions.py --ignore=tests/test_kat_all.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --junitxml=build\test-results\pytest\test-results.xml
+ python -m pytest --numprocesses=logical --dist load --maxschedchunk=1 -vv --maxfail=10 --ignore=tests/test_code_conventions.py --ignore=tests/test_cmake_option_coverage.py --ignore=tests/test_kats_json.py --ignore=tests/test_kat_all.py --ignore=tests/test_acvp_vectors.py --ignore=tests/test_wycheproof_vectors.py --junitxml=build\test-results\pytest\test-results.xml
diff --git a/ALGORITHMS.md b/ALGORITHMS.md
index 61669e524c..3d34a1da0e 100644
--- a/ALGORITHMS.md
+++ b/ALGORITHMS.md
@@ -46,6 +46,7 @@ The **OQS tier** column records OQS's own support commitment for each algorithm.
| MAYO | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`PQCMayo/MAYO-C@74de637`](https://github.com/PQCMayo/MAYO-C/commit/74de637a7c4a7f9fafa888183bc05f5cf920cd2d) | [Actively maintained](https://github.com/PQCMayo/MAYO-C) | Tier 3 (Community) | 1, 3, 5 | ✓ | — | portable, ARM64_V8, x86_64 (avx2) |
| ML-DSA | Standardized by [NIST](https://csrc.nist.gov/pubs/fips/204/final) | [`pq-code-package/mldsa-native@834a90d`](https://github.com/pq-code-package/mldsa-native/commit/834a90d5e846ffa1e1611bd24e160bb2e9b86d35) | [Actively maintained](https://github.com/pq-code-package/mldsa-native) | Tier 2 (Supported) | 2, 3, 5 | ✓ | — | portable, ARM64_V8, x86_64 (avx2+bmi2+popcnt) |
| MQOM | Under [NIST](https://csrc.nist.gov/projects/pqc-dig-sig) consideration | [`mqom/mqom-v3@df26239`](https://github.com/mqom/mqom-v3/commit/df26239dd22f194371003f403ec1a9920772b769) | [Actively maintained](https://github.com/mqom/mqom-v3/blob/main/integration/liboqs/SUPPORT.md) | Tier 3 (Community) | 1, 3, 5 | ✓ | — | portable, ARM64_V8 (sha3), x86_64 (aes+avx2) |
+| QR-UOV | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`0rlych1kk4/round3@df619f4`](https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d) | TBD | Tier 3 (Community) | 1, 3, 5 | — | — | portable, x86_64 (aes+avx2+bmi2) |
| SLH-DSA | Standardized by [NIST](https://csrc.nist.gov/pubs/fips/205/final) | [`pq-code-package/slhdsa-c@a0fc1ff`](https://github.com/pq-code-package/slhdsa-c/commit/a0fc1ff253930060d0246aebca06c2538eb92b88) | Best effort | Tier 3 (Community) | 1, 3, 5 | — | — | portable |
| SNOVA | Under [NIST](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-3/spec-files/snova-spec-round3-web.pdf) consideration | [`PQCLAB-SNOVA/S@9b29c1e`](https://github.com/PQCLAB-SNOVA/S/commit/9b29c1e332cbd85757c8d6362a57b9a8c8298a38) | Best effort | Tier 3 (Community) | 1, 3, 5 | ✓ | — | portable, ARM64_V8, x86_64 (avx2) |
| UOV | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`pqov/pqov@fac2ec1`](https://github.com/pqov/pqov/commit/fac2ec1fe6d8ea508eab4b98eb5341e1eed930a4) | Best effort | Tier 3 (Community) | 1, 3, 5 | ✓ | — | portable, ARM64_V8, x86_64 (avx2) |
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7addb4758f..0357cba896 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,6 +284,9 @@ endif()
if(OQS_ENABLE_SIG_CROSS)
set(PUBLIC_HEADERS ${PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/src/sig/cross/sig_cross.h)
endif()
+if(OQS_ENABLE_SIG_QRUOV)
+ set(PUBLIC_HEADERS ${PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/src/sig/qruov/sig_qruov.h)
+endif()
if(OQS_ENABLE_SIG_UOV)
set(PUBLIC_HEADERS ${PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/src/sig/uov/sig_uov.h)
endif()
diff --git a/README.md b/README.md
index 5a680e070c..e02e7c2786 100644
--- a/README.md
+++ b/README.md
@@ -67,6 +67,7 @@ Names of algorithms standardized by NIST — [`ML-KEM`](https://csrc.nist.gov/pu
| MAYO | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`PQCMayo/MAYO-C@74de637`](https://github.com/PQCMayo/MAYO-C/commit/74de637a7c4a7f9fafa888183bc05f5cf920cd2d) | [Actively maintained](https://github.com/PQCMayo/MAYO-C) | Tier 3 (Community) |
| ML-DSA | Standardized by [NIST](https://csrc.nist.gov/pubs/fips/204/final) | [`pq-code-package/mldsa-native@834a90d`](https://github.com/pq-code-package/mldsa-native/commit/834a90d5e846ffa1e1611bd24e160bb2e9b86d35) | [Actively maintained](https://github.com/pq-code-package/mldsa-native) | Tier 2 (Supported) |
| MQOM | Under [NIST](https://csrc.nist.gov/projects/pqc-dig-sig) consideration | [`mqom/mqom-v3@df26239`](https://github.com/mqom/mqom-v3/commit/df26239dd22f194371003f403ec1a9920772b769) | [Actively maintained](https://github.com/mqom/mqom-v3/blob/main/integration/liboqs/SUPPORT.md) | Tier 3 (Community) |
+| QR-UOV | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`0rlych1kk4/round3@df619f4`](https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d) | TBD | Tier 3 (Community) |
| SLH-DSA | Standardized by [NIST](https://csrc.nist.gov/pubs/fips/205/final) | [`pq-code-package/slhdsa-c@a0fc1ff`](https://github.com/pq-code-package/slhdsa-c/commit/a0fc1ff253930060d0246aebca06c2538eb92b88) | Best effort | Tier 3 (Community) |
| SNOVA | Under [NIST](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-3/spec-files/snova-spec-round3-web.pdf) consideration | [`PQCLAB-SNOVA/S@9b29c1e`](https://github.com/PQCLAB-SNOVA/S/commit/9b29c1e332cbd85757c8d6362a57b9a8c8298a38) | Best effort | Tier 3 (Community) |
| UOV | Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures) consideration | [`pqov/pqov@fac2ec1`](https://github.com/pqov/pqov/commit/fac2ec1fe6d8ea508eab4b98eb5341e1eed930a4) | Best effort | Tier 3 (Community) |
diff --git a/docs/algorithms/sig/qruov.md b/docs/algorithms/sig/qruov.md
new file mode 100644
index 0000000000..c593ba0d6f
--- /dev/null
+++ b/docs/algorithms/sig/qruov.md
@@ -0,0 +1,304 @@
+# QR-UOV
+
+- **Algorithm type**: Digital signature scheme.
+- **Main cryptographic assumption**: multivariate quadratic equations, oil and vinegar.
+- **Principal submitters**: Rika Akiyama, Hiroki Furue, Yasuhiko Ikematsu, Fumitaka Hoshino, Koha Kinjo, Haruhisa Kosuge, Satoshi Nakamura, Shingo Orihara, Tsuyoshi Takagi, Kimihiro Yamakoshi.
+- **Authors' website**: https://info.isl.ntt.co.jp/crypt/eng/qr-uov/
+- **Specification version**: NIST Round 3.
+- **Primary Source**:
+ - **Source**: https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d
+ - **Implementation license (SPDX-Identifier)**: 0BSD
+- **Optimized Implementation sources**:
+ - **opt**:
+ - **Source**: https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d
+ - **Implementation license (SPDX-Identifier)**: 0BSD
+ - **avx2**:
+ - **Source**: https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d
+ - **Implementation license (SPDX-Identifier)**: 0BSD
+
+
+## Support
+
+- **Upstream maintenance**: TBD
+- **OQS support tier**: Tier 3
+
+## Parameter set summary
+
+| Parameter set | Parameter set alias | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) |
+|:--------------------:|:----------------------|:-----------------|---------------------:|--------------------------:|--------------------------:|-------------------------:|
+| QRUOV-1q127L10-aes | NA | EUF-CMA | 1 | 11041 | 32 | 541 |
+| QRUOV-1q127L10-shake | NA | EUF-CMA | 1 | 11041 | 32 | 541 |
+| QRUOV-1q127L3-aes | NA | EUF-CMA | 1 | 24256 | 32 | 200 |
+| QRUOV-1q127L3-shake | NA | EUF-CMA | 1 | 24256 | 32 | 200 |
+| QRUOV-1q31L10-aes | NA | EUF-CMA | 1 | 12266 | 32 | 435 |
+| QRUOV-1q31L10-shake | NA | EUF-CMA | 1 | 12266 | 32 | 435 |
+| QRUOV-1q31L3-aes | NA | EUF-CMA | 1 | 23641 | 32 | 157 |
+| QRUOV-1q31L3-shake | NA | EUF-CMA | 1 | 23641 | 32 | 157 |
+| QRUOV-1q7L10-aes | NA | EUF-CMA | 1 | 20641 | 32 | 331 |
+| QRUOV-1q7L10-shake | NA | EUF-CMA | 1 | 20641 | 32 | 331 |
+| QRUOV-3q127L10-aes | NA | EUF-CMA | 3 | 35454 | 32 | 821 |
+| QRUOV-3q127L10-shake | NA | EUF-CMA | 3 | 35454 | 32 | 821 |
+| QRUOV-3q127L3-aes | NA | EUF-CMA | 3 | 71884 | 32 | 292 |
+| QRUOV-3q127L3-shake | NA | EUF-CMA | 3 | 71884 | 32 | 292 |
+| QRUOV-3q31L10-aes | NA | EUF-CMA | 3 | 34391 | 32 | 643 |
+| QRUOV-3q31L10-shake | NA | EUF-CMA | 3 | 34391 | 32 | 643 |
+| QRUOV-3q31L3-aes | NA | EUF-CMA | 3 | 70976 | 32 | 233 |
+| QRUOV-3q31L3-shake | NA | EUF-CMA | 3 | 70976 | 32 | 233 |
+| QRUOV-3q7L10-aes | NA | EUF-CMA | 3 | 55141 | 32 | 489 |
+| QRUOV-3q7L10-shake | NA | EUF-CMA | 3 | 55141 | 32 | 489 |
+| QRUOV-5q127L10-aes | NA | EUF-CMA | 5 | 63541 | 32 | 1039 |
+| QRUOV-5q127L10-shake | NA | EUF-CMA | 5 | 63541 | 32 | 1039 |
+| QRUOV-5q127L3-aes | NA | EUF-CMA | 5 | 173660 | 32 | 392 |
+| QRUOV-5q127L3-shake | NA | EUF-CMA | 5 | 173660 | 32 | 392 |
+| QRUOV-5q31L10-aes | NA | EUF-CMA | 5 | 58516 | 32 | 807 |
+| QRUOV-5q31L10-shake | NA | EUF-CMA | 5 | 58516 | 32 | 807 |
+| QRUOV-5q31L3-aes | NA | EUF-CMA | 5 | 158405 | 32 | 306 |
+| QRUOV-5q31L3-shake | NA | EUF-CMA | 5 | 158405 | 32 | 306 |
+| QRUOV-5q7L10-aes | NA | EUF-CMA | 5 | 135391 | 32 | 662 |
+| QRUOV-5q7L10-shake | NA | EUF-CMA | 5 | 135391 | 32 | 662 |
+
+## QRUOV-1q127L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+ ‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
+
+## QRUOV-1q127L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q127L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q127L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q31L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q31L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q31L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q31L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q7L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-1q7L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q127L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q127L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q127L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q127L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q31L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q31L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q31L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q31L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q7L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-3q7L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q127L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q127L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q127L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q127L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q31L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q31L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q31L3-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q31L3-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q7L10-aes implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## QRUOV-5q7L10-shake implementation characteristics
+
+| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
+|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
+| [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,AES | False | False | False |
+
+Are implementations chosen based on runtime CPU feature detection? **Yes**.
+
+## Explanation of Terms
+
+- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
\ No newline at end of file
diff --git a/docs/algorithms/sig/qruov.yml b/docs/algorithms/sig/qruov.yml
new file mode 100644
index 0000000000..c5e1f318f6
--- /dev/null
+++ b/docs/algorithms/sig/qruov.yml
@@ -0,0 +1,1286 @@
+name: QR-UOV
+type: signature
+principal-submitters:
+- Rika Akiyama
+- Hiroki Furue
+- Yasuhiko Ikematsu
+- Fumitaka Hoshino
+- Koha Kinjo
+- Haruhisa Kosuge
+- Satoshi Nakamura
+- Shingo Orihara
+- Tsuyoshi Takagi
+- Kimihiro Yamakoshi
+crypto-assumption: multivariate quadratic equations, oil and vinegar
+nist-round: 3
+standardization-status: Under [NIST](https://csrc.nist.gov/Projects/pqc-dig-sig/round-3-additional-signatures)
+ consideration
+spec-version: NIST Round 3
+upstream-maintenance: TBD
+upstream-statement-url: null
+oqs-support-tier: 3
+primary-upstream:
+ source: https://github.com/0rlych1kk4/round3/commit/df619f46a6c937c1b14907a933f74ae7d82a202d
+ spdx-license-identifier: 0BSD
+parameter-sets:
+- name: QRUOV-1q127L10-aes
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 11041
+ length-secret-key: 32
+ length-signature: 541
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q127L10-shake
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 11041
+ length-secret-key: 32
+ length-signature: 541
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q127L3-aes
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 24256
+ length-secret-key: 32
+ length-signature: 200
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q127L3-shake
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 24256
+ length-secret-key: 32
+ length-signature: 200
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q31L10-aes
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 12266
+ length-secret-key: 32
+ length-signature: 435
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q31L10-shake
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 12266
+ length-secret-key: 32
+ length-signature: 435
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q31L3-aes
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 23641
+ length-secret-key: 32
+ length-signature: 157
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q31L3-shake
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 23641
+ length-secret-key: 32
+ length-signature: 157
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q7L10-aes
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 20641
+ length-secret-key: 32
+ length-signature: 331
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-1q7L10-shake
+ claimed-nist-level: 1
+ claimed-security: EUF-CMA
+ length-public-key: 20641
+ length-secret-key: 32
+ length-signature: 331
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q127L10-aes
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 35454
+ length-secret-key: 32
+ length-signature: 821
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q127L10-shake
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 35454
+ length-secret-key: 32
+ length-signature: 821
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q127L3-aes
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 71884
+ length-secret-key: 32
+ length-signature: 292
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q127L3-shake
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 71884
+ length-secret-key: 32
+ length-signature: 292
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q31L10-aes
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 34391
+ length-secret-key: 32
+ length-signature: 643
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q31L10-shake
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 34391
+ length-secret-key: 32
+ length-signature: 643
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q31L3-aes
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 70976
+ length-secret-key: 32
+ length-signature: 233
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q31L3-shake
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 70976
+ length-secret-key: 32
+ length-signature: 233
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q7L10-aes
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 55141
+ length-secret-key: 32
+ length-signature: 489
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-3q7L10-shake
+ claimed-nist-level: 3
+ claimed-security: EUF-CMA
+ length-public-key: 55141
+ length-secret-key: 32
+ length-signature: 489
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q127L10-aes
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 63541
+ length-secret-key: 32
+ length-signature: 1039
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q127L10-shake
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 63541
+ length-secret-key: 32
+ length-signature: 1039
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q127L3-aes
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 173660
+ length-secret-key: 32
+ length-signature: 392
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q127L3-shake
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 173660
+ length-secret-key: 32
+ length-signature: 392
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q31L10-aes
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 58516
+ length-secret-key: 32
+ length-signature: 807
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q31L10-shake
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 58516
+ length-secret-key: 32
+ length-signature: 807
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q31L3-aes
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 158405
+ length-secret-key: 32
+ length-signature: 306
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q31L3-shake
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 158405
+ length-secret-key: 32
+ length-signature: 306
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q7L10-aes
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 135391
+ length-secret-key: 32
+ length-signature: 662
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ - AES: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+- name: QRUOV-5q7L10-shake
+ claimed-nist-level: 5
+ claimed-security: EUF-CMA
+ length-public-key: 135391
+ length-secret-key: 32
+ length-signature: 662
+ implementations-switch-on-runtime-cpu-features: true
+ implementations:
+ - upstream: primary-upstream
+ upstream-id: ref
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ default: true
+ - upstream: primary-upstream
+ upstream-id: opt
+ supported-platforms: []
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+ - upstream: primary-upstream
+ upstream-id: avx2
+ supported-platforms:
+ - architecture: x86_64
+ operating_systems:
+ - Linux
+ - Darwin
+ required_flags:
+ - avx2
+ - bmi2
+ - aes
+ common-crypto:
+ - SHA3: liboqs
+ no-secret-dependent-branching-claimed: false
+ no-secret-dependent-branching-checked-by-valgrind: false
+ large-stack-usage: false
+website: https://info.isl.ntt.co.jp/crypt/eng/qr-uov/
diff --git a/docs/cbom.json b/docs/cbom.json
index 05368e3efa..7238c09962 100644
--- a/docs/cbom.json
+++ b/docs/cbom.json
@@ -2,23 +2,23 @@
"$schema": "https://raw.githubusercontent.com/CycloneDX/specification/1.6/schema/bom-1.6.schema.json",
"bomFormat": "CycloneDX",
"specVersion": "1.6",
- "serialNumber": "urn:uuid:f2006179-6bc4-458a-ad7d-6baebcab6e60",
+ "serialNumber": "urn:uuid:8aef1183-a364-451a-be1d-f35fc5b2cef3",
"version": 1,
"metadata": {
- "timestamp": "2026-09-16T07:12:12.278055+00:00",
+ "timestamp": "2026-09-22T16:48:43.819494+00:00",
"component": {
"type": "library",
- "bom-ref": "pkg:github/open-quantum-safe/liboqs@5e97276fc3c1baeb7bff3c6569c9dfd49428b9f1",
+ "bom-ref": "pkg:github/open-quantum-safe/liboqs@078c4d3c73b982de8d7a1665d68073bfdaf48147",
"name": "liboqs",
- "version": "5e97276fc3c1baeb7bff3c6569c9dfd49428b9f1"
+ "version": "078c4d3c73b982de8d7a1665d68073bfdaf48147"
}
},
"components": [
{
"type": "library",
- "bom-ref": "pkg:github/open-quantum-safe/liboqs@5e97276fc3c1baeb7bff3c6569c9dfd49428b9f1",
+ "bom-ref": "pkg:github/open-quantum-safe/liboqs@078c4d3c73b982de8d7a1665d68073bfdaf48147",
"name": "liboqs",
- "version": "5e97276fc3c1baeb7bff3c6569c9dfd49428b9f1"
+ "version": "078c4d3c73b982de8d7a1665d68073bfdaf48147"
},
{
"type": "cryptographic-asset",
@@ -4500,6 +4500,606 @@
}
}
},
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q127L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q127L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q127L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q127L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q127L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q127L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q127L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q127L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q31L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q31L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q31L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q31L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q31L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q31L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q31L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q31L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q7L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q7L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-1q7L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-1q7L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 1,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q127L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q127L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q127L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q127L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q127L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q127L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q127L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q127L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q31L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q31L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q31L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q31L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q31L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q31L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q31L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q31L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q7L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q7L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-3q7L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-3q7L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 3,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q127L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q127L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q127L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q127L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q127L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q127L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q127L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q127L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q31L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q31L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q31L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q31L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q31L3-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q31L3-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q31L3-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q31L3-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q7L10-aes:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q7L10-aes",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
+ {
+ "type": "cryptographic-asset",
+ "bom-ref": "alg:QRUOV-5q7L10-shake:avx2:x86_64",
+ "name": "QR-UOV",
+ "cryptoProperties": {
+ "assetType": "algorithm",
+ "algorithmProperties": {
+ "parameterSetIdentifier": "QRUOV-5q7L10-shake",
+ "primitive": "signature",
+ "executionEnvironment": "software-plain-ram",
+ "cryptoFunctions": [
+ "keygen",
+ "sign",
+ "verify"
+ ],
+ "nistQuantumSecurityLevel": 5,
+ "implementationPlatform": "x86_64"
+ }
+ }
+ },
{
"type": "cryptographic-asset",
"bom-ref": "alg:SLH_DSA_PURE_SHA2_128S:slhdsa-c:generic",
@@ -9807,7 +10407,7 @@
],
"dependencies": [
{
- "ref": "pkg:github/open-quantum-safe/liboqs@5e97276fc3c1baeb7bff3c6569c9dfd49428b9f1",
+ "ref": "pkg:github/open-quantum-safe/liboqs@078c4d3c73b982de8d7a1665d68073bfdaf48147",
"provides": [
"alg:BIKE-L1:master:x86_64",
"alg:BIKE-L3:master:x86_64",
@@ -10033,6 +10633,36 @@
"alg:mqom3_cat5_gf2_shorter_ot:memopt:generic",
"alg:mqom3_cat5_gf2_shorter_ot:avx2:x86_64",
"alg:mqom3_cat5_gf2_shorter_ot:neon:armv8-a",
+ "alg:QRUOV-1q127L10-aes:avx2:x86_64",
+ "alg:QRUOV-1q127L10-shake:avx2:x86_64",
+ "alg:QRUOV-1q127L3-aes:avx2:x86_64",
+ "alg:QRUOV-1q127L3-shake:avx2:x86_64",
+ "alg:QRUOV-1q31L10-aes:avx2:x86_64",
+ "alg:QRUOV-1q31L10-shake:avx2:x86_64",
+ "alg:QRUOV-1q31L3-aes:avx2:x86_64",
+ "alg:QRUOV-1q31L3-shake:avx2:x86_64",
+ "alg:QRUOV-1q7L10-aes:avx2:x86_64",
+ "alg:QRUOV-1q7L10-shake:avx2:x86_64",
+ "alg:QRUOV-3q127L10-aes:avx2:x86_64",
+ "alg:QRUOV-3q127L10-shake:avx2:x86_64",
+ "alg:QRUOV-3q127L3-aes:avx2:x86_64",
+ "alg:QRUOV-3q127L3-shake:avx2:x86_64",
+ "alg:QRUOV-3q31L10-aes:avx2:x86_64",
+ "alg:QRUOV-3q31L10-shake:avx2:x86_64",
+ "alg:QRUOV-3q31L3-aes:avx2:x86_64",
+ "alg:QRUOV-3q31L3-shake:avx2:x86_64",
+ "alg:QRUOV-3q7L10-aes:avx2:x86_64",
+ "alg:QRUOV-3q7L10-shake:avx2:x86_64",
+ "alg:QRUOV-5q127L10-aes:avx2:x86_64",
+ "alg:QRUOV-5q127L10-shake:avx2:x86_64",
+ "alg:QRUOV-5q127L3-aes:avx2:x86_64",
+ "alg:QRUOV-5q127L3-shake:avx2:x86_64",
+ "alg:QRUOV-5q31L10-aes:avx2:x86_64",
+ "alg:QRUOV-5q31L10-shake:avx2:x86_64",
+ "alg:QRUOV-5q31L3-aes:avx2:x86_64",
+ "alg:QRUOV-5q31L3-shake:avx2:x86_64",
+ "alg:QRUOV-5q7L10-aes:avx2:x86_64",
+ "alg:QRUOV-5q7L10-shake:avx2:x86_64",
"alg:SLH_DSA_PURE_SHA2_128S:slhdsa-c:generic",
"alg:SLH_DSA_PURE_SHA2_128F:slhdsa-c:generic",
"alg:SLH_DSA_PURE_SHA2_192S:slhdsa-c:generic",
@@ -11697,6 +12327,186 @@
"alg:sha3"
]
},
+ {
+ "ref": "alg:QRUOV-1q127L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q127L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q127L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q127L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q31L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q31L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q31L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q31L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q7L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-1q7L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q127L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q127L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q127L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q127L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q31L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q31L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q31L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q31L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q7L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-3q7L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q127L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q127L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q127L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q127L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q31L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q31L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q31L3-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q31L3-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q7L10-aes:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
+ {
+ "ref": "alg:QRUOV-5q7L10-shake:avx2:x86_64",
+ "dependsOn": [
+ "alg:sha3"
+ ]
+ },
{
"ref": "alg:SNOVA_I_K:opt:generic",
"dependsOn": [
diff --git a/scripts/copy_from_upstream/copy_from_upstream.yml b/scripts/copy_from_upstream/copy_from_upstream.yml
index b7fedb6588..2b6ae6e43f 100644
--- a/scripts/copy_from_upstream/copy_from_upstream.yml
+++ b/scripts/copy_from_upstream/copy_from_upstream.yml
@@ -93,6 +93,14 @@ upstreams:
git_commit: fac2ec1fe6d8ea508eab4b98eb5341e1eed930a4
sig_scheme_path: '.'
sig_meta_path: 'integration/liboqs/{pretty_name_full}_META.yml'
+ -
+ name: qruov
+ git_url: https://github.com/0rlych1kk4/round3.git
+ git_branch: feat/liboqs-integration
+ git_commit: df619f46a6c937c1b14907a933f74ae7d82a202d
+ sig_scheme_path: '.'
+ sig_meta_path: 'integration/liboqs/{pretty_name_full}_META.yml'
+ common_meta_path: 'integration/liboqs/META_Common.yml'
-
name: snova
git_url: https://github.com/PQCLAB-SNOVA/SNOVA
@@ -394,6 +402,161 @@ sigs:
pqclean_scheme: cross-rsdpg-256-small
pretty_name_full: cross-rsdpg-256-small
signed_msg_order: msg_then_sig
+ -
+ name: qruov
+ default_implementation: ref
+ upstream_location: qruov
+ schemes:
+ -
+ scheme: "1q7L10aes"
+ pqclean_scheme: qruov_1q7L10_aes
+ pretty_name_full: QRUOV-1q7L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q7L10shake"
+ pqclean_scheme: qruov_1q7L10_shake
+ pretty_name_full: QRUOV-1q7L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q31L3aes"
+ pqclean_scheme: qruov_1q31L3_aes
+ pretty_name_full: QRUOV-1q31L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q31L3shake"
+ pqclean_scheme: qruov_1q31L3_shake
+ pretty_name_full: QRUOV-1q31L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q31L10aes"
+ pqclean_scheme: qruov_1q31L10_aes
+ pretty_name_full: QRUOV-1q31L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q31L10shake"
+ pqclean_scheme: qruov_1q31L10_shake
+ pretty_name_full: QRUOV-1q31L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q127L3aes"
+ pqclean_scheme: qruov_1q127L3_aes
+ pretty_name_full: QRUOV-1q127L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q127L3shake"
+ pqclean_scheme: qruov_1q127L3_shake
+ pretty_name_full: QRUOV-1q127L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q127L10aes"
+ pqclean_scheme: qruov_1q127L10_aes
+ pretty_name_full: QRUOV-1q127L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "1q127L10shake"
+ pqclean_scheme: qruov_1q127L10_shake
+ pretty_name_full: QRUOV-1q127L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q7L10aes"
+ pqclean_scheme: qruov_3q7L10_aes
+ pretty_name_full: QRUOV-3q7L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q7L10shake"
+ pqclean_scheme: qruov_3q7L10_shake
+ pretty_name_full: QRUOV-3q7L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q31L3aes"
+ pqclean_scheme: qruov_3q31L3_aes
+ pretty_name_full: QRUOV-3q31L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q31L3shake"
+ pqclean_scheme: qruov_3q31L3_shake
+ pretty_name_full: QRUOV-3q31L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q31L10aes"
+ pqclean_scheme: qruov_3q31L10_aes
+ pretty_name_full: QRUOV-3q31L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q31L10shake"
+ pqclean_scheme: qruov_3q31L10_shake
+ pretty_name_full: QRUOV-3q31L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q127L3aes"
+ pqclean_scheme: qruov_3q127L3_aes
+ pretty_name_full: QRUOV-3q127L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q127L3shake"
+ pqclean_scheme: qruov_3q127L3_shake
+ pretty_name_full: QRUOV-3q127L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q127L10aes"
+ pqclean_scheme: qruov_3q127L10_aes
+ pretty_name_full: QRUOV-3q127L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "3q127L10shake"
+ pqclean_scheme: qruov_3q127L10_shake
+ pretty_name_full: QRUOV-3q127L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q7L10aes"
+ pqclean_scheme: qruov_5q7L10_aes
+ pretty_name_full: QRUOV-5q7L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q7L10shake"
+ pqclean_scheme: qruov_5q7L10_shake
+ pretty_name_full: QRUOV-5q7L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q31L3aes"
+ pqclean_scheme: qruov_5q31L3_aes
+ pretty_name_full: QRUOV-5q31L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q31L3shake"
+ pqclean_scheme: qruov_5q31L3_shake
+ pretty_name_full: QRUOV-5q31L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q31L10aes"
+ pqclean_scheme: qruov_5q31L10_aes
+ pretty_name_full: QRUOV-5q31L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q31L10shake"
+ pqclean_scheme: qruov_5q31L10_shake
+ pretty_name_full: QRUOV-5q31L10-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q127L3aes"
+ pqclean_scheme: qruov_5q127L3_aes
+ pretty_name_full: QRUOV-5q127L3-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q127L3shake"
+ pqclean_scheme: qruov_5q127L3_shake
+ pretty_name_full: QRUOV-5q127L3-shake
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q127L10aes"
+ pqclean_scheme: qruov_5q127L10_aes
+ pretty_name_full: QRUOV-5q127L10-aes
+ signed_msg_order: sig_then_msg
+ -
+ scheme: "5q127L10shake"
+ pqclean_scheme: qruov_5q127L10_shake
+ pretty_name_full: QRUOV-5q127L10-shake
+ signed_msg_order: sig_then_msg
-
name: uov
default_implementation: ref
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f8e813d220..1878e3fa20 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -59,6 +59,10 @@ if(OQS_ENABLE_SIG_CROSS)
add_subdirectory(sig/cross)
set(SIG_OBJS ${SIG_OBJS} ${CROSS_OBJS})
endif()
+if(OQS_ENABLE_SIG_QRUOV)
+ add_subdirectory(sig/qruov)
+ set(SIG_OBJS ${SIG_OBJS} ${QRUOV_OBJS})
+endif()
if(OQS_ENABLE_SIG_UOV)
add_subdirectory(sig/uov)
set(SIG_OBJS ${SIG_OBJS} ${UOV_OBJS})
diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake
index 1709573f7b..aad797187d 100644
--- a/src/oqsconfig.h.cmake
+++ b/src/oqsconfig.h.cmake
@@ -252,6 +252,98 @@
#cmakedefine OQS_ENABLE_SIG_cross_rsdpg_256_small 1
#cmakedefine OQS_ENABLE_SIG_cross_rsdpg_256_small_avx2 1
+#cmakedefine OQS_ENABLE_SIG_QRUOV 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q7L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q31L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_1q127L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q7L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q31L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_3q127L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q7L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q31L10shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L3shake_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10aes 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10aes_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10aes_avx2 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10shake 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10shake_opt 1
+#cmakedefine OQS_ENABLE_SIG_qruov_5q127L10shake_avx2 1
+
#cmakedefine OQS_ENABLE_SIG_UOV 1
#cmakedefine OQS_ENABLE_SIG_uov_ov_Is 1
#cmakedefine OQS_ENABLE_SIG_uov_ov_Is_neon 1
diff --git a/src/sig/qruov/CMakeLists.txt b/src/sig/qruov/CMakeLists.txt
new file mode 100644
index 0000000000..1dceaffa02
--- /dev/null
+++ b/src/sig/qruov/CMakeLists.txt
@@ -0,0 +1,968 @@
+# SPDX-License-Identifier: MIT
+
+# This file was generated by
+# scripts/copy_from_upstream/copy_from_upstream.py
+
+set(_QRUOV_OBJS "")
+
+if(OQS_ENABLE_SIG_qruov_1q7L10aes)
+ add_library(qruov_1q7L10aes_ref OBJECT sig_qruov_1q7L10aes.c qruov_qruov_1q7L10_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q7L10aes_ref PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_aes_ref)
+ target_include_directories(qruov_1q7L10aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q7L10aes_ref PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q7L10aes_opt)
+ add_library(qruov_1q7L10aes_opt OBJECT qruov_qruov_1q7L10_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_aes_opt)
+ target_include_directories(qruov_1q7L10aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q7L10aes_opt PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q7L10aes_avx2)
+ add_library(qruov_1q7L10aes_avx2 OBJECT qruov_qruov_1q7L10_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_aes_avx2)
+ target_include_directories(qruov_1q7L10aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q7L10aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q7L10aes_avx2 PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q7L10shake)
+ add_library(qruov_1q7L10shake_ref OBJECT sig_qruov_1q7L10shake.c qruov_qruov_1q7L10_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q7L10shake_ref PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_shake_ref)
+ target_include_directories(qruov_1q7L10shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q7L10shake_ref PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q7L10shake_opt)
+ add_library(qruov_1q7L10shake_opt OBJECT qruov_qruov_1q7L10_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_shake_opt)
+ target_include_directories(qruov_1q7L10shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q7L10shake_opt PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q7L10shake_avx2)
+ add_library(qruov_1q7L10shake_avx2 OBJECT qruov_qruov_1q7L10_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q7L10_shake_avx2)
+ target_include_directories(qruov_1q7L10shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q7L10shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q7L10shake_avx2 PUBLIC -DQRUOV_PARAM_1q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q7L10_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3aes)
+ add_library(qruov_1q31L3aes_ref OBJECT sig_qruov_1q31L3aes.c qruov_qruov_1q31L3_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q31L3aes_ref PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_aes_ref)
+ target_include_directories(qruov_1q31L3aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q31L3aes_ref PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3aes_opt)
+ add_library(qruov_1q31L3aes_opt OBJECT qruov_qruov_1q31L3_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_aes_opt)
+ target_include_directories(qruov_1q31L3aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q31L3aes_opt PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3aes_avx2)
+ add_library(qruov_1q31L3aes_avx2 OBJECT qruov_qruov_1q31L3_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_aes_avx2)
+ target_include_directories(qruov_1q31L3aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q31L3aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q31L3aes_avx2 PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3shake)
+ add_library(qruov_1q31L3shake_ref OBJECT sig_qruov_1q31L3shake.c qruov_qruov_1q31L3_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q31L3shake_ref PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_shake_ref)
+ target_include_directories(qruov_1q31L3shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q31L3shake_ref PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3shake_opt)
+ add_library(qruov_1q31L3shake_opt OBJECT qruov_qruov_1q31L3_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_shake_opt)
+ target_include_directories(qruov_1q31L3shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q31L3shake_opt PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L3shake_avx2)
+ add_library(qruov_1q31L3shake_avx2 OBJECT qruov_qruov_1q31L3_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L3_shake_avx2)
+ target_include_directories(qruov_1q31L3shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q31L3shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q31L3shake_avx2 PUBLIC -DQRUOV_PARAM_1q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L3_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10aes)
+ add_library(qruov_1q31L10aes_ref OBJECT sig_qruov_1q31L10aes.c qruov_qruov_1q31L10_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q31L10aes_ref PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_aes_ref)
+ target_include_directories(qruov_1q31L10aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q31L10aes_ref PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10aes_opt)
+ add_library(qruov_1q31L10aes_opt OBJECT qruov_qruov_1q31L10_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_aes_opt)
+ target_include_directories(qruov_1q31L10aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q31L10aes_opt PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10aes_avx2)
+ add_library(qruov_1q31L10aes_avx2 OBJECT qruov_qruov_1q31L10_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_aes_avx2)
+ target_include_directories(qruov_1q31L10aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q31L10aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q31L10aes_avx2 PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10shake)
+ add_library(qruov_1q31L10shake_ref OBJECT sig_qruov_1q31L10shake.c qruov_qruov_1q31L10_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q31L10shake_ref PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_shake_ref)
+ target_include_directories(qruov_1q31L10shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q31L10shake_ref PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10shake_opt)
+ add_library(qruov_1q31L10shake_opt OBJECT qruov_qruov_1q31L10_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_shake_opt)
+ target_include_directories(qruov_1q31L10shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q31L10shake_opt PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q31L10shake_avx2)
+ add_library(qruov_1q31L10shake_avx2 OBJECT qruov_qruov_1q31L10_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q31L10_shake_avx2)
+ target_include_directories(qruov_1q31L10shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q31L10shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q31L10shake_avx2 PUBLIC -DQRUOV_PARAM_1q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q31L10_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3aes)
+ add_library(qruov_1q127L3aes_ref OBJECT sig_qruov_1q127L3aes.c qruov_qruov_1q127L3_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q127L3aes_ref PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_aes_ref)
+ target_include_directories(qruov_1q127L3aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q127L3aes_ref PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3aes_opt)
+ add_library(qruov_1q127L3aes_opt OBJECT qruov_qruov_1q127L3_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_aes_opt)
+ target_include_directories(qruov_1q127L3aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q127L3aes_opt PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3aes_avx2)
+ add_library(qruov_1q127L3aes_avx2 OBJECT qruov_qruov_1q127L3_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_aes_avx2)
+ target_include_directories(qruov_1q127L3aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q127L3aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q127L3aes_avx2 PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3shake)
+ add_library(qruov_1q127L3shake_ref OBJECT sig_qruov_1q127L3shake.c qruov_qruov_1q127L3_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q127L3shake_ref PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q127L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_shake_ref)
+ target_include_directories(qruov_1q127L3shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q127L3shake_ref PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3shake_opt)
+ add_library(qruov_1q127L3shake_opt OBJECT qruov_qruov_1q127L3_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q127L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_shake_opt)
+ target_include_directories(qruov_1q127L3shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q127L3shake_opt PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L3shake_avx2)
+ add_library(qruov_1q127L3shake_avx2 OBJECT qruov_qruov_1q127L3_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q127L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L3_shake_avx2)
+ target_include_directories(qruov_1q127L3shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q127L3shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q127L3shake_avx2 PUBLIC -DQRUOV_PARAM_1q127L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L3_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10aes)
+ add_library(qruov_1q127L10aes_ref OBJECT sig_qruov_1q127L10aes.c qruov_qruov_1q127L10_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q127L10aes_ref PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q127L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_aes_ref)
+ target_include_directories(qruov_1q127L10aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q127L10aes_ref PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10aes_opt)
+ add_library(qruov_1q127L10aes_opt OBJECT qruov_qruov_1q127L10_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q127L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_aes_opt)
+ target_include_directories(qruov_1q127L10aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q127L10aes_opt PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10aes_avx2)
+ add_library(qruov_1q127L10aes_avx2 OBJECT qruov_qruov_1q127L10_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q127L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_aes_avx2)
+ target_include_directories(qruov_1q127L10aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q127L10aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q127L10aes_avx2 PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10shake)
+ add_library(qruov_1q127L10shake_ref OBJECT sig_qruov_1q127L10shake.c qruov_qruov_1q127L10_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_1q127L10shake_ref PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_1q127L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_shake_ref)
+ target_include_directories(qruov_1q127L10shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_1q127L10shake_ref PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10shake_opt)
+ add_library(qruov_1q127L10shake_opt OBJECT qruov_qruov_1q127L10_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_1q127L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_shake_opt)
+ target_include_directories(qruov_1q127L10shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_1q127L10shake_opt PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_1q127L10shake_avx2)
+ add_library(qruov_1q127L10shake_avx2 OBJECT qruov_qruov_1q127L10_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_1q127L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_1q127L10_shake_avx2)
+ target_include_directories(qruov_1q127L10shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_1q127L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_1q127L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_1q127L10shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_1q127L10shake_avx2 PUBLIC -DQRUOV_PARAM_1q127L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_1q127L10_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10aes)
+ add_library(qruov_3q7L10aes_ref OBJECT sig_qruov_3q7L10aes.c qruov_qruov_3q7L10_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q7L10aes_ref PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_aes_ref)
+ target_include_directories(qruov_3q7L10aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q7L10aes_ref PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10aes_opt)
+ add_library(qruov_3q7L10aes_opt OBJECT qruov_qruov_3q7L10_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_aes_opt)
+ target_include_directories(qruov_3q7L10aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q7L10aes_opt PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10aes_avx2)
+ add_library(qruov_3q7L10aes_avx2 OBJECT qruov_qruov_3q7L10_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_aes_avx2)
+ target_include_directories(qruov_3q7L10aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q7L10aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q7L10aes_avx2 PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10shake)
+ add_library(qruov_3q7L10shake_ref OBJECT sig_qruov_3q7L10shake.c qruov_qruov_3q7L10_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q7L10shake_ref PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_shake_ref)
+ target_include_directories(qruov_3q7L10shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q7L10shake_ref PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10shake_opt)
+ add_library(qruov_3q7L10shake_opt OBJECT qruov_qruov_3q7L10_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_shake_opt)
+ target_include_directories(qruov_3q7L10shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q7L10shake_opt PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q7L10shake_avx2)
+ add_library(qruov_3q7L10shake_avx2 OBJECT qruov_qruov_3q7L10_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q7L10_shake_avx2)
+ target_include_directories(qruov_3q7L10shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q7L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q7L10shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q7L10shake_avx2 PUBLIC -DQRUOV_PARAM_3q7L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q7L10_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3aes)
+ add_library(qruov_3q31L3aes_ref OBJECT sig_qruov_3q31L3aes.c qruov_qruov_3q31L3_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q31L3aes_ref PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_aes_ref)
+ target_include_directories(qruov_3q31L3aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q31L3aes_ref PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3aes_opt)
+ add_library(qruov_3q31L3aes_opt OBJECT qruov_qruov_3q31L3_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_aes_opt)
+ target_include_directories(qruov_3q31L3aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q31L3aes_opt PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3aes_avx2)
+ add_library(qruov_3q31L3aes_avx2 OBJECT qruov_qruov_3q31L3_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_aes_avx2)
+ target_include_directories(qruov_3q31L3aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q31L3aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q31L3aes_avx2 PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3shake)
+ add_library(qruov_3q31L3shake_ref OBJECT sig_qruov_3q31L3shake.c qruov_qruov_3q31L3_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q31L3shake_ref PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_shake_ref)
+ target_include_directories(qruov_3q31L3shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q31L3shake_ref PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3shake_opt)
+ add_library(qruov_3q31L3shake_opt OBJECT qruov_qruov_3q31L3_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_shake_opt)
+ target_include_directories(qruov_3q31L3shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q31L3shake_opt PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L3shake_avx2)
+ add_library(qruov_3q31L3shake_avx2 OBJECT qruov_qruov_3q31L3_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L3_shake_avx2)
+ target_include_directories(qruov_3q31L3shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L3shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q31L3shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q31L3shake_avx2 PUBLIC -DQRUOV_PARAM_3q31L3 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L3_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10aes)
+ add_library(qruov_3q31L10aes_ref OBJECT sig_qruov_3q31L10aes.c qruov_qruov_3q31L10_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q31L10aes_ref PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_aes_ref)
+ target_include_directories(qruov_3q31L10aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q31L10aes_ref PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10aes_opt)
+ add_library(qruov_3q31L10aes_opt OBJECT qruov_qruov_3q31L10_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_aes_opt)
+ target_include_directories(qruov_3q31L10aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q31L10aes_opt PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10aes_avx2)
+ add_library(qruov_3q31L10aes_avx2 OBJECT qruov_qruov_3q31L10_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_aes_avx2)
+ target_include_directories(qruov_3q31L10aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q31L10aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q31L10aes_avx2 PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10shake)
+ add_library(qruov_3q31L10shake_ref OBJECT sig_qruov_3q31L10shake.c qruov_qruov_3q31L10_shake_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q31L10shake_ref PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_shake_ref)
+ target_include_directories(qruov_3q31L10shake_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10shake_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q31L10shake_ref PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_shake_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10shake_opt)
+ add_library(qruov_3q31L10shake_opt OBJECT qruov_qruov_3q31L10_shake_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_shake_opt)
+ target_include_directories(qruov_3q31L10shake_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10shake_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q31L10shake_opt PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_shake_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q31L10shake_avx2)
+ add_library(qruov_3q31L10shake_avx2 OBJECT qruov_qruov_3q31L10_shake_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q31L10_shake_avx2)
+ target_include_directories(qruov_3q31L10shake_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q31L10shake_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q31L10shake_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q31L10shake_avx2 PUBLIC -DQRUOV_PARAM_3q31L10 -DPRG_IS_AES=0 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q31L10_shake_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q127L3aes)
+ add_library(qruov_3q127L3aes_ref OBJECT sig_qruov_3q127L3aes.c qruov_qruov_3q127L3_aes_ref/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_ref/qruov.c)
+ target_compile_options(qruov_3q127L3aes_ref PUBLIC -DQRUOV_PARAM_3q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q127L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ target_include_directories(qruov_3q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q127L3_aes_ref)
+ target_include_directories(qruov_3q127L3aes_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q127L3aes_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_ref)
+ target_compile_options(qruov_3q127L3aes_ref PUBLIC -DQRUOV_PARAM_3q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q127L3_aes_ref_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q127L3aes_opt)
+ add_library(qruov_3q127L3aes_opt OBJECT qruov_qruov_3q127L3_aes_opt/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_opt/emi_transform.c qruov_qruov_opt/emi_transform_gen.c qruov_qruov_opt/qruov.c)
+ target_include_directories(qruov_3q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q127L3_aes_opt)
+ target_include_directories(qruov_3q127L3aes_opt PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q127L3aes_opt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_opt)
+ target_compile_options(qruov_3q127L3aes_opt PUBLIC -DQRUOV_PARAM_3q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q127L3_aes_opt_ $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $)
+endif()
+
+if(OQS_ENABLE_SIG_qruov_3q127L3aes_avx2)
+ add_library(qruov_3q127L3aes_avx2 OBJECT qruov_qruov_3q127L3_aes_avx2/signature.c qruov_qruov_common/linsys.c qruov_qruov_common/prg.c qruov_qruov_common/prim.c qruov_qruov_common/qrop.c qruov_qruov_common/qruov_common.c qruov_qruov_common/randombytes.c qruov_qruov_common/sign.c qruov_qruov_avx2/emi_matrix.c qruov_qruov_avx2/emi_transform.c qruov_qruov_avx2/emi_transform_gen.c qruov_qruov_avx2/helpers.c qruov_qruov_avx2/kernel.c qruov_qruov_avx2/qruov.c qruov_qruov_avx2/x86aesni.c)
+ target_include_directories(qruov_3q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_3q127L3_aes_avx2)
+ target_include_directories(qruov_3q127L3aes_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
+ target_include_directories(qruov_3q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_common)
+ target_include_directories(qruov_3q127L3aes_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/qruov_qruov_avx2)
+ target_compile_options(qruov_3q127L3aes_avx2 PRIVATE -mavx2 -mbmi2 -maes)
+ target_compile_options(qruov_3q127L3aes_avx2 PUBLIC -DQRUOV_PARAM_3q127L3 -DPRG_IS_AES=1 -DQRUOV_PRIM_OQS -DQRUOV_NAMESPACE_PREFIX=qruov_3q127L3_aes_avx2_ -DPRIM_AES_BACKEND_X86AESNI=1 -mavx2 -mbmi2 -maes $<$:/FInamespace.h> $<$>:-include> $<$>:namespace.h>)
+ set(_QRUOV_OBJS ${_QRUOV_OBJS} $