@hackage / quantex

NIST post-quantum cryptography: ML-KEM, ML-DSA, SLH-DSA, X-Wing

Latest0.1.0.0

Changelog

Changelog

All notable changes to quantex are recorded here. The format follows Keep a Changelog; versions follow the Haskell PVP.

0.1.0.0 — unreleased

First public release. Pre-release quality: the API is under construction and may change without a major bump until 1.0.

Added
  • ML-KEM (FIPS 203) parameter sets 512, 768 and 1024, over vendored mlkem-native.
  • ML-DSA (FIPS 204) parameter sets 44, 65 and 87, over vendored mldsa-native, with pure and prehashed (HashML-DSA) signing.
  • SLH-DSA (FIPS 205), all twelve parameter sets, over vendored slhdsa-c, with pure and prehashed (HashSLH-DSA) signing.
  • X-Wing hybrid KEM (draft-connolly-cfrg-xwing-kem-10), combining ML-KEM-768 with X25519 from vendored Monocypher.
  • Phantom-typed PublicKey, SecretKey, Ciphertext, Signature, Seed, SharedSecret, so scheme mismatches are compile errors.
  • Pure Either QuantexError API with a deterministic seed-based core and IO wrappers that draw from a minimal platform entropy shim.
  • Zeroizing, page-locked SecretBytes storage for secret keys, seeds, signing randomness and shared secrets, with constant-time equality and no Show.
  • withSecretKey and withSharedSecret, which lend the raw zeroizing buffer to a callback so a KDF or AEAD key never materializes an unzeroized copy.
  • Quantex.Codec: raw encode/decode for public material, with strict length validation plus the FIPS 203 §7.2 modulus and §7.3 hash-consistency checks on ML-KEM and X-Wing key import.
  • Known-answer tests against NIST ACVP vectors and the X-Wing draft vectors, with an extended offline suite gated behind QUANTEX_EXTENDED_TESTS.