Expand description
§RustCrypto: ML-KEM
Pure Rust implementation of X-Wing, a general-purpose post-quantum/traditional hybrid key encapsulation mechanism (PQ/T KEM) built on X25519 and ML-KEM-768. Using the crates x25519_dalek and ml-kem.
Current implementation matches the draft RFC version 04.
The original paper: X-Wing The Hybrid KEM You’ve Been Looking For
§About
§⚠️ Security Warning
The implementation contained in this crate has never been independently audited!
USE AT YOUR OWN RISK!
§Minimum Supported Rust Version
This crate requires Rust 1.81 at a minimum.
We may change the MSRV in the future, but it will be accompanied by a minor version bump.
§License
Licensed under either of:
at your option.
§Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
§Usage
This crate implements the X-Wing Key Encapsulation Method (X-Wing-KEM) algorithm. X-Wing-KEM is a KEM in the sense that it creates an (decapsulation key, encapsulation key) pair, such that anyone can use the encapsulation key to establish a shared key with the holder of the decapsulation key. X-Wing-KEM is a general-purpose hybrid post-quantum KEM, combining x25519 and ML-KEM-768.
let mut rng = rand::thread_rng();
let (sk, pk) = x_wing::generate_key_pair(&mut rng);
let (ct, ss_sender) = pk.encapsulate(&mut rng).unwrap();
let ss_receiver = sk.decapsulate(&ct).unwrap();
assert_eq!(ss_sender, ss_receiver);
Structs§
- X-Wing ciphertext.
- X-Wing decapsulation key or private key.
- X-Wing encapsulation or public key.
Constants§
- Size in bytes of the
Ciphertext
. - Size in bytes of the
DecapsulationKey
. - Size in bytes of the
EncapsulationKey
.
Functions§
- Generate a X-Wing key pair using the provided rng.
- generate_
key_ pair_ from_ os_ rng getrandom
Generate a X-Wing key pair usingOsRng
.
Type Aliases§
- Shared secret key.