Crate x_wing

Source
Expand description

§RustCrypto: X-Wing 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. Built on the ml-kem and x25519-dalek crates.

Current implementation matches the draft RFC version 06.

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.

use kem::{Decapsulate, Encapsulate};

let mut rng = &mut rand::rngs::OsRng;
let (sk, pk) = x_wing::generate_key_pair(rng);
let (ct, ss_sender) = pk.encapsulate(rng).unwrap();
let ss_receiver = sk.decapsulate(&ct).unwrap();
assert_eq!(ss_sender, ss_receiver);

Structs§

Ciphertext
X-Wing ciphertext.
DecapsulationKey
X-Wing decapsulation key or private key.
EncapsulationKey
X-Wing encapsulation or public key.

Constants§

CIPHERTEXT_SIZE
Size in bytes of the Ciphertext.
DECAPSULATION_KEY_SIZE
Size in bytes of the DecapsulationKey.
ENCAPSULATION_KEY_SIZE
Size in bytes of the EncapsulationKey.

Functions§

generate_key_pair
Generate a X-Wing key pair using the provided rng.
generate_key_pair_from_os_rnggetrandom
Generate a X-Wing key pair using OsRng.

Type Aliases§

SharedSecret
Shared secret key.