Orion 0.18 - Post-quantum (ML-KEM, ML-DSA, X-Wing) support and large API refinements

GitHub: GitHub - orion-rs/orion: Usable, easy and safe pure-Rust crypto · GitHub
Crates: crates.io: Rust Package Registry

It's been, if not a couple years, since I've last posted an update but I figured the amount of changes since the last breaking change justify it. Orion is a cryptography library written in pure Rust. It aims to provide easy and usable crypto while trying to minimize the use of unsafe code.

Most of the public API prior to 0.18 was based/designed on Rust editions dating back to 2018 and this breaking change moves away from this. It's a rework of the distinct types, moving from macro-only to two generically defined structs, with concrete marker types.

Non-exhaustive highlights of what has been added:

  • ML-KEM, ML-DSA and X-Wing.
    • Orion has historically not supported signature schemes up until now.
  • Argon2id, moving the high-level/non-hazardous API to this (was Argon2i before).
  • Scrypt.
  • HPKE, specifically also suites combining ChaCha20-Poly1305 w. X-Wing.
    • This has replaced the 0.17 orion::kex which was libsodium-based X25519, making the high-level API a PQ/T hybrid construction under orion::hpke.
  • BLAKE3.

A huge thanks to the contributors that brought BLAKE3, Scrypt and others with a lot of other improvements!