Releases
v1.2.0
rcan-py v1.2.0 — RCAN v2.2 ML-DSA-65 hybrid signing
Compare
Sorry, something went wrong.
No results found
What's New
MLDSAKeyPair — ML-DSA-65 key generation, sign, verify, save/load (NIST FIPS 204)
Hybrid signing — sign_message(msg, ed_kp, pq_keypair=pq_kp) adds both Ed25519 (sig) and ML-DSA-65 (pq_sig) signatures
Hybrid verify — verify_message(msg, trusted, pq_trusted_keys=[...]) checks both; require_pq=True enforces ML-DSA presence (post-2028 mode)
RCANMessage.pq_sig — new optional field (dict), serialised/deserialised transparently
PQ_HYBRID_SIGNING feature flag in SUPPORTED_FEATURES
[pq] extra — pip install 'rcan[pq]' pulls in dilithium-py
593 tests (was 571, +22 PQ signing tests)
Q-Day 2029 Timeline
2026–2028: Hybrid mode — Ed25519 + ML-DSA-65 in every signed message
2028: ML-DSA primary, Ed25519 verify-only
2029: Ed25519 sunset — castor migrate --crypto rotates all keys
References
You can’t perform that action at this time.