• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

open-quantum-safe / liboqs / 37519535979
84%

Build:
DEFAULT BRANCH: main
Ran 06 Oct 2026 07:36PM UTC
Jobs 3
Files 2453
Run time 5min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Oct 2026 07:30PM UTC coverage: 80.303% (+0.01%) from 80.293%
37519535979

push

github

web-flow
Fail closed in LMS stateful signing and validate LMS parameter sets (#2608)

* Fail closed in LMS stateful signing, serialization and deserialization

The LMS stateful-signature paths bypassed the public stateful-signature
lock helpers, which reject incomplete lock tuples and propagate lock
callback failures. Instead they tested only whether a lock callback and
mutex were both present, discarded the callback's return value, and
proceeded to consume a one-time key. This affected
OQS_SIG_STFL_alg_lms_sign() and OQS_SIG_STFL_lms_sigs_left() in
sig_stfl_lms_functions.c, and OQS_SECRET_KEY_LMS_serialize_key() in
sig_stfl_lms.c.

The consequences are LM-OTS key reuse and therefore signature forgery:
signing proceeds when the lock callback returns OQS_ERROR; locking is
skipped silently when the lock tuple is only partially configured, with
no error reported; and serialization can return a stale pre-signing
snapshot when its lock fails, which an application may reload and sign
from again. Each yields several signatures at the same one-time index,
from which a signature over an unrelated message can be derived and is
accepted by OQS_SIG_STFL_verify.

Route LMS lock acquisition through the public helpers and propagate
their failures so that signing and serialization fail closed.

The same change regenerates the LMS wrappers per parameter set, giving
each variant its own algorithm identifier and declared signature length.
Those are then used to fix four further defects in the same layer:

- the secret-key deserializer accepted a serialized key whose embedded
  parameter set differed from the receiving object's, after which
  signing derived the output length from the imported key and overflowed
  the caller's buffer;
- the signing error path cleansed the output buffer using a caller-
  supplied length before setting it to zero, permitting an out-of-bounds
  write;
- the verifier accepted signatures produced under a parameter set other
  than the one declared;
- ... (continued)

0 of 12 new or added lines in 1 file covered. (0.0%)

259 existing lines in 20 files now uncovered.

176277 of 219515 relevant lines covered (80.3%)

3499450.68 hits per line

Uncovered Changes

Lines Coverage ∆ File
12
9.88
-0.08% src/sig_stfl/sig_stfl.c

Coverage Regressions

Lines Coverage ∆ File
64
0.0
-100.0% src/kem/bike/additional_r4/decode_avx2.c
63
0.91
-19.09% src/common/sha3/xkcp_low/KeccakP-1600times4/avx2/KeccakP-1600-times4-SIMD256.c
46
0.0
-100.0% src/kem/bike/additional_r4/gf2x_mul_avx2.c
44
0.0
-100.0% src/kem/bike/additional_r4/gf2x_ksqr_avx2.c
22
0.0
-100.0% src/kem/bike/additional_r4/sampling_avx2.c
3
9.88
-0.08% src/sig_stfl/sig_stfl.c
2
66.67
-33.33% src/kem/bike/additional_r4/cpu_features.h
2
76.11
-1.77% src/kem/hqc/pqc-hqc_hqc-3_ref/vector.c
2
64.81
-0.46% src/sig/ml_dsa/mldsa-native_ml-dsa-44_aarch64/mldsa/src/sign.c
1
96.72
-1.64% src/kem/classic_mceliece/pqclean_mceliece348864f_clean/encrypt.c
1
95.92
-2.04% src/kem/classic_mceliece/pqclean_mceliece460896_avx2/encrypt.c
1
95.53
-0.09% src/sig/falcon/pqclean_falcon-512_avx2/keygen.c
1
96.25
-0.09% src/sig/falcon/pqclean_falcon-padded-1024_clean/keygen.c
1
76.7
-0.49% src/sig/falcon/pqclean_falcon-padded-1024_clean/vrfy.c
1
96.49
-1.75% src/sig/ml_dsa/mldsa-native_ml-dsa-44_aarch64/mldsa/src/packing.c
1
94.74
-1.75% src/sig/ml_dsa/mldsa-native_ml-dsa-44_x86_64/mldsa/src/packing.c
1
96.3
-1.85% src/sig/uov/pqov_ov_Is_neon/ov.c
1
95.31
-1.56% src/sig/uov/pqov_ov_Is_pkc_neon/ov.c
1
94.74
-1.32% src/sig/uov/pqov_ov_Is_pkc_skc_avx2/ov.c
1
98.7
-1.3% usr/lib/gcc/x86_64-linux-gnu/15/include/avx2intrin.h
Jobs
ID Job ID Ran Files Coverage
1 x64-generic - 37519535979.1 06 Oct 2026 07:38PM UTC 1073
82.64
GitHub Action Run
2 arm64-distbuild - 37519535979.2 06 Oct 2026 07:39PM UTC 1495
57.73
GitHub Action Run
3 x64-distbuild - 37519535979.3 06 Oct 2026 07:36PM UTC 2028
54.0
GitHub Action Run
Source Files on build 37519535979
  • Tree
  • List 2453
  • Changed 47
  • Source Changed 1
  • Coverage Changed 47
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37519535979
  • 5c06c8a5 on github
  • Prev Build on main (#37498287659)
  • Next Build on main (#37520932294)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc