Crate x_wing

source
Expand description

§RustCrypto: ML-KEM

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

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

Documentation

§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§

Constants§

Functions§

Type Aliases§