Skip to content

Add common dependencies with include_only#2382

Merged
dstebila merged 1 commit into
mainfrom
bhe-commondep-inclonly
May 13, 2026
Merged

Add common dependencies with include_only#2382
dstebila merged 1 commit into
mainfrom
bhe-commondep-inclonly

Conversation

@bhess
Copy link
Copy Markdown
Member

@bhess bhess commented Mar 17, 2026

Fixes #2380

Allows upstream algorithms to declare common dependencies that are stored once but compiled into each algorithm variant individually.

How to use

  1. Add common_meta_path to the upstream entry in copy_from_upstream.yml:
- name: myupstream
  git_url: https://github.com/...
  sig_meta_path: 'META/{pretty_name_full}_META.yml'
  common_meta_path: 'META/COMMONS.yml'   # path to commons definition
  sig_scheme_path: '.'
  1. Create a COMMONS.yml in the upstream repo:
commons:
  - name: myalg_common
    folder_name: .           # root folder of the common sources
    sources: ./src/foo.c ./src/bar.c ./include/params.h
    include_only: true       # compile into each variant, not as a shared OBJECT library
  • include_only: false (default): shared sources are compiled once as a standalone OBJECT library and linked into all variants that reference it. Use this when the shared code is truly flag-independent.
  • include_only: true: shared sources are copied flat and added directly to each variant's add_library(... OBJECT ...), with the common directory added as target_include_directories. Each variant recompiles the shared sources with its own flags.
  1. Reference the common dep from the implementation entry in the upstream META.yml:
implementations:
  - name: opt
    common_dep: myalg_common
  - name: opt_avx2
    common_dep: myalg_common myalg_common_avx2   # space separated

Descriptions and documentation assisted by AI

  • Does this PR change the input/output behaviour of a cryptographic algorithm (i.e., does it change known answer test values)? (If so, a version bump will be required from x.y.z to x.(y+1).0.)
  • Does this PR change the list of algorithms available -- either adding, removing, or renaming? Does this PR otherwise change an API? (If so, PRs in fully supported downstream projects dependent on these, i.e., oqs-provider will also need to be ready for review and merge by the time this is merged. Also, make sure to update the list of algorithms in the continuous benchmarking files: .github/workflows/kem-bench.yml and sig-bench.yml)

@bhess bhess mentioned this pull request Mar 17, 2026
2 tasks
@coveralls
Copy link
Copy Markdown

coveralls commented Mar 17, 2026

Coverage Status

coverage: 60.288% (-22.0%) from 82.272% — bhe-commondep-inclonly into main

@bhess bhess marked this pull request as ready for review March 18, 2026 13:14
@bhess bhess requested review from alexrow and baentsch as code owners March 18, 2026 13:14
@bhess
Copy link
Copy Markdown
Member Author

bhess commented Mar 18, 2026

Marking this PR as ready for review.

The logic has been tested in #2361. Additionally, I have included a new README for the copy_from_upstream mechanism to assist future contributors.

@bhess bhess requested a review from xuganyu96 March 18, 2026 13:17
rben-dev added a commit to rben-dev/liboqs that referenced this pull request Mar 18, 2026
- memopt variant of the algorithm allowed using PR open-quantum-safe#2367
- common files for all variants are factorized using PR open-quantum-safe#2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
rben-dev added a commit to rben-dev/liboqs that referenced this pull request Mar 18, 2026
- memopt variant of the algorithm allowed using PR open-quantum-safe#2367
- common files for all variants are factorized using PR open-quantum-safe#2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
@rben-dev rben-dev mentioned this pull request Mar 18, 2026
2 tasks
xuganyu96 pushed a commit to rben-dev/liboqs that referenced this pull request Mar 18, 2026
- memopt variant of the algorithm allowed using PR open-quantum-safe#2367
- common files for all variants are factorized using PR open-quantum-safe#2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Copy link
Copy Markdown
Contributor

@xuganyu96 xuganyu96 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code change looks good to me. Minor suggestion in comments.

Comment thread scripts/copy_from_upstream/src/kem/family/CMakeLists.txt Outdated
dstebila pushed a commit that referenced this pull request Apr 7, 2026
* Add common dependencies with include_only

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Remove incorrect debug print in copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Add readme for copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Import MQOM:
- memopt variant of the algorithm allowed using PR #2367
- common files for all variants are factorized using PR #2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>

---------

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
@dstebila
Copy link
Copy Markdown
Member

dstebila commented Apr 7, 2026

Since #2382 has been merged, can this be closed?

Nelonn pushed a commit to Nelonn/liboqs that referenced this pull request Apr 8, 2026
* Add common dependencies with include_only

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Remove incorrect debug print in copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Add readme for copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Import MQOM:
- memopt variant of the algorithm allowed using PR open-quantum-safe#2367
- common files for all variants are factorized using PR open-quantum-safe#2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>

---------

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>
@xuganyu96
Copy link
Copy Markdown
Contributor

xuganyu96 commented Apr 8, 2026

Since #2382 has been merged, can this be closed?

I (locally) rebased this branch on top of main@b0853b2 and found the following diff:

diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py
index 4b25f890b..9010c4665 100755
--- a/scripts/copy_from_upstream/copy_from_upstream.py
+++ b/scripts/copy_from_upstream/copy_from_upstream.py
@@ -333,10 +333,10 @@ def load_instructions(file='copy_from_upstream.yml'):
             scheme['default_implementation'] = family['default_implementation']
             for impl in scheme['metadata']['implementations']:
                 if 'common_dep' in impl:
-                    cdeps_names = impl['common_dep'].split(" ")
+                    impl['common_dep'] = impl['common_dep'].split()
                     sname = scheme['pretty_name_full']
                     uloc = scheme['upstream_location']
-                    for cdep_name in cdeps_names:
+                    for cdep_name in impl['common_dep']:
                         cdep = upstreams[uloc]['commons'][cdep_name]
                         if 'required_flags' in cdep:
                             family['all_required_flags'].update(cdep['required_flags'])
@@ -444,10 +444,10 @@ def load_instructions(file='copy_from_upstream.yml'):
             scheme['default_implementation'] = family['default_implementation']
             for impl in scheme['metadata']['implementations']:
                 if 'common_dep' in impl:
-                    cdeps_names = impl['common_dep'].split(" ")
+                    impl['common_dep'] = impl['common_dep'].split()
                     sname = scheme['pretty_name_full']
                     uloc = scheme['upstream_location']
-                    for cdep_name in cdeps_names:
+                    for cdep_name in impl['common_dep']:
                         cdep = upstreams[uloc]['commons'][cdep_name]
                         if 'required_flags' in cdep:
                             family['all_required_flags'].update(cdep['required_flags'])
diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt
index 3393dc4e3..11e30320e 100644
--- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt
+++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt
@@ -30,7 +30,7 @@ endif()
         {%- if impl['name'] == scheme['default_implementation'] %}
 
 if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %})
-    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
+    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
            {%- if impl['compile_opts'] %}
     target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }})
            {%- endif -%}
@@ -51,14 +51,14 @@ if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if
         {%- else %}
 
 if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %})
-    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
+    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
         {%- endif %}
         {%- if impl['name'] != 'cuda' and impl['name'] != 'icicle_cuda' %}
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }})
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
         {%- if common_deps is defined %}
             {%- for cdep in common_deps %}
-                {%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %}
+                {%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %}
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ cdep['name'] }})
                 {%- endif %}
             {%- endfor %}
diff --git a/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt b/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt
index 510aaaa27..d5db314e2 100644
--- a/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt
+++ b/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt
@@ -30,7 +30,7 @@ endif()
         {%- if impl['name'] == scheme['default_implementation'] %}
 
 if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_SIG_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %})
-    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT sig_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
+    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT sig_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
            {%- if impl['compile_opts'] %}
     target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }})
            {%- endif -%}
@@ -38,13 +38,13 @@ if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in
         {%- else %}
 
 if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_SIG_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %})
-    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
+    add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}{%- if common_deps is defined %}{%- for cdep in common_deps %}{%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %} {% for sf in cdep['sources_addl']|sort -%}{{ upstream_location }}_{{ cdep['name'] }}/{{ sf }}{%- if not loop.last %} {% endif -%}{%- endfor %}{%- endif %}{%- endfor %}{%- endif -%})
         {%- endif %}
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }})
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
         {%- if common_deps is defined %}
             {%- for cdep in common_deps %}
-                {%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'].replace(',', ' ').split() %}
+                {%- if cdep['include_only'] and 'common_dep' in impl and cdep['name'] in impl['common_dep'] %}
     target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ cdep['name'] }})
                 {%- endif %}
             {%- endfor %}

It seems like there is more code change in this pull request than #2385.

dstebila added a commit that referenced this pull request Apr 14, 2026
* fix: build on windows clang

Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Update CMakeLists.txt

Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Update CMakeLists.txt

Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Pin Wycheproof test vectors to last good commit (#2393)

This is a temporary solution for unblocking CI pipeline; a more
permanent fix is needed to incorporate new test cases

Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* sntrup761: replace PQClean code with public domain OpenSSH code (#2356)

* sntrup761: replace PQClean code with public domain OpenSSH code

Signed-off-by: Billy Brumley <bbb@iki.fi>

* Update top-level LICENSE file

Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>

* [src/kem/ntruprime/sntrup761_openssh] use macro for explicit_bzero

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] assign values to volatiles to make stricter android ld.lld happy

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] drop attributes for MSVC

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] alloca for stack allocated variable length arrays

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] MSVC doesn't like variable length arrays on the stack; script to modify upstream source

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] sntrup761.sh: resulting changes

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [docs/algorithms/kem] YAML doc update for sntrup761

Signed-off-by: Billy Brumley <bbb@iki.fi>

* doc: copy_from_upstream.py changes for sntrup761 from OpenSSH

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [.github] CODEOWNERS: sntrup761, sign up for /src/kem/ntruprime

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [docs/algorithms/kem] sntrup761 from upstream OpenSSH has no runtime featurization

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime] add OPENSSH prefix and use it

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [docs/algorithms/kem] sntrup761: markdown fix, are implementations chosen based on runtime CPU feature detection

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [src/kem/ntruprime/sntrup761_openssh] sntrup761: use __builtin_alloca intrinsic as a fallback for alloca in non-MSVC cases

Signed-off-by: Billy Brumley <bbb@iki.fi>

* [extended tests] sntrup761: add CT exception for rejection sampling

Signed-off-by: Billy Brumley <bbb@iki.fi>

---------

Signed-off-by: Billy Brumley <bbb@iki.fi>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Add MQOM to liboqs (#2385)

* Add common dependencies with include_only

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Remove incorrect debug print in copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Add readme for copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Import MQOM:
- memopt variant of the algorithm allowed using PR #2367
- common files for all variants are factorized using PR #2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>

---------

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Update mlkem-native to v1.1.0 (#2376)

* Update mlkem-native to v1.1.0 [full tests] [extended tests]

Signed-off-by: Matthias J. Kannwischer <matthias@kannwischer.eu>

* ML-KEM: Remove constant-time passes whitelist [full tests] [extended tests]

This commit removes the constant time passes which for ML-KEM that is used
to suppress the false positives of the constant-time tests.
This is no longer needed with mlkem-native as mlkem-native does explicit
declassifications for public data that is being branched on.

Signed-off-by: Matthias J. Kannwischer <matthias@kannwischer.eu>

---------

Signed-off-by: Matthias J. Kannwischer <matthias@kannwischer.eu>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Fix mismatched macros in LMS variants (#2379)

Signed-off-by: Abhi S <saxena_abhinav@icloud.com>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

* Bump the pip group across 2 directories with 1 update (#2389)

Bumps the pip group with 1 update in the /.github/workflows directory: [requests](https://github.com/psf/requests).
Bumps the pip group with 1 update in the /scripts/copy_from_upstream directory: [requests](https://github.com/psf/requests).

Updates `requests` from 2.32.4 to 2.33.0
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](psf/requests@v2.32.4...v2.33.0)

Updates `requests` from 2.32.4 to 2.33.0
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](psf/requests@v2.32.4...v2.33.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.33.0
  dependency-type: direct:production
  dependency-group: pip
- dependency-name: requests
  dependency-version: 2.33.0
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>

---------

Signed-off-by: Nelonn <42481486+Nelonn@users.noreply.github.com>
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
Signed-off-by: Billy Brumley <bbb@iki.fi>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Signed-off-by: Matthias J. Kannwischer <matthias@kannwischer.eu>
Signed-off-by: Abhi S <saxena_abhinav@icloud.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Bruce <g66xu@uwaterloo.ca>
Co-authored-by: Billy Brumley <bbb@iki.fi>
Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
Co-authored-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Co-authored-by: Matthias J. Kannwischer <matthias@kannwischer.eu>
Co-authored-by: Abhi S <150999537+abhi-dev-engg@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
will-bates11 pushed a commit to will-bates11/liboqs that referenced this pull request Apr 14, 2026
* Add common dependencies with include_only

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Remove incorrect debug print in copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Add readme for copy_from_upstream

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>

* Import MQOM:
- memopt variant of the algorithm allowed using PR open-quantum-safe#2367
- common files for all variants are factorized using PR open-quantum-safe#2382

[extended tests]

Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>

---------

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Ryad Benadjila <ryadbenadjila@gmail.com>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Signed-off-by: Will Bates <william.bates11@outlook.com>
@bhess bhess force-pushed the bhe-commondep-inclonly branch from f201bca to f8a72f8 Compare April 15, 2026 16:54
@bhess
Copy link
Copy Markdown
Member Author

bhess commented Apr 15, 2026

It seems like there is more code change in this pull request than #2385.

This change addresses your remaining inline comment @xuganyu96 #2382 (comment), which wasn’t picked up in #2385. Would you be okay merging this PR to avoid leaving that item unaddressed?

(pushed an update rebasing it with main)

@xuganyu96
Copy link
Copy Markdown
Contributor

@bhess The code change looks good to me. Please rebase on top of main and do a pipeline run, after which I can approve this pull request.

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
@dstebila dstebila force-pushed the bhe-commondep-inclonly branch from f8a72f8 to e75926a Compare May 13, 2026 13:44
@dstebila dstebila added the ready for merge This is ready for review and merging label May 13, 2026
@dstebila dstebila merged commit 4956ce7 into main May 13, 2026
108 checks passed
@dstebila dstebila deleted the bhe-commondep-inclonly branch May 13, 2026 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready for merge This is ready for review and merging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Copy from upstream: add support for algorithm-dependent common dependencies

4 participants