Highlights
Cryptographic Signature Forgery: 2 prior fixes. Scrutinize any change in this area.
dilithium/src/ml_dsa_87.rs: most-fixed (2 issues). Treat as high-risk during review.
5 high-severity fixes in this history; regressions here are high-impact.
Recurring patterns
The bug types that recur here, drawn from past fixes, not open vulnerabilities.
Cryptographic Signature Forgery: All-zero t1 public keys were accepted on multiple key import/verification paths, allowing signature forgery without a secret key. Fixes in two commits reject this degenerate key in public_key_from_secret, PublicKey::from_bytes, and sign::verify, but other import paths may still miss the check.
Timing Side-Channel (Secret-Dependent Branch/Division): Multiple secret-dependent divisions and branches in Dilithium signing (rej_eta, check_norm, make_hint, pack_sig) could leak key material via timing. The fix replaced them with constant-time operations, but similar patterns may exist in other signing/verification functions.
Auth Bypass: ResharingCertificate::verify accepted empty/truncated participant lists, letting unsigned certificates pass. The fix binds the committee into the hash and requires exact key map match, but other certificate verification paths may still be lax.