Skip to content

Skip extmu ML-DSA variants in generic signature tests#152

Merged
dstebila merged 1 commit into
mainfrom
skip-extmu-generic-sig-tests
Jul 24, 2026
Merged

Skip extmu ML-DSA variants in generic signature tests#152
dstebila merged 1 commit into
mainfrom
skip-extmu-generic-sig-tests

Conversation

@dstebila

@dstebila dstebila commented Jul 24, 2026

Copy link
Copy Markdown
Member

Problem

The "GitHub actions simplified" CI workflow is failing on main (and therefore on every open PR) in the unit-test step:

'ML-DSA-44-extmu' ... ERROR
'ML-DSA-65-extmu' ... ERROR
'ML-DSA-87-extmu' ... ERROR
ERROR: tests.test_sig.test_correctness:4
RuntimeError: Can not sign message

Because the package version is a dev version (0.16.1-dev), the CI builds liboqs from main HEAD, which now enables the external-mu ML-DSA variants (ML-DSA-{44,65,87}-extmu). These cannot be signed via the standard OQS_SIG_sign path — they expect an externally-computed µ rather than a raw message. The generic correctness tests in tests/test_sig.py iterate over all enabled mechanisms and call plain sig.sign(message), so they fail for these variants.

Fix

Add "extmu" to disabled_sig_patterns in tests/test_sig.py so the generic sign/verify correctness tests skip the external-mu variants.

This is a stopgap to unblock CI failures as identified in #150. Proper support — a dedicated external-mu signing path in the Signature wrapper plus tests that actually exercise these algorithms — is tracked in #151.

🤖 Generated with Claude Code

liboqs main now enables the external-mu ML-DSA variants (ML-DSA-44-extmu,
ML-DSA-65-extmu, ML-DSA-87-extmu). These cannot be signed via the standard
OQS_SIG_sign path, so the generic correctness tests in test_sig.py, which
iterate over all enabled mechanisms and call plain sign(), fail with
"RuntimeError: Can not sign message".

Exclude the extmu variants from the generic sign/verify tests to unblock CI.
Proper support (a dedicated external-mu signing path plus tests) is tracked
in #151.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
@dstebila
dstebila force-pushed the skip-extmu-generic-sig-tests branch from 5505636 to e8c72c8 Compare July 24, 2026 14:59
@dstebila
dstebila merged commit 22e7a3e into main Jul 24, 2026
10 checks passed
@dstebila
dstebila deleted the skip-extmu-generic-sig-tests branch July 24, 2026 16:11
dstebila added a commit that referenced this pull request Jul 24, 2026
liboqs enables the ML-DSA external-mu variants (ML-DSA-{44,65,87}-extmu),
which reuse the standard sign/verify C API but interpret the signed input as
the externally computed mu rather than a raw message.

- Add an is_extmu flag (instance attribute + details) derived from the
  algorithm name, and document the external-mu input semantics on
  sign()/verify(). The signing API stays uniform and algorithm-agnostic,
  matching liboqs (which exposes no dedicated external-mu function and no
  runtime mu length).
- Parametrize the generic sign/verify tests to use a 64-byte message for
  extmu variants (mirroring liboqs's test_sig.c) and drop the "extmu"
  stopgap from disabled_sig_patterns (added in #152).
- Add test_is_extmu_flag covering the new flag.

Closes #151.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant